فهرست منبع

Merge branch 'order_redbook'

zoujiajian 3 سال پیش
والد
کامیت
feab9d891b

+ 1 - 1
netflix-dao/src/main/java/com/cyksj/model/entity/CustomerServiceEveryMonthDetail.java

@@ -27,7 +27,7 @@ public class CustomerServiceEveryMonthDetail extends BaseEntity{
 	/**
 	 * 订单数量
 	 */
-	private Integer numOfOrder;
+	private BigDecimal numOfOrder;
 
 	/**
 	 * 金额

+ 6 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/OrderDon.java

@@ -101,6 +101,12 @@ public class OrderDon extends BaseEntity implements Serializable {
      */
     private Source source;
 
+    /**
+     * 订单标注来源
+     * 用于客服标注订单来源
+     */
+    private String labelSource;
+
     /**
      * 支付时间
      */

+ 7 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/RealGoodsOrderHandle.java

@@ -61,6 +61,13 @@ public class RealGoodsOrderHandle{
 	@TableField(exist = false)
 	private BigDecimal money;
 
+	/**
+	 * 订单标注来源
+	 * 用于客服标注订单来源
+	 */
+	@DbField("rh.label_source")
+	private String labelSource;
+
 	/**
 	 * 创建时间
 	 */

+ 3 - 0
netflix-dao/src/main/java/com/cyksj/model/manage/views/OrderDonView.java

@@ -137,6 +137,9 @@ public class OrderDonView {
     @DbField("o.source")
     private OrderDon.Source source;
 
+    @DbField("o.label_source")
+    private String labelSource;
+
     @DbField("o.num")
     private Integer num;
 

+ 30 - 0
netflix-dao/src/main/java/com/cyksj/model/views/NewRedBookUsersView.java

@@ -0,0 +1,30 @@
+package com.cyksj.model.views;
+
+import com.ejlchina.searcher.bean.DbField;
+import com.ejlchina.searcher.bean.SearchBean;
+import lombok.Getter;
+import lombok.Setter;
+
+/*
+ *项目名: netflix
+ *文件名: NewRedBookUsersView
+ *创建者: JavaZou
+ *创建时间:2023/5/31 14:35
+ */
+@Getter
+@Setter
+@SearchBean(tables = "statistics_user_data",
+		groupBy = "date_format(statistics_date,'%Y-%m-%d')")
+public class NewRedBookUsersView {
+	/**
+	 * 企业新增用户数
+	 */
+	@DbField("sum(num_of_red_book_user)")
+	private Integer numOfUser;
+
+	/**
+	 * 日期
+	 */
+	@DbField("date_format(statistics_date,'%Y-%m-%d')")
+	private String date;
+}

+ 5 - 0
netflix-dao/src/main/java/com/cyksj/model/views/NewUserStatisticsView.java

@@ -37,4 +37,9 @@ public class NewUserStatisticsView {
 	 * 企业微信新增用户数
 	 */
 	private List<NewCorpUserView> newCorpUserData;
+
+	/**
+	 * 小红书新增用户数
+	 */
+	private List<NewRedBookUsersView> newRedBookUserData;
 }

+ 11 - 2
netflix-service/src/main/java/com/cyksj/task/OrderCustomerHandleScheduler.java

@@ -13,6 +13,7 @@ import com.cyksj.model.entity.StatisticsCustomerServiceEveryMonth;
 import com.ejlchina.searcher.BeanSearcher;
 import com.ejlchina.searcher.param.Operator;
 import com.ejlchina.searcher.util.MapUtils;
+import com.google.common.util.concurrent.AtomicDouble;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.scheduling.annotation.Scheduled;
@@ -80,7 +81,15 @@ public class OrderCustomerHandleScheduler {
 			record.setType(type);
 			record.setCustomerServiceName(serviceName);
 			record.setStatisticsId(statisticsId);
-			record.setNumOfOrder(handlers.size());
+			AtomicDouble numOfOrder = new AtomicDouble(0);
+			handlers.forEach(handler -> {
+				if ("red_book".equals(handler.getLabelSource())) {
+					numOfOrder.addAndGet(1.5);
+					return;
+				}
+				numOfOrder.addAndGet(1);
+			});
+			record.setNumOfOrder(BigDecimal.valueOf(numOfOrder.doubleValue()));
 			Optional<BigDecimal> money = handlers.stream().map(RealGoodsOrderHandle::getMoney).reduce(BigDecimal::add);
 			record.setMoney(money.isPresent() ? money.get() : BigDecimal.ZERO);
 			detailMapper.insert(record);
@@ -93,7 +102,7 @@ public class OrderCustomerHandleScheduler {
 			record.setType(type);
 			record.setCustomerServiceName(serviceName);
 			record.setStatisticsId(statisticsId);
-			record.setNumOfOrder(renewOrderRecords.size());
+			record.setNumOfOrder(BigDecimal.valueOf(renewOrderRecords.size()));
 			record.setMoney(BigDecimal.ZERO);
 			detailMapper.insert(record);
 		}

+ 18 - 0
netflix-web/src/main/java/com/cyksj/web/controller/manage/CmsOrderController.java

@@ -414,4 +414,22 @@ public class CmsOrderController {
 		SearchResult<UserKickOutView> search = beanSearcher.search(UserKickOutView.class, MapUtils.flatBuilder(request.getParameterMap()).build());
 		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
 	}
+
+	/**
+	 * 客服修改订单来源
+	 */
+	@PutMapping("/update/order/source")
+	public Result<String> updateOrderSource(@RequestBody OrderDon orderDon) {
+		Long id = orderDon.getId();
+		String labelSource = orderDon.getLabelSource();
+		if (labelSource == null) labelSource = StrUtil.EMPTY;
+		cmsOrderDonService.update(null, Wrappers.lambdaUpdate(OrderDon.class)
+				.set(OrderDon::getLabelSource, labelSource)
+				.eq(OrderDon::getId, id));
+
+		realGoodsOrderHandleMapper.update(null, Wrappers.lambdaUpdate(RealGoodsOrderHandle.class)
+				.set(RealGoodsOrderHandle::getLabelSource, labelSource)
+				.eq(RealGoodsOrderHandle::getOrderId, id));
+		return GatewayResponse.SUCCESS.newBuilder().toResult();
+	}
 }

+ 6 - 4
netflix-web/src/main/java/com/cyksj/web/controller/manage/statistics/StatisticsDataController.java

@@ -221,8 +221,8 @@ public class StatisticsDataController {
 		statisticsUserDataView.setNumOfCorpAccountUser(accounts.intValue());
 
 		statisticsUserDataView.setUserData(beanSearcher.search(StatisticsUserData.class, MapUtils.flatBuilder(request.getParameterMap()).build()));
-		StatisticsUserData statisticsUserData = beanSearcher.searchFirst(StatisticsUserData.class, MapUtils.builder().field(StatisticsUserData::getStatisticsDate, thisZero.toDateStr()).onlySelect(StatisticsUserData::getNumOfRedBookUser).build());
-		Integer numOfRedBookUser = statisticsUserData != null ? statisticsUserData.getNumOfRedBookUser() : 0;
+		Number redBookUsers = beanSearcher.searchSum(StatisticsUserData.class, MapUtils.flatBuilder(request.getParameterMap()).build(), "numOfRedBookUser");
+		Integer numOfRedBookUser = redBookUsers.intValue();
 		statisticsUserDataView.setNumOfRedBookUser(numOfRedBookUser);
 		return GatewayResponse.SUCCESS.newBuilder().toResult(statisticsUserDataView);
 	}
@@ -507,6 +507,8 @@ public class StatisticsDataController {
 		List<NewCorpUserView> newCorpUserViews = beanSearcher.searchAll(NewCorpUserView.class, MapUtils.builder().field(NewCorpUserView::getDate, first, end).op(Operator.Between).build());
 		newUserStatisticsView.setNewCorpUserData(newCorpUserViews);
 
+		List<NewRedBookUsersView> newRedBookUserViews = beanSearcher.searchAll(NewRedBookUsersView.class, MapUtils.builder().field(NewRedBookUsersView::getDate, first, end).op(Operator.Between).build());
+		newUserStatisticsView.setNewRedBookUserData(newRedBookUserViews);
 		return GatewayResponse.SUCCESS.newBuilder().toResult(newUserStatisticsView);
 	}
 
@@ -515,11 +517,11 @@ public class StatisticsDataController {
 	 */
 	@PutMapping("/update/redBookUsers")
 	public Result<String> updateRedBookUsers(@RequestBody List<RedBookReq> redBooks) {
-		DateTime beginOfDay = DateUtil.beginOfDay(DateTime.now());
+		DateTime endOfDay = DateUtil.beginOfDay(DateTime.now());
 		redBooks.forEach(redBook -> {
 			try {
 				DateTime dateTime = DateUtil.parseDate(redBook.getDate());
-				if (dateTime.isAfter(beginOfDay)) {
+				if (dateTime.isAfter(endOfDay)) {
 					return;
 				}
 				Optional.ofNullable(statisticsUserDataMapper.selectOne(Wrappers.lambdaQuery(StatisticsUserData.class).eq(StatisticsUserData::getStatisticsDate, dateTime).last("limit 1")))