Browse Source

修改超时订单未退回积分

Yangzw 8 months ago
parent
commit
786701b708

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

@@ -100,4 +100,14 @@ public interface IntegralService {
      * 初始化累计积分峰值
      */
     void initializeIntegralHighQuotaTotal();
+
+    /**
+     * 修改用户积分
+     * @param userId 用户ID
+     * @param caclEnum 变化类型
+     * @param payIntegral 变化积分
+     * @param tradeOrderId 订单ID
+     * @param orderNum 订单号
+     */
+    void updateUserIntegral(Long userId, CaclEnum caclEnum, Long payIntegral, Long tradeOrderId, String orderNum);
 }

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

@@ -4,6 +4,7 @@ import cn.newfeifan.mall.framework.mybatis.core.query.LambdaQueryWrapperX;
 import cn.newfeifan.mall.module.distri.dal.dataobject.ptprofitlog.PtProfitLogDO;
 import cn.newfeifan.mall.module.distri.dal.mysql.ptprofitlog.PtProfitLogMapper;
 import cn.newfeifan.mall.module.distri.enums.CaclEnum;
+import cn.newfeifan.mall.module.distri.service.ptprofitlog.PtProfitLogService;
 import cn.newfeifan.mall.module.distri.service.sharepath.SharePathService;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import org.springframework.context.annotation.Lazy;
@@ -46,6 +47,9 @@ public class IntegralServiceImpl implements IntegralService {
     @Lazy
     private SharePathService sharePathService;
 
+    @Resource
+    private PtProfitLogService ptProfitLogService;
+
     @Override
     public Long createIntegral(IntegralSaveReqVO createReqVO) {
         // 插入
@@ -183,4 +187,15 @@ public class IntegralServiceImpl implements IntegralService {
         }
     }
 
+    @Override
+    public void updateUserIntegral(Long userId, CaclEnum caclEnum, Long payIntegral, Long tradeOrderId, String orderNum) {
+        //退还订单支付过期积分
+        IntegralDO integralDO = integralMapper.selectOne(new LambdaQueryWrapper<IntegralDO>().eq(IntegralDO::getUserId, userId));
+        integralDO.setCurrentQuota(integralDO.getCurrentQuota() + payIntegral);
+
+        integralMapper.updateById(integralDO);
+
+        ptProfitLogService.addMessage(userId,userId,caclEnum,payIntegral,integralDO.getCurrentQuota(),0L,0L,null,tradeOrderId,orderNum);
+    }
+
 }

+ 9 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/ptprofitlog/PtProfitLogService.java

@@ -79,4 +79,13 @@ public interface PtProfitLogService {
 
     String getTotalLog(List<Long> sonsId);
 
+    //记录用户的积分变动日志
+    void addMessage(Long generateUserId,//导致产生积分变动的用户ID
+                    Long userId, //实际变动积分的用户ID
+                    CaclEnum caclEnum, Long amount,
+                    Long afterAmount, Long freezeAmount,
+                    Long afterFreezeAmount, String percentTemplate,
+                    Long tradeOrderId,
+                    String OrderNum
+    );
 }

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

@@ -184,4 +184,26 @@ public class PtProfitLogServiceImpl implements PtProfitLogService {
         return sum + "";
     }
 
+    @Override
+    public void addMessage(Long generateUserId,//导致产生积分变动的用户ID
+                           Long userId, //实际变动积分的用户ID
+                           CaclEnum caclEnum, Long amount, Long afterAmount,
+                           Long freezeAmount, Long afterFreezeAmount,
+                           String percentTemplate,
+                           Long tradeOrderId,
+                           String OrderNum
+    ) {
+        PtProfitLogSaveReqVO ptProfitLog = PtProfitLogSaveReqVO.builder()
+                .afterAmount(afterAmount)
+                .amount(amount)
+                .percentTemplate(percentTemplate)
+                .userId(userId)
+                .generateUserId(generateUserId)
+                .profitStatus(caclEnum.getType()).orderId(tradeOrderId).orderNo(OrderNum)
+                .freezeAmount(freezeAmount).afterFreezeAmount(afterFreezeAmount)
+                .build();
+        ptProfitLogMapper.insert(BeanUtils.toBean(ptProfitLog, PtProfitLogDO.class));
+
+    }
+
 }

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

@@ -640,6 +640,17 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
         for (TradeOrderDO order : orders) {
             try {
                 getSelf().cancelOrderBySystem(order);
+
+                //退回订单已支付的积分 add by Ben
+                Long payIntegral = order.getPayIntegral().longValue();//每个订单使用的积分
+                Long tradeOrderId = order.getId();
+                String orderNum = order.getNo();
+                Long userId = order.getUserId();
+                //如果订单有使用积分,则退回积分
+                if (payIntegral > 0) {
+                    integralService.updateUserIntegral(userId,CaclEnum.ORDER_CANCEL_BY_SYSTEM_REFUND_INTEGRAL,payIntegral,tradeOrderId,orderNum);
+                }
+
                 count++;
             } catch (Throwable e) {
                 log.error("[cancelOrderBySystem][order({}) 过期订单异常]", order.getId(), e);