Browse Source

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

更新订单取消消费分未退回
Yangzw 6 months ago
parent
commit
4289824ede
14 changed files with 149 additions and 14 deletions
  1. 2 0
      feifan-module-distri/feifan-module-distri-api/src/main/java/cn/newfeifan/mall/module/distri/enums/ConsumptionEnum.java
  2. 7 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/consumptiontopuplog/ConsumptionTopUpLogController.java
  3. 19 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/consumptiontopuplog/vo/PtTopUpWithUserTopUpRespVO.java
  4. 21 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/consumptiontopuplog/vo/TopUpRespVO.java
  5. 5 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/mysql/consumptiontopuplog/ConsumptionTopUpLogMapper.java
  6. 6 6
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/consumptiontopuplog/ConsumptionTopUpLogService.java
  7. 8 8
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/consumptiontopuplog/ConsumptionTopUpLogServiceImpl.java
  8. 11 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/integral/IntegralService.java
  9. 25 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/integral/IntegralServiceImpl.java
  10. 1 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/sharepath/SharePathServiceImpl.java
  11. 35 0
      feifan-module-distri/feifan-module-distri-biz/src/main/resources/mapper/consumptiontopuplog/ConsumptionTopUpLogMapper.xml
  12. 2 0
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/app/order/vo/AppTradeOrderDetailRespVO.java
  13. 4 0
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/service/order/TradeOrderUpdateServiceImpl.java
  14. 3 0
      feifan-module-member/feifan-module-member-biz/src/main/java/cn/newfeifan/mall/module/member/controller/admin/user/vo/MemberUserRespVO.java

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

+ 7 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/consumptiontopuplog/ConsumptionTopUpLogController.java

@@ -70,4 +70,11 @@ public class ConsumptionTopUpLogController {
     public CommonResult<ConsumptionInfoVO> isFirstConsumption(@RequestParam("userId") Long userId) {
         return success(consumptionTopUpLogService.isFirstConsumption(userId));
     }
+
+    @GetMapping("/ptTopUpWithUserTopUpList")
+    @Operation(summary = "获取平台充值和用户充值记录")
+    @PreAuthorize("@ss.hasPermission('distri:consumption-top-up-log:ptTopUpWithUserTopUpList')")
+    public CommonResult<PtTopUpWithUserTopUpRespVO> ptTopUpWithUserTopUpList() {
+        return success(consumptionTopUpLogService.ptTopUpWithUserTopUpList());
+    }
 }

+ 19 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/consumptiontopuplog/vo/PtTopUpWithUserTopUpRespVO.java

@@ -0,0 +1,19 @@
+package cn.newfeifan.mall.module.distri.controller.admin.consumptiontopuplog.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Builder;
+import lombok.Data;
+
+import java.util.List;
+
+@Schema(description = "管理后台 - 平台充值和用户充值记录")
+@Data
+@Builder
+public class PtTopUpWithUserTopUpRespVO {
+
+    @Schema(description = "总数")
+    private Long totalConsumptionPoints;
+
+    @Schema(description = "集合")
+    private List<TopUpRespVO> topUpList;
+}

+ 21 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/consumptiontopuplog/vo/TopUpRespVO.java

@@ -0,0 +1,21 @@
+package cn.newfeifan.mall.module.distri.controller.admin.consumptiontopuplog.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDate;
+
+import static cn.newfeifan.mall.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY;
+import static cn.newfeifan.mall.framework.common.util.date.DateUtils.TIME_ZONE_DEFAULT;
+
+@Schema(description = "管理后台 - 充值记录")
+@Data
+public class TopUpRespVO {
+    @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY, timezone = TIME_ZONE_DEFAULT)
+    @Schema(description = "日期", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    private LocalDate date;
+
+    @Schema(description = "数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    private Long consumptionPoints;
+}

+ 5 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/mysql/consumptiontopuplog/ConsumptionTopUpLogMapper.java

@@ -8,6 +8,8 @@ import cn.newfeifan.mall.module.distri.dal.dataobject.consumptiontopuplog.Consum
 import org.apache.ibatis.annotations.Mapper;
 import cn.newfeifan.mall.module.distri.controller.admin.consumptiontopuplog.vo.*;
 
+import java.util.List;
+
 /**
  * 平台消费分充值记录 Mapper
  *
@@ -27,4 +29,7 @@ public interface ConsumptionTopUpLogMapper extends BaseMapperX<ConsumptionTopUpL
                 .orderByDesc(ConsumptionTopUpLogDO::getId));
     }
 
+    List<TopUpRespVO> ptTopUpWithUserTopUpList();
+
+    Long getTotalConsumptionPoints();
 }

+ 6 - 6
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/consumptiontopuplog/ConsumptionTopUpLogService.java

@@ -28,12 +28,6 @@ public interface ConsumptionTopUpLogService {
      */
     void updateConsumptionTopUpLog(@Valid ConsumptionTopUpLogSaveReqVO updateReqVO);
 
-    /**
-     * 删除平台消费分充值记录
-     *
-     * @param id 编号
-     */
-    void deleteConsumptionTopUpLog(Long id);
 
     /**
      * 获得平台消费分充值记录
@@ -64,4 +58,10 @@ public interface ConsumptionTopUpLogService {
      * @return 充值记录
      */
     List<ConsumptionTopUpLogDO> selectList();
+
+    /**
+     * 获取平台充值记录和用户充值记录
+     * @return 充值记录总和
+     */
+    PtTopUpWithUserTopUpRespVO ptTopUpWithUserTopUpList();
 }

