Browse Source

更新订单取消消费分未退回

Yangzw 5 months ago
parent
commit
74c837d70c

+ 2 - 0
feifan-module-distri/feifan-module-distri-api/src/main/java/cn/newfeifan/mall/module/distri/enums/ConsumptionEnum.java

@@ -15,6 +15,8 @@ public enum ConsumptionEnum {
     PAY_ORDER(6,"购物支付"),
     REFUND_ORDER(7,"退回退款返回"),
     TOP_UP_GET(8,"充值获得"),
+    CANCEL_ORDER_BACK_CONSUMPTION_POINTS(9,"手动取消订单退回消费分"),
+    ORDER_CANCEL_BY_SYSTEM_REFUND_INTEGRAL(10,"支付超时退回消费分"),
     ;
 
     private final Integer type;

+ 11 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/integral/IntegralService.java

@@ -7,6 +7,7 @@ import cn.newfeifan.mall.module.distri.controller.admin.integral.vo.*;
 import cn.newfeifan.mall.module.distri.dal.dataobject.integral.IntegralDO;
 import cn.newfeifan.mall.framework.common.pojo.PageResult;
 import cn.newfeifan.mall.module.distri.enums.CaclEnum;
+import cn.newfeifan.mall.module.distri.enums.ConsumptionEnum;
 
 /**
  * 推荐用户积分 Service 接口
@@ -139,4 +140,14 @@ public interface IntegralService {
     );
 
     void calcIntegral();
+
+    /**
+     * 修改用户消费积分
+     * @param userId 用户id
+     * @param consumptionEnum 类型
+     * @param consumptionPoints 消费分
+     * @param orderId 订单id
+     * @param orderNum 订单号
+     */
+    void updateUserConsumptionPoints(Long userId, ConsumptionEnum consumptionEnum, Long consumptionPoints, Long orderId, String orderNum);
 }

+ 25 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/integral/IntegralServiceImpl.java

@@ -1,6 +1,7 @@
 package cn.newfeifan.mall.module.distri.service.integral;
 
 import cn.newfeifan.mall.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.newfeifan.mall.module.distri.controller.admin.consumptionchangelog.vo.ConsumptionChangeLogSaveReqVO;
 import cn.newfeifan.mall.module.distri.controller.admin.ptprofit.vo.PtProfitSaveReqVO;
 import cn.newfeifan.mall.module.distri.controller.admin.ptprofitlog.vo.PtProfitLogSaveReqVO;
 import cn.newfeifan.mall.module.distri.dal.dataobject.ptprofit.PtProfitDO;
@@ -8,6 +9,8 @@ import cn.newfeifan.mall.module.distri.dal.dataobject.ptprofitlog.PtProfitLogDO;
 import cn.newfeifan.mall.module.distri.dal.mysql.ptprofit.PtProfitMapper;
 import cn.newfeifan.mall.module.distri.dal.mysql.ptprofitlog.PtProfitLogMapper;
 import cn.newfeifan.mall.module.distri.enums.CaclEnum;
+import cn.newfeifan.mall.module.distri.enums.ConsumptionEnum;
+import cn.newfeifan.mall.module.distri.service.consumptionchangelog.ConsumptionChangeLogService;
 import cn.newfeifan.mall.module.distri.service.ptprofit.PtProfitService;
 import cn.newfeifan.mall.module.distri.service.ptprofitlog.PtProfitLogService;
 import cn.newfeifan.mall.module.distri.service.sharepath.SharePathService;
@@ -45,6 +48,8 @@ public class IntegralServiceImpl implements IntegralService {
 
     @Resource
     private IntegralMapper integralMapper;
+    @Resource
+    private ConsumptionChangeLogService consumptionChangeLogService;
 
     @Resource
     private PtProfitLogMapper ptProfitLogMapper;
@@ -338,4 +343,24 @@ public class IntegralServiceImpl implements IntegralService {
         }
     }
 
+    @Override
+    public void updateUserConsumptionPoints(Long userId, ConsumptionEnum consumptionEnum, Long consumptionPoints, Long orderId, String orderNum) {
+        IntegralDO integralDO = integralMapper.selectOne(IntegralDO::getUserId, userId);
+
+        // 修改用户消费积分
+        integralDO.setConsumptionPoints(integralDO.getConsumptionPoints() + consumptionPoints);
+        integralMapper.updateById(integralDO);
+
+        consumptionChangeLogService.createConsumptionChangeLog(
+                ConsumptionChangeLogSaveReqVO.builder()
+                        .userId(userId)
+                        .generateUserId(userId)
+                        .consumptionStatus(consumptionEnum.getType())
+                        .consumptionPoints(consumptionPoints)
+                        .afterConsumptionPoints(integralDO.getConsumptionPoints())
+                        .orderId(orderId)
+                        .orderNo(orderNum)
+                        .build());
+    }
+
 }

+ 1 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/sharepath/SharePathServiceImpl.java

@@ -246,6 +246,7 @@ public class SharePathServiceImpl implements SharePathService {
             memberUserRespVO.setCurrentQuota(integral.getCurrentQuota());
             OrderPercentageDO orderPercentageDO = orderPercentageService.queryStatus();
             memberUserRespVO.setHighQuotaTotal(integral.getHighQuotaTotal() + new BigDecimal(orderPercentageDO.getBaseMaxQuota()).longValue());
+            memberUserRespVO.setConsumptionPoints(integral.getConsumptionPoints());
         }
 
         SocialStatusDO socialStatus = socialStatusService.getSocialStatus(duser.getSocialStatusId());

+ 4 - 0
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/service/order/TradeOrderUpdateServiceImpl.java

@@ -21,6 +21,7 @@ import cn.newfeifan.mall.module.distri.dal.dataobject.ptprofit.PtProfitDO;
 import cn.newfeifan.mall.module.distri.dal.dataobject.sharepath.SharePathDO;
 import cn.newfeifan.mall.module.distri.dal.mysql.orderpercentage.OrderPercentageMapper;
 import cn.newfeifan.mall.module.distri.enums.CaclEnum;
+import cn.newfeifan.mall.module.distri.enums.ConsumptionEnum;
 import cn.newfeifan.mall.module.distri.enums.SocialStatusEnum;
 import cn.newfeifan.mall.module.distri.service.duser.DuserService;
 import cn.newfeifan.mall.module.distri.service.integral.IntegralService;
@@ -689,6 +690,9 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
                 if (payIntegral > 0) {
                     integralService.updateUserIntegral(userId, CaclEnum.ORDER_CANCEL_BY_SYSTEM_REFUND_INTEGRAL, payIntegral, tradeOrderId, orderNum);
                 }
+                if(order.getPayConsumptionPoints() > 0){
+                    integralService.updateUserConsumptionPoints(userId, ConsumptionEnum.ORDER_CANCEL_BY_SYSTEM_REFUND_INTEGRAL, order.getPayConsumptionPoints(), tradeOrderId, orderNum);
+                }
 
                 count++;
             } catch (Throwable e) {

+ 3 - 0
feifan-module-member/feifan-module-member-biz/src/main/java/cn/newfeifan/mall/module/member/controller/admin/user/vo/MemberUserRespVO.java

@@ -121,4 +121,7 @@ public class MemberUserRespVO extends MemberUserBaseVO {
 
     @Schema(description = "是否首次充值")
     private Boolean isFirst;
+
+    @Schema(description = "当前消费分")
+    private Long consumptionPoints;
 }