Browse Source

Merge branch 'dev/2024/0806/update-business-Y' of feifan/mall-backend-business into master

更新订单取消消费分未退回
Yangzw 6 months ago
parent
commit
26758f1d96

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

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

@@ -3,6 +3,7 @@ package cn.newfeifan.mall.module.distri.service.integral;
 import cn.newfeifan.mall.module.distri.controller.admin.integral.vo.IntegralSaveReqVO;
 import cn.newfeifan.mall.module.distri.dal.dataobject.integral.IntegralDO;
 import cn.newfeifan.mall.module.distri.enums.CaclEnum;
+import cn.newfeifan.mall.module.distri.enums.ConsumptionEnum;
 
 import javax.validation.Valid;
 
@@ -73,6 +74,16 @@ public interface IntegralService {
                             String orderNum
                                );
 
+    /**
+     * 修改用户积分
+     * @param userId 用户ID
+     * @param caclEnum 变化类型
+     * @param payIntegral 变化积分
+     * @param tradeOrderId 订单ID
+     * @param orderNum 订单号
+     */
+    void updateUserIntegral(Long userId, CaclEnum caclEnum, Long payIntegral, Long tradeOrderId, String orderNum);
+
 //    /**
 //     * 修改用户身价
 //     * @param userId 用户ID
@@ -105,6 +116,16 @@ public interface IntegralService {
      */
     void updateUserConsumptionPoints(Long generateUserId, Long userId, Long payConsumptionPoints, Long tradeOrderId, String tradeOrderNum);
 
+    /**
+     * 修改用户消费积分
+     * @param userId 用户id
+     * @param consumptionEnum 类型
+     * @param consumptionPoints 消费分
+     * @param orderId 订单id
+     * @param orderNum 订单号
+     */
+    void updateUserConsumptionPoints(Long userId, ConsumptionEnum consumptionEnum, Long consumptionPoints, Long orderId, String orderNum);
+
     /**
      * 根据用户ID查询是否有钱包
      * @param descendant 用户id

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

@@ -100,6 +100,17 @@ 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);
+    }
+
     @Override
     public void updateIntegralFreezeHighQuota(Long generateUserId, Long userId, CaclEnum caclEnum, Long totalFreezeHighQuota, Long tradeOrderId, String orderNum) {
         IntegralDO integralDO = integralMapper.selectOne(IntegralDO::getUserId, userId);
@@ -143,6 +154,26 @@ 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());
+    }
+
     @Override
     public IntegralDO selectByUser(Long descendant) {
         return integralMapper.selectOne(new LambdaQueryWrapper<IntegralDO>().eq(IntegralDO::getUserId, descendant));

+ 12 - 5
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/admin/order/TradeOrderController.java

@@ -113,11 +113,18 @@ public class TradeOrderController {
         return success(data);
     }
 
-    @GetMapping("/get-backlog")
-    @Operation(summary = "获取待发货及待售后")
-    @PreAuthorize("@ss.hasAnyPermissions('trade:order:query')")
-    public CommonResult<Map<String,Long>> getBacklog() {
-        return success(tradeOrderQueryService.getBacklog());
+    @GetMapping("/get-backlog-order")
+    @Operation(summary = "获取待发货")
+    @PreAuthorize("@ss.hasAnyPermissions('trade:order:backlog:query')")
+    public CommonResult<Map<String,Long>> getBacklogOrder() {
+        return success(tradeOrderQueryService.getBacklogOrder());
+    }
+
+    @GetMapping("/get-backlog-after-sale")
+    @Operation(summary = "获取待售后")
+    @PreAuthorize("@ss.hasAnyPermissions('after:sale:backlog:query')")
+    public CommonResult<Map<String,Long>> getBackAfterSale() {
+        return success(tradeOrderQueryService.getBacklogAfterSale());
     }
 
     @GetMapping("/summary")

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

@@ -205,10 +205,16 @@ public interface TradeOrderQueryService {
     TradeOrderDO getOrderById(Long orderId);
 
     /**
-     * 获取待发货订单及待办的售后订单
+     * 获取待发货订单
      * @return 集合
      */
-    Map<String, Long> getBacklog();
+    Map<String, Long> getBacklogOrder();
+
+    /**
+     * 获取待售后订单
+     * @return 售后订单
+     */
+    Map<String, Long> getBacklogAfterSale();
 
     /**
      * 用来判断当前的这个订单中的商品是不是虚拟商品

+ 10 - 2
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/service/order/TradeOrderQueryServiceImpl.java

@@ -246,13 +246,21 @@ public class TradeOrderQueryServiceImpl implements TradeOrderQueryService {
     }
 
     @Override
-    public Map<String, Long> getBacklog() {
+    public Map<String, Long> getBacklogOrder() {
         UserShopDetailsVO userShopDetails = userService.getUserShopDetails();
         Long backlogShipmentsCount = tradeOrderMapper.selectCountByStatus(TradeOrderStatusEnum.UNDELIVERED.getStatus(), userShopDetails.getShopId(), userShopDetails.getMerId());
-        Long backlogAfterSaleCount = afterSaleService.selectCountByStatus(userShopDetails.getShopId(), userShopDetails.getMerId());
 
         Map<String, Long> backMap = new HashMap<>();
         backMap.put(BacklogConstants.BACKLOG_SHIPMENTS, backlogShipmentsCount);
+        return backMap;
+    }
+
+    @Override
+    public Map<String, Long> getBacklogAfterSale() {
+        UserShopDetailsVO userShopDetails = userService.getUserShopDetails();
+        Long backlogAfterSaleCount = afterSaleService.selectCountByStatus(userShopDetails.getShopId(), userShopDetails.getMerId());
+
+        Map<String, Long> backMap = new HashMap<>();
         backMap.put(BacklogConstants.BACKLOG_AFTER_SALE, backlogAfterSaleCount);
         return backMap;
     }

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

@@ -22,6 +22,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;
@@ -670,6 +671,19 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
         for (TradeOrderDO order : orders) {
             try {
                 getSelf().cancelOrderBySystem(order);
+
+                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);
+                }
+                if(order.getPayConsumptionPoints() > 0){
+                    integralService.updateUserConsumptionPoints(userId, ConsumptionEnum.ORDER_CANCEL_BY_SYSTEM_REFUND_INTEGRAL, order.getPayConsumptionPoints(), tradeOrderId, orderNum);
+                }
+
                 count++;
             } catch (Throwable e) {
                 log.error("[cancelOrderBySystem][order({}) 过期订单异常]", order.getId(), e);