Browse Source

Merge branch 'dev/2024/0822/update-app-Y' of feifan/mall-backend-app into master

更新订单取消消费分未退回
Yangzw 5 months ago
parent
commit
f11f97ae46

+ 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

@@ -5,6 +5,7 @@ import cn.newfeifan.mall.module.distri.controller.app.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;
 import cn.newfeifan.mall.module.distri.enums.SocialStatusUpdateEnum;
 
 /**
@@ -108,6 +109,16 @@ public interface IntegralService {
      */
     void updateUserIntegral(Long userId, CaclEnum caclEnum, Long payIntegral, Long tradeOrderId, String orderNum);
 
+    /**
+     * 修改用户消费积分
+     * @param userId 用户id
+     * @param consumptionEnum 类型
+     * @param consumptionPoints 消费分
+     * @param orderId 订单id
+     * @param orderNum 订单号
+     */
+    void updateUserConsumptionPoints(Long userId, ConsumptionEnum consumptionEnum, Long consumptionPoints, Long orderId, String orderNum);
+
     /**
      * 佣金转化
      * @param quota 佣金

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

@@ -213,6 +213,26 @@ public class IntegralServiceImpl implements IntegralService {
         ptProfitLogService.addMessage(userId,userId,caclEnum,payIntegral,integralDO.getCurrentQuota(),0L,0L,null,tradeOrderId,orderNum);
     }
 
+    @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());
+    }
+
     @Override
     public Boolean quotaTransition(Long quota) {
         Long userId = getLoginUserId();
@@ -269,6 +289,8 @@ public class IntegralServiceImpl implements IntegralService {
                         .consumptionStatus(ConsumptionEnum.PAY_ORDER.getType())
                         .consumptionPoints(-amount)
                         .afterConsumptionPoints(integralDO.getConsumptionPoints())
+                        .orderId(tradeOrderId)
+                        .orderNo(orderNum)
                         .build());
 
         return true;

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

@@ -24,6 +24,7 @@ import cn.newfeifan.mall.module.distri.dal.dataobject.sharepath.SharePathDO;
 import cn.newfeifan.mall.module.distri.dal.mysql.integral.IntegralMapper;
 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;
@@ -1976,6 +1977,10 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
         if (payIntegral > 0) {
             integralService.updateUserIntegral(userId, userId, CaclEnum.ORDER_CANCEL_BY_USER_REFUND_INTEGRAL, payIntegral, 0L, tradeOrderId, orderNum);
         }
+
+        if(order.getPayConsumptionPoints() > 0){
+            integralService.updateUserConsumptionPoints(userId, ConsumptionEnum.CANCEL_ORDER_BACK_CONSUMPTION_POINTS, order.getPayConsumptionPoints(), tradeOrderId, orderNum);
+        }
     }
 
     /**
@@ -2009,6 +2014,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) {