Ver código fonte

商品,订单 等信息同步 优化

liusz 6 meses atrás
pai
commit
5024726138

+ 7 - 0
task/src/main/java/com/poyee/dto/order/MinePromotionOrderReq.java

@@ -2,8 +2,10 @@ package com.poyee.dto.order;
 
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.poyee.annotation.db.LeftJoin;
 import com.poyee.annotation.db.Where;
 import com.poyee.base.dto.BaseReq;
+import com.poyee.dto.task.PromotionTaskDto;
 import com.poyee.enums.FieldOperator;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -22,6 +24,11 @@ public class MinePromotionOrderReq extends BaseReq {
     @TableField("user_id")
     private Long userId;
 
+    @ApiModelProperty(value = "任务id",hidden = true)
+    @TableField("task_id")
+    @LeftJoin(table = PromotionTaskDto.class, fieldName = "id", leftFieldName = "task_id")
+    public Long taskId;
+
     @ApiModelProperty(value = "状态:0 待付款,1 已付款,2 已收货,3 已结算,4 已失效", hidden = true)
     @TableField(value = "status",exist = false)
     @Where( table = MinePromotionOrderReq.class, field = "status", operator = FieldOperator.NE)

+ 1 - 1
task/src/main/java/com/poyee/dto/sync/SyncOrderInfoCreateReq.java

@@ -61,7 +61,7 @@ public class SyncOrderInfoCreateReq extends BaseReq {
     private Date createTime;
 
     @ApiModelProperty(value = "支付时间",required = true)
-    @NotNull(message = "支付时间不能为空")
+//    @NotNull(message = "支付时间不能为空")
     private Date payTime;
 
     @ApiModelProperty(value = "是否使用优惠券:默认 false 未使用",example = "false")

+ 1 - 1
task/src/main/java/com/poyee/dto/sync/SyncOrderInfoReq.java

@@ -23,7 +23,7 @@ public class SyncOrderInfoReq {
 
     @ApiModelProperty(value = "订单id",example = "123456",required = true)
     @NotBlank(message = "订单id不能为空")
-    private String orderId;
+    private String productOrderId;
 
     @ApiModelProperty(value = "平台订单状态:100 待支付, 101 已支付 、103 待发货、104 已发货 301 订单完成、302 订单已结束 204 退款中、205 退款完成、206 退款失败",example = "1",required = true)
     @NotNull(message = "平台订单状态不能为空")

+ 3 - 0
task/src/main/java/com/poyee/dto/sync/SyncProductInfoReq.java

@@ -16,6 +16,9 @@ public class SyncProductInfoReq {
     @ApiModelProperty(value = "平台appid",example = "39640b8654724017b58d3a30c18b8b6d",required = true)
     @NotBlank(message = "appid不能为空")
     private String appid;
+    @ApiModelProperty(value = "商品类型(product: 普通商品,group: 拼团商品)",required = true)
+    @NotBlank(message = "商品类型不能为空")
+    private String type;
     @ApiModelProperty(value = "商品id",required = true)
     @NotBlank(message = "商品id不能为空")
     private String productId;

+ 1 - 0
task/src/main/java/com/poyee/enums/ProductOrderStatusEnums.java

@@ -21,6 +21,7 @@ public enum ProductOrderStatusEnums {
     SHIPED(104,"已发货",1 ,"已付款"),
     ORDER_COMPLETE(301,"订单完成" , 2, "已收货"),
     ORDER_END(302,"订单已结束" , 2, "已收货"),
+    TIME_OUT(201,"超时" , 4, "已失效"),
     REFUND_ING(204,"退款中" , 1, "已付款"),
     REFUND_SUCCESS(205,"退款完成" , 4, "已失效"),
     REFUND_FAIL(206,"退款失败", 1, "已付款");

+ 10 - 8
task/src/main/java/com/poyee/enums/ProductStatusEnums.java

@@ -7,13 +7,15 @@ import org.apache.commons.lang3.StringUtils;
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Objects;
 
 @Getter
 public enum ProductStatusEnums {
-    //available: 可用, unavailable: 不可用, sold_out: 售罄,lock: 下架
+    //available: 可用, unavailable: 不可用, sold_out: 售罄,finished 售罄, paymented 已打款, lock: 下架
     AVAILABLE(201, "available","可用", "进行中"),
     UNAVAILABLE(202, "unavailable", "不可用","团卡超时"),
-    SOLD_OUT(301, "sold_out","售罄", "团卡完成+待申请打款or待打款"),
+    SOLD_OUT(203, "sold_out","售罄", "售卖完成"),
+    FINISHED(301, "finished","售罄", "团卡完成+待申请打款or待打款"),
     //已打款
     PAYMENTED(301, "paymented","已打款","团卡完成+部分打款or完成打款"),
     LOCK(999, "lock","下架","锁定/下架")
@@ -35,14 +37,14 @@ public enum ProductStatusEnums {
     }
 
     /**
-     * 根据message获取code
-     * @param message
+     * 根据status获取code
+     * @param status
      * @return
      */
-    public static Integer getCodeByStatus(String message) {
-        for (ProductStatusEnums status : ProductStatusEnums.values()) {
-            if (status.getMessage().equals(message)) {
-                return status.getCode();
+    public static Integer getCodeByStatus(String status) {
+        for (ProductStatusEnums statusEnum : ProductStatusEnums.values()) {
+            if (Objects.equals(statusEnum.getStatus(), status)) {
+                return statusEnum.getCode();
             }
         }
         throw new RuntimeException("商品状态非法");

+ 31 - 6
task/src/main/java/com/poyee/service/impl/InfoSyncServiceImpl.java

@@ -66,10 +66,19 @@ public class InfoSyncServiceImpl implements InfoSyncService {
         taskReq.setProductStatus(req.getProductStatus());
         taskReq.setInStatus("P,R");
         boolean isPayment = false;
+        boolean isTimeOut = false;
         switch (req.getProductStatus()) {
+            case "unavailable":
+                //拼团超时  更新订单状态为失效状态
+                taskReq.setStatus("E");
+                isTimeOut = true;
+                break;
             case "sold_out": //售罄
                 taskReq.setStatus("E");
                 break;
+            case "finished"://售罄-已发货
+                taskReq.setStatus("E");
+                break;
             case "paymented": //结算
                 taskReq.setStatus("E");
                 isPayment = true;
@@ -78,6 +87,7 @@ public class InfoSyncServiceImpl implements InfoSyncService {
                 taskReq.setStatus("D");
                 break;
         }
+        //更新推广任务状态
         Result result = promotionTaskService.updateSyncInfo(taskReq);
         //更新推广任务订单任务状态
         if(result.isSuccess()){
@@ -87,9 +97,8 @@ public class InfoSyncServiceImpl implements InfoSyncService {
             int i = promotionOrderService.updateByTask(orderReq);
             log.info("推广订单信息同步-更新, 更新订单的产品状态结果: {}", i);
             if(isPayment){
-                //如果是结算状态 且订单状态为 已收货 则 更新推广订单状态
+                //如果是结算状态 且订单状态为 已收货 则 更新推广订单状态 [如果是拼团 则直接订单状态改为结算]
                 orderReq.setStatus(3);//已结算
-                orderReq.setWhereStatus(2);//已收货 -> 已结算
                 if(Objects.equals(promotionTaskDtos.get(0).getType(),ProductTypeEnums.GROUP.getType())) {
                     //区分拼团 和商品单独执行更新sql
                     //拼团
@@ -97,6 +106,7 @@ public class InfoSyncServiceImpl implements InfoSyncService {
                     int ig = promotionOrderService.updateByTask(orderReq);
                     log.info("推广订单信息同步-更新, 更新拼团订单产品状态结果: {}", ig);
                 }else if(Objects.equals(promotionTaskDtos.get(0).getType(),ProductTypeEnums.SHOP.getType())){
+                    orderReq.setWhereStatus(2);//已收货 -> 已结算
                     //商品
                     orderReq.setWhereType(ProductTypeEnums.SHOP.getType());
                     //计算当前时间 前5个工作日的时间
@@ -111,6 +121,21 @@ public class InfoSyncServiceImpl implements InfoSyncService {
                 }else{
                     return Result.error(-1, "推广任务类型异常:【"+promotionTaskDtos.get(0).getType()+"】");
                 }
+            }else if(isTimeOut){ //如果是超时 则 更新推广订单状态
+                //如果是超时状态 则 更新推广订单状态 [如果是拼团 则直接订单状态改为已失效]
+                orderReq.setStatus(4);//已失效
+                if(Objects.equals(promotionTaskDtos.get(0).getType(),ProductTypeEnums.GROUP.getType())) {
+                    //区分拼团 和商品单独执行更新sql
+                    //拼团
+                    orderReq.setWhereType(ProductTypeEnums.GROUP.getType());
+                }else if(Objects.equals(promotionTaskDtos.get(0).getType(),ProductTypeEnums.SHOP.getType())){
+                    //商品
+                    orderReq.setWhereType(ProductTypeEnums.SHOP.getType());
+                }else{
+                    return Result.error(-1, "推广任务类型异常:【"+promotionTaskDtos.get(0).getType()+"】");
+                }
+                int ig = promotionOrderService.updateByTask(orderReq);
+                log.info("推广订单信息同步-更新, 更新[拼团|商品]订单产品状态结果: {}", ig);
             }
         }
         return result;
@@ -158,7 +183,7 @@ public class InfoSyncServiceImpl implements InfoSyncService {
      */
     @Override
     public Result orderStatus(SyncOrderInfoReq req) {
-        log.info("订单信息状态更新, 订单ID: {}", req.getOrderId());
+        log.info("订单信息状态更新, 订单ID: {}", req.getProductOrderId());
         //检验状态是否非法
         ProductOrderStatusEnums.checkProductOrderStatus(req.getProductOrderStatus());
         //判断状态
@@ -178,10 +203,10 @@ public class InfoSyncServiceImpl implements InfoSyncService {
         //查询订单信息
         PromotionOrderReq orderReq = new PromotionOrderReq();
         orderReq.setAppid(req.getAppid());
-        orderReq.setProductOrderId(req.getOrderId());
+        orderReq.setProductOrderId(req.getProductOrderId());
         List<PromotionOrderDto> orderDtos = promotionOrderService.list(orderReq);
         if(CollectionUtils.isEmpty(orderDtos)){
-            throw new ServiceException(-1, "订单不存在,订单ID:"+req.getOrderId());
+            throw new ServiceException(-1, "订单不存在,订单ID:"+req.getProductOrderId());
         }
         //查询任务信息
         PromotionTaskDto taskDto = promotionTaskService.getById(orderDtos.get(0).getTaskId());
@@ -226,7 +251,7 @@ public class InfoSyncServiceImpl implements InfoSyncService {
         // 更新
         PromotionOrderUpdateReq updateReq = new PromotionOrderUpdateReq();
         updateReq.setAppid(req.getAppid());
-        updateReq.setProductOrderId(req.getOrderId());
+        updateReq.setProductOrderId(req.getProductOrderId());
         updateReq.setProductOrderStatus(req.getProductOrderStatus());
         updateReq.setPayTime(req.getPayTime());
         updateReq.setReceiveTime(req.getReceiveTime());