Bläddra i källkod

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

修改超时订单未退回积分
Yangzw 9 månader sedan
förälder
incheckning
9171eca446
11 ändrade filer med 73 tillägg och 3 borttagningar
  1. 2 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/integral/vo/IntegralPageReqVO.java
  2. 3 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/integral/vo/IntegralRespVO.java
  3. 3 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/integral/vo/IntegralSaveReqVO.java
  4. 10 1
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/dataobject/integral/IntegralDO.java
  5. 10 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/integral/IntegralService.java
  6. 11 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/integral/IntegralServiceImpl.java
  7. 6 1
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/app/order/AppTradeOrderController.java
  8. 6 0
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/app/order/vo/item/AppTradeOrderItemRespVO.java
  9. 5 0
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/service/order/TradeOrderQueryService.java
  10. 15 0
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/service/order/TradeOrderQueryServiceImpl.java
  11. 2 1
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/service/order/TradeOrderUpdateServiceImpl.java

+ 2 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/integral/vo/IntegralPageReqVO.java

@@ -30,4 +30,6 @@ public class IntegralPageReqVO extends PageParam {
     @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
     private LocalDateTime[] createTime;
 
+    @Schema(description = "累计获取的峰值")
+    private Long highQuotaTotal;
 }

+ 3 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/integral/vo/IntegralRespVO.java

@@ -34,4 +34,7 @@ public class IntegralRespVO {
     @ExcelProperty("创建时间")
     private LocalDateTime createTime;
 
+    @Schema(description = "累计获取的峰值")
+    @ExcelProperty("累计获取的峰值")
+    private Long highQuotaTotal;
 }

+ 3 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/integral/vo/IntegralSaveReqVO.java

@@ -38,4 +38,7 @@ public class IntegralSaveReqVO {
 
     @Schema(description = "冻结的最高可获取积分", requiredMode = Schema.RequiredMode.REQUIRED)
     private Long freezeHighQuota;
+
+    @Schema(description = "累计获取的峰值")
+    private Long highQuotaTotal;
 }

+ 10 - 1
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/dataobject/integral/IntegralDO.java

@@ -50,9 +50,18 @@ public class IntegralDO extends BaseDO {
     /**
      * 合赢奖累计获取积分
      */
-    private Long accumulatedQuota = 0L;
+    private Long accumulatedQuota;
+    /**
+     * 直推奖累计获取积分
+     */
+    private Long ancestorQuota;
     /**
      * 冻结的最高可获取积分
      */
     private Long freezeHighQuota;
+
+    /**
+     * 累计获取的峰值
+     */
+    private Long highQuotaTotal;
 }

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

@@ -97,4 +97,14 @@ public interface IntegralService {
      * @param orderNum 订单号
      */
     void updateIntegralFreezeHighQuota(Long generateUserId, Long userId, CaclEnum caclEnum, Long totalFreezeHighQuota, Long tradeOrderId, 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);
 }

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

@@ -192,4 +192,15 @@ public class IntegralServiceImpl implements IntegralService {
                 .build();
         ptProfitLogService.createPtProfitLog(profitLogSaveReqVO);
     }
+
+    @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);
+    }
 }

+ 6 - 1
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/app/order/AppTradeOrderController.java

@@ -167,6 +167,7 @@ public class AppTradeOrderController {
 
         //设置订单支付的积分
         rs.getData().setPayIntegral(order.getPayIntegral());
+        tradeOrderQueryService.setSpuType(rs.getData().getItems());
 
         return rs;
     }
@@ -191,7 +192,11 @@ public class AppTradeOrderController {
         List<TradeOrderItemDO> orderItems = tradeOrderQueryService.getOrderItemListByOrderId(
                 convertSet(pageResult.getList(), TradeOrderDO::getId));
         // 最终组合
-        return success(TradeOrderConvert.INSTANCE.convertPage02(pageResult, orderItems));
+        PageResult<AppTradeOrderPageItemRespVO> data = TradeOrderConvert.INSTANCE.convertPage02(pageResult, orderItems);
+        for (AppTradeOrderPageItemRespVO appTradeOrderPageItemRespVO : data.getList()) {
+            tradeOrderQueryService.setSpuType(appTradeOrderPageItemRespVO.getItems());
+        }
+        return success(data);
     }
 
     @GetMapping("/get-count")

+ 6 - 0
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/app/order/vo/item/AppTradeOrderItemRespVO.java

