Переглянути джерело

修改模块10,最后一天领取所有剩余的

xst 4 роки тому
батько
коміт
b0ff193381

+ 18 - 7
src/main/java/com/td/boss/game/comcnttosnb/service/ComCntToSnbServiceImpl.java

@@ -67,6 +67,9 @@ public class ComCntToSnbServiceImpl extends CommonServiceImpl<ComCntToSnbVo, Com
         if (comCntToSnb.getReceivedDay() >= comCntToSnb.getTotalDay()) {
             return Result.of(null, false, "已全部领取完毕");
         }
+        if (comCntToSnb.getBeginTime() == null) {
+            return Result.of(null, false, "未设置领取开始时间");
+        }
         // 服务器时间
         Date serverDate = new Date();
         // 未到领取时间
@@ -82,11 +85,6 @@ public class ComCntToSnbServiceImpl extends CommonServiceImpl<ComCntToSnbVo, Com
         if (day <= 0) {
             return Result.of(null, false, "领取失败,今日已领取");
         }
-        // 特例:领取周期100天,这个人间隔100以后上线
-        if (day > comCntToSnb.getTotalDay() - comCntToSnb.getReceivedDay()) {
-            day = comCntToSnb.getTotalDay() - comCntToSnb.getReceivedDay();
-            log.info("由于本次领取天数大于剩余领取天数,所以最终领取天数:" + day);
-        }
         long time = System.currentTimeMillis() + RedisData.getSnbTimeout();
         String redisKey = StrUtil.format("SNB_SAVE_{}", userId);
 
@@ -95,9 +93,22 @@ public class ComCntToSnbServiceImpl extends CommonServiceImpl<ComCntToSnbVo, Com
             if (!redisLock.lock(redisKey, String.valueOf(time))) {
                 return Result.of(null, false, ResultEnum.SEED_SALE_SAVE_LOCK.getMessage(), ResultEnum.SEED_SALE_SAVE_LOCK.getCode());
             }
-
+            //单次领取数量
+            BigDecimal div = NumberUtil.div(comCntToSnb.getTotalQuantity(), comCntToSnb.getTotalDay());
+            BigDecimal receiveNum = NumberUtil.round(div, 2);
+            log.info("每天领取数量:" + receiveNum);
             // 本次领取量
-            BigDecimal thisReceiveQuantity = NumberUtil.mul(comCntToSnb.getUnitQuantity(), day);
+            BigDecimal thisReceiveQuantity;
+            // 特例:领取周期100天,这个人间隔100以后上线
+            if (day >= comCntToSnb.getTotalDay() - comCntToSnb.getReceivedDay()) {
+                day = comCntToSnb.getTotalDay() - comCntToSnb.getReceivedDay();
+                log.info("由于本次领取天数大于剩余领取天数,所以最终领取天数:" + day);
+                thisReceiveQuantity = NumberUtil.sub(comCntToSnb.getTotalQuantity(), NumberUtil.mul(comCntToSnb.getReceivedDay(), receiveNum));
+            } else {
+                // 本次领取量
+                thisReceiveQuantity = NumberUtil.mul(receiveNum, day);
+            }
+
             comCntToSnb.setReceivedQuantity(comCntToSnb.getReceivedQuantity().add(thisReceiveQuantity));
             // 本次领取天数
             comCntToSnb.setReceivedDay(comCntToSnb.getReceivedDay() + day);

+ 1 - 1
src/main/resources/application.yml

@@ -50,7 +50,7 @@ spring:
   datasource:
     url: jdbc:mysql://123.57.252.53:6688/dragon_town?useSSL=false&serverTimezone=GMT%2B8&characterEncoding=utf-8
     username: root #dragon_town #root
-    password:  FzCebFq6Xy0CDTXJ #zddeiBmp8c5T6TR6 #9ab8fad748dead93
+    password:  cBkZ4zQT5c #zddeiBmp8c5T6TR6 #9ab8fad748dead93
     driver-class-name: com.mysql.cj.jdbc.Driver
     hikari:
       minimum-idle: 5