|
|
@@ -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);
|