+ 8 - 8
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/consumptiontopuplog/ConsumptionTopUpLogServiceImpl.java

@@ -134,14 +134,6 @@ public class ConsumptionTopUpLogServiceImpl implements ConsumptionTopUpLogServic
         consumptionTopUpLogMapper.updateById(updateObj);
     }
 
-    @Override
-    public void deleteConsumptionTopUpLog(Long id) {
-        // 校验存在
-        validateConsumptionTopUpLogExists(id);
-        // 删除
-        consumptionTopUpLogMapper.deleteById(id);
-    }
-
     private void validateConsumptionTopUpLogExists(Long id) {
         if (consumptionTopUpLogMapper.selectById(id) == null) {
             throw exception(CONSUMPTION_TOP_UP_LOG_NOT_EXISTS);
@@ -181,5 +173,13 @@ public class ConsumptionTopUpLogServiceImpl implements ConsumptionTopUpLogServic
         return consumptionTopUpLogMapper.selectList();
     }
 
+    @Override
+    public PtTopUpWithUserTopUpRespVO ptTopUpWithUserTopUpList() {
+        return PtTopUpWithUserTopUpRespVO.builder()
+                .topUpList(consumptionTopUpLogMapper.ptTopUpWithUserTopUpList())
+                .totalConsumptionPoints(consumptionTopUpLogMapper.getTotalConsumptionPoints())
+                .build();
+    }
+
 
 }

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

+ 35 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/resources/mapper/consumptiontopuplog/ConsumptionTopUpLogMapper.xml

@@ -9,4 +9,39 @@
         文档可见:https://www.zhongxing.cn/MyBatis/x-plugins/
      -->
 
+    <select id="ptTopUpWithUserTopUpList"
+            resultType="cn.newfeifan.mall.module.distri.controller.admin.consumptiontopuplog.vo.TopUpRespVO">
+        SELECT
+            DATE(combined.date) AS date,
+            SUM(combined.conut) AS consumptionPoints
+        FROM (
+            SELECT
+            DATE(create_time) AS date,
+            sum(consumption_points) AS conut
+            FROM distri_consumption_top_up_log GROUP BY date(create_time)
+            UNION ALL
+            SELECT
+            DATE(create_time) AS create_time,
+            sum(top_up_consumption_points) AS conut
+            FROM distri_user_top_up_consumption_points_order GROUP BY date(create_time)
+            ) AS combined
+        GROUP BY DATE(combined.date)
+        HAVING SUM(combined.conut) > 0
+        ORDER BY date
+
+    </select>
+    <select id="getTotalConsumptionPoints" resultType="java.lang.Long">
+        SELECT
+            SUM(consumption_points) total
+        FROM
+            (SELECT
+                 consumption_points
+             FROM
+                 distri_consumption_top_up_log
+             UNION ALL
+             SELECT
+                 top_up_consumption_points AS consumption_points
+             FROM
+                 distri_user_top_up_consumption_points_order) AS combined;
+    </select>
 </mapper>

+ 2 - 0
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/app/order/vo/AppTradeOrderDetailRespVO.java

@@ -147,4 +147,6 @@ public class AppTradeOrderDetailRespVO {
 
     @Schema(description = "支付积分", example = "10000")
     private Long payIntegral;
+    @Schema(description = "本订单使用消费分", example = "36")
+    private Long payConsumptionPoints;
 }

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