@@ -62,4 +62,10 @@ public class AppTradeOrderItemRespVO {
     @Schema(description = "高精度价格", example = "29564")
     private BigDecimal highPrecisionPrice;
 
+    @Schema(description = "商品类别", example = "1")
+    private Integer spuType;
+
+    @Schema(description = "商品支付类别", example = "1")
+    private Integer spuPayType;
+
 }

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

@@ -4,6 +4,7 @@ import cn.newfeifan.mall.framework.common.pojo.PageResult;
 import cn.newfeifan.mall.module.trade.controller.admin.order.vo.TradeOrderPageReqVO;
 import cn.newfeifan.mall.module.trade.controller.admin.order.vo.TradeOrderSummaryRespVO;
 import cn.newfeifan.mall.module.trade.controller.app.order.vo.AppTradeOrderPageReqVO;
+import cn.newfeifan.mall.module.trade.controller.app.order.vo.item.AppTradeOrderItemRespVO;
 import cn.newfeifan.mall.module.trade.dal.dataobject.order.TradeOrderDO;
 import cn.newfeifan.mall.module.trade.dal.dataobject.order.TradeOrderItemDO;
 import cn.newfeifan.mall.module.trade.framework.delivery.core.client.dto.ExpressTrackRespDTO;
@@ -155,4 +156,8 @@ public interface TradeOrderQueryService {
      */
     List<TradeOrderItemDO> getOrderItemListByOrderId(Collection<Long> orderIds);
 
+    /**
+     * 前端需要spuType去做判断
+     */
+    void setSpuType(List<AppTradeOrderItemRespVO> data);
 }

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

@@ -8,9 +8,12 @@ import cn.hutool.extra.spring.SpringUtil;
 import cn.newfeifan.mall.framework.common.pojo.PageResult;
 import cn.newfeifan.mall.module.member.api.user.MemberUserApi;
 import cn.newfeifan.mall.module.member.api.user.dto.MemberUserRespDTO;
+import cn.newfeifan.mall.module.product.dal.dataobject.spu.ProductSpuDO;
+import cn.newfeifan.mall.module.product.dal.mysql.spu.ProductSpuMapper;
 import cn.newfeifan.mall.module.trade.controller.admin.order.vo.TradeOrderPageReqVO;
 import cn.newfeifan.mall.module.trade.controller.admin.order.vo.TradeOrderSummaryRespVO;
 import cn.newfeifan.mall.module.trade.controller.app.order.vo.AppTradeOrderPageReqVO;
+import cn.newfeifan.mall.module.trade.controller.app.order.vo.item.AppTradeOrderItemRespVO;
 import cn.newfeifan.mall.module.trade.dal.dataobject.delivery.DeliveryExpressDO;
 import cn.newfeifan.mall.module.trade.dal.dataobject.order.TradeOrderDO;
 import cn.newfeifan.mall.module.trade.dal.dataobject.order.TradeOrderItemDO;
@@ -56,6 +59,9 @@ public class TradeOrderQueryServiceImpl implements TradeOrderQueryService {
     @Resource
     private MemberUserApi memberUserApi;
 
+    @Resource
+    private ProductSpuMapper productSpuMapper;
+
     // =================== Order ===================
 
     @Override
@@ -249,6 +255,15 @@ public class TradeOrderQueryServiceImpl implements TradeOrderQueryService {
         return tradeOrderItemMapper.selectListByOrderId(orderIds);
     }
 
+    @Override
+    public void setSpuType(List<AppTradeOrderItemRespVO> data) {
+        for (AppTradeOrderItemRespVO item : data) {
+            ProductSpuDO productSpuDO = productSpuMapper.selectById(item.getSpuId());
+            item.setSpuType(productSpuDO.getSpuType());
+            item.setSpuPayType(productSpuDO.getSpuPayType());
+        }
+    }
+
     /**
      * 获得自身的代理对象,解决 AOP 生效问题
      *

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

@@ -1474,6 +1474,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
      * @return 数量
      */
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public int cancelOrderBySystem() {
         // 1. 查询过期的待支付订单
         LocalDateTime expireTime = minusTime(tradeOrderProperties.getPayExpireTime());
@@ -1496,7 +1497,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
                 Long userId = order.getUserId();
                 //如果订单有使用积分,则退回积分
                 if (payIntegral > 0) {
-                    integralService.updateUserIntegral(userId, userId, CaclEnum.ORDER_CANCEL_BY_SYSTEM_REFUND_INTEGRAL, payIntegral, 0L, tradeOrderId, orderNum);
+                    integralService.updateUserIntegral(userId,CaclEnum.ORDER_CANCEL_BY_SYSTEM_REFUND_INTEGRAL,payIntegral,tradeOrderId,orderNum);
                 }
 
                 count++;