|
|
@@ -65,12 +65,18 @@ public class ComCntToSnbServiceImpl extends CommonServiceImpl<ComCntToSnbVo, Com
|
|
|
if (comCntToSnb.getReceivedDay() >= comCntToSnb.getTotalDay()) {
|
|
|
return Result.of(null, false, "已全部领取完毕");
|
|
|
}
|
|
|
- // 计算可领天数. 服务器时间 - 开始时间
|
|
|
- Integer day = Convert.toInt(DateUtil.betweenDay(comCntToSnb.getBeginTime(), new Date(), true));
|
|
|
- if (day - comCntToSnb.getReceivedDay() <= 0) {
|
|
|
+ // 计算本次可领天数. 服务器时间 - 开始时间 - 已领取天数
|
|
|
+ Integer day = Convert.toInt(DateUtil.betweenDay(comCntToSnb.getBeginTime(), new Date(), true)) - comCntToSnb.getReceivedDay() + 1;
|
|
|
+ System.out.println("领取开始时间:" + DateUtil.format(comCntToSnb.getBeginTime(), "yyyy-MM-dd"));
|
|
|
+ System.out.println("服务器时间:" + DateUtil.format(new Date(), "yyyy-MM-dd"));
|
|
|
+ System.out.println("已领取:" + comCntToSnb.getReceivedDay() + "天,本次可领取:" + day + "天");
|
|
|
+ if (day <= 0) {
|
|
|
return Result.of(null, false, "领取失败,今日已领取");
|
|
|
}
|
|
|
-
|
|
|
+ // 特例:领取周期100天,这个人间隔100以后上线
|
|
|
+ if (day > comCntToSnb.getTotalDay() - comCntToSnb.getReceivedDay()) {
|
|
|
+ day = comCntToSnb.getTotalDay() - comCntToSnb.getReceivedDay();
|
|
|
+ }
|
|
|
long time = System.currentTimeMillis() + RedisData.getSnbTimeout();
|
|
|
String redisKey = StrUtil.format("SNB_SAVE_{}", userId);
|
|
|
|
|
|
@@ -102,7 +108,7 @@ public class ComCntToSnbServiceImpl extends CommonServiceImpl<ComCntToSnbVo, Com
|
|
|
// snbTran.setTranType();
|
|
|
snbTran.setTranAmount(Convert.toInt(thisReceiveQuantity));
|
|
|
// snbTran.setTranPrice();
|
|
|
- snbTran.setTranDescribe(String.format("user领取SNB、本次领取:{},剩余:", thisReceiveQuantity, comCntToSnb.getTotalQuantity().multiply(comCntToSnb.getReceivedQuantity())));
|
|
|
+ snbTran.setTranDescribe(StrUtil.format("user领取SNB、本次领取:{},剩余:{}", thisReceiveQuantity, comCntToSnb.getTotalQuantity().subtract(comCntToSnb.getReceivedQuantity())));
|
|
|
snbTran.setIsAdd(1);
|
|
|
snbTran.setBeforeSnb(0);
|
|
|
snbTran.setTranSnb(0);
|
|
|
@@ -115,14 +121,16 @@ public class ComCntToSnbServiceImpl extends CommonServiceImpl<ComCntToSnbVo, Com
|
|
|
snbTran.setBeforeSnbPart(Convert.toDouble(comCntToSnb.getReceivedQuantity().subtract(thisReceiveQuantity)));
|
|
|
// 交易完成后的snb
|
|
|
snbTran.setAfterSnbPart(Convert.toDouble(comCntToSnb.getReceivedQuantity()));
|
|
|
+ snbTran.setCreateTime(new Date());
|
|
|
comSnbTranService.save(snbTran);
|
|
|
|
|
|
- // redis解锁
|
|
|
- redisLock.unlock(redisKey, String.valueOf(time));
|
|
|
return Result.of(null, false, "领取成功");
|
|
|
+
|
|
|
} catch (Exception e) {
|
|
|
- redisLock.unlock(redisKey, String.valueOf(time));
|
|
|
throw new RuntimeException(e.getMessage());
|
|
|
+ } finally {
|
|
|
+ // redis解锁
|
|
|
+ redisLock.unlock(redisKey, String.valueOf(time));
|
|
|
}
|
|
|
}
|
|
|
}
|