Browse Source

Merge branch 'dev/2024/0625/update-admin-Y' of Harper/feifan-backend-zx-admin into master

修改用户查看积分的变动,不显示为0的记录
Yangzw 8 months ago
parent
commit
8eac2e80b9

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

@@ -27,4 +27,7 @@ public class DailyAwardRecordsSaveReqVO {
     @Schema(description = "日志Id", requiredMode = Schema.RequiredMode.REQUIRED, example = "16092")
     @NotNull(message = "日志Id不能为空")
     private Long logId;
+
+    @Schema(description = "产生积分的用户ID,例如:下订单的用户ID", example = "31502")
+    private Long generateUserId;
 }

+ 5 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/dataobject/dailyawardrecords/DailyAwardRecordsDO.java

@@ -41,4 +41,9 @@ public class DailyAwardRecordsDO extends BaseDO {
      */
     private Long logId;
 
+    /**
+     * 产生积分的用户ID,例如:下订单的用户ID
+     */
+    private Long generateUserId;
+
 }

+ 2 - 1
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/dailyawardrecords/DailyAwardRecordsService.java

@@ -54,10 +54,11 @@ public interface DailyAwardRecordsService {
      * 添加每日用户获得合赢奖记录
      *
      * @param userId 用户编号
+     * @param generateUserId 来源用户
      * @param amount 获得的合赢奖
      * @param logId 日志编号
      */
-    void addDailyAwardRecords(Long userId, Long amount, Long logId);
+    void addDailyAwardRecords(Long userId,Long generateUserId, Long amount, Long logId);
 
     /**
      * 获取七天前的合赢奖记录,将他转换成可用积分

+ 3 - 1
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/dailyawardrecords/DailyAwardRecordsServiceImpl.java

@@ -86,10 +86,11 @@ public class DailyAwardRecordsServiceImpl implements DailyAwardRecordsService {
     }
 
     @Override
-    public void addDailyAwardRecords(Long userId, Long amount, Long logId) {
+    public void addDailyAwardRecords(Long userId,Long generateUserId, Long amount, Long logId) {
         DailyAwardRecordsSaveReqVO createReqVO = DailyAwardRecordsSaveReqVO
                 .builder()
                 .userId(userId)
+                .generateUserId(generateUserId)
                 .amount(amount)
                 .settled(false)
                 .logId(logId)
@@ -128,6 +129,7 @@ public class DailyAwardRecordsServiceImpl implements DailyAwardRecordsService {
                     .afterAmount(integralDO.getCurrentQuota())
                     .freezeAmount(-dailyAwardRecordsDO.getAmount())
                     .afterFreezeAmount(integralDO.getFreezeQuota())
+                    .maxAvailablePointsAmount(dailyAwardRecordsDO.getGenerateUserId())
                     .build();
             ptProfitLogService.createPtProfitLog(winWinLog);
 

+ 15 - 8
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/partitioncrash/PartitionCrashServiceImpl.java

@@ -186,7 +186,6 @@ public class PartitionCrashServiceImpl implements PartitionCrashService {
 
                 // 创建一个分区编号
                 String todayNo = crashTodayNo(k.getUserId());
-                String yesterdayNo = crashYesterdayNo(k.getUserId());
 
                 PartitionSonSaveReqVO.PartitionSonSaveReqVOBuilder sonBuilder = PartitionSonSaveReqVO.builder();
                 PartitionBrothersSaveReqVO.PartitionBrothersSaveReqVOBuilder brotherBuilder = PartitionBrothersSaveReqVO.builder();
@@ -235,7 +234,7 @@ public class PartitionCrashServiceImpl implements PartitionCrashService {
 
 
                 // 判断,昨天是否有存余的分支
-                PartitionCrashDO yesterdayCrash = partitionCrashMapper.selectOne(new LambdaQueryWrapperX<PartitionCrashDO>().eqIfPresent(PartitionCrashDO::getPartNo, yesterdayNo));
+                PartitionCrashDO yesterdayCrash = crashYesterdayNo(k.getUserId(),1);
                 // 如果不为空, 则判断增加到哪个分支中
                 if (yesterdayCrash != null) {
                     if (yesterdayCrash.getSonPrice() >= yesterdayCrash.getBrotherPrice()) {
@@ -302,7 +301,7 @@ public class PartitionCrashServiceImpl implements PartitionCrashService {
                             integralDO.getFreezeQuota(), JsonUtils.toJsonString(orderPercentageDO), ptReplenish, -amount, highQuota - amount);
 
                     //记录每日用户有合赢将的记录,后面用来结算的
-                    dailyAwardRecordsService.addDailyAwardRecords(integralDO.getUserId(),amount, logId);
+                    dailyAwardRecordsService.addDailyAwardRecords(integralDO.getUserId(),integralDO.getUserId(),amount, logId);
                 }
 
                 //直推人的上级的本次添加积分
@@ -332,7 +331,7 @@ public class PartitionCrashServiceImpl implements PartitionCrashService {
                             parentIntegralDo.getFreezeQuota(), JsonUtils.toJsonString(orderPercentageDO), parentPtReplenish, -parentAmount, parentHighQuota - parentAmount);
 
                     //记录每日用户有合赢将的记录,后面用来结算的
-                    dailyAwardRecordsService.addDailyAwardRecords(parentIntegralDo.getUserId(),parentAmount,logId);
+                    dailyAwardRecordsService.addDailyAwardRecords(parentIntegralDo.getUserId(),integralDO.getUserId(),parentAmount,logId);
                 }
 
                 if (!ptReplenish.equals(0L)) {
@@ -543,12 +542,20 @@ public class PartitionCrashServiceImpl implements PartitionCrashService {
     }
 
     // 获取昨天的编号
-    public String crashYesterdayNo(Long userId) {
+    public PartitionCrashDO crashYesterdayNo(Long userId,Integer yesterday) {
         LocalDateTime todayStart = LocalDateTime.of(LocalDate.now(), LocalTime.MIDNIGHT); // 今天的开始时间,即午夜12点
-        LocalDateTime localDateTime = todayStart.minusDays(1);
-        String yesterdayString = localDateTime.toString();
+        LocalDateTime localDateTime = todayStart.minusDays(yesterday);
+        String yesterdayString = "CRASH:" + userId + ":" + localDateTime.toString();
+
+        PartitionCrashDO partitionCrashDO = partitionCrashMapper.selectOne(new LambdaQueryWrapperX<PartitionCrashDO>().eqIfPresent(PartitionCrashDO::getPartNo, yesterdayString));
+        List<PartitionCrashDO> partitionCrashDOS = partitionCrashMapper.selectList((new LambdaQueryWrapperX<PartitionCrashDO>().eq(PartitionCrashDO::getUserId, userId)));
+
+        //判断这个用户不是第一次碰撞并且没有查询到昨天的碰撞记录,有可能是昨天或者更早定时任务没有启动导致的,所以再往前查几天
+        if(!partitionCrashDOS.isEmpty() && partitionCrashDO == null){
+            return crashYesterdayNo(userId,++yesterday);
+        }
 //        return "CRASH:" + userId + ":" + "2024-06-20T00:00";
-        return "CRASH:" + userId + ":" + yesterdayString;
+        return partitionCrashDO;
 
     }
 

+ 6 - 0
sql/mysql/建空库SQL/14_20240625.sql

@@ -0,0 +1,6 @@
+ALTER TABLE trade_order_item
+    ADD COLUMN `promotion_fee` INT ( 11 ) DEFAULT NULL COMMENT '推广费, 单位: 分',
+ADD COLUMN `cost_price` INT ( 11 ) DEFAULT '-1' COMMENT '成本价,单位: 分';
+
+ALTER TABLE distri_daily_award_records
+    ADD COLUMN `generate_user_id` bigint(20) DEFAULT NULL COMMENT '产生积分的用户ID,例如:下订单的用户ID';