Prechádzať zdrojové kódy

fix 客服小红书实物订单

zoujiajian 3 rokov pred
rodič
commit
1f376f6ccd

+ 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;
 

+ 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();
+	}
 }