|
@@ -113,13 +113,26 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
|
|
private Boolean isNewWxMerchant;
|
|
private Boolean isNewWxMerchant;
|
|
private static final Logger logger = LoggerFactory.getLogger(FsUserCourseVideoServiceImpl.class);
|
|
private static final Logger logger = LoggerFactory.getLogger(FsUserCourseVideoServiceImpl.class);
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 红包账户锁
|
|
|
|
+ */
|
|
private static final String REDPACKET_POOL_LOCK = "redpacket_pool_lock";
|
|
private static final String REDPACKET_POOL_LOCK = "redpacket_pool_lock";
|
|
|
|
|
|
/**
|
|
/**
|
|
* 公司红包金额
|
|
* 公司红包金额
|
|
*/
|
|
*/
|
|
private static final String REDPACKET_COMPANY_MONEY = "redpacket_money";
|
|
private static final String REDPACKET_COMPANY_MONEY = "redpacket_money";
|
|
- private static final String REDPACKET_COMPANY_MONEY_CHANGE = "redpacket_money_CHANGE";
|
|
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 红包改变记录
|
|
|
|
+ */
|
|
|
|
+ private static final String REDPACKET_COMPANY_MONEY_CHANGE = "redpacket_money_change";
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 是否开启红包账户扣减
|
|
|
|
+ */
|
|
|
|
+ @Value("${enableRedPackAccount:0}")
|
|
|
|
+ private String ENABLE_RED_PACK_ACCOUNT;
|
|
|
|
|
|
private static final String miniappRealLink = "/pages_course/video.html?course=";
|
|
private static final String miniappRealLink = "/pages_course/video.html?course=";
|
|
private static final String REAL_LINK_PREFIX = "/courseH5/pages/course/learning?course=";
|
|
private static final String REAL_LINK_PREFIX = "/courseH5/pages/course/learning?course=";
|
|
@@ -1136,17 +1149,23 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
|
|
|
|
|
|
private R sendRedPacketRewardToUser(FsCourseSendRewardUParam param, FsCourseWatchLog log, CourseConfig config, WxSendRedPacketParam packetParam, BigDecimal amount) {
|
|
private R sendRedPacketRewardToUser(FsCourseSendRewardUParam param, FsCourseWatchLog log, CourseConfig config, WxSendRedPacketParam packetParam, BigDecimal amount) {
|
|
|
|
|
|
- BigDecimal companyMoney = redisCache.getCacheObject(REDPACKET_COMPANY_MONEY);
|
|
|
|
- if(ObjectUtils.isNull(companyMoney)){
|
|
|
|
- SysConfig sysConfig = sysConfigService.selectConfigByConfigKey("company.money");
|
|
|
|
- String configValue = sysConfig.getConfigValue();
|
|
|
|
- companyMoney = new BigDecimal(configValue);
|
|
|
|
- logger.info("缓存公司余额为空,从数据库读取 companyMoney: {}",companyMoney);
|
|
|
|
- }
|
|
|
|
|
|
+ BigDecimal companyMoney = null;
|
|
|
|
+ if(StringUtils.equals(ENABLE_RED_PACK_ACCOUNT,"1")) {
|
|
|
|
+ companyMoney = redisCache.getCacheObject(REDPACKET_COMPANY_MONEY);
|
|
|
|
+ if(ObjectUtils.isNull(companyMoney)){
|
|
|
|
+ SysConfig sysConfig = sysConfigService.selectConfigByConfigKey("company.money");
|
|
|
|
+ if(ObjectUtils.isNull(sysConfig)){
|
|
|
|
+ throw new IllegalArgumentException("润天公司账户余额不能为空!请检查配置!");
|
|
|
|
+ }
|
|
|
|
+ String configValue = sysConfig.getConfigValue();
|
|
|
|
+ companyMoney = new BigDecimal(configValue);
|
|
|
|
+ logger.info("缓存公司余额为空,从数据库读取 companyMoney: {}",companyMoney);
|
|
|
|
+ }
|
|
|
|
|
|
- if (companyMoney.compareTo(BigDecimal.ZERO) <= 0) {
|
|
|
|
- logger.info("润天账户余额: {} 不足!", companyMoney);
|
|
|
|
- return R.error("[红包领取] 账户余额不足,请联系管理员!");
|
|
|
|
|
|
+ if (companyMoney.compareTo(BigDecimal.ZERO) <= 0) {
|
|
|
|
+ logger.info("润天账户余额: {} 不足!", companyMoney);
|
|
|
|
+ return R.error("[红包领取] 账户余额不足,请联系管理员!");
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
// 发送红包
|
|
// 发送红包
|
|
@@ -1173,8 +1192,10 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
|
|
redPacketLog.setAmount(amount);
|
|
redPacketLog.setAmount(amount);
|
|
redPacketLog.setWatchLogId(log.getLogId() != null ? log.getLogId() : null);
|
|
redPacketLog.setWatchLogId(log.getLogId() != null ? log.getLogId() : null);
|
|
redPacketLog.setPeriodId(param.getPeriodId());
|
|
redPacketLog.setPeriodId(param.getPeriodId());
|
|
- redPacketLog.setAccBalanceBefore(companyMoney);
|
|
|
|
- redPacketLog.setAccBalanceAfter(companyMoney.subtract(amount));
|
|
|
|
|
|
+ if(StringUtils.equals(ENABLE_RED_PACK_ACCOUNT,"1")) {
|
|
|
|
+ redPacketLog.setAccBalanceBefore(companyMoney);
|
|
|
|
+ redPacketLog.setAccBalanceAfter(companyMoney.subtract(amount));
|
|
|
|
+ }
|
|
|
|
|
|
CompletableFuture.runAsync(() -> {
|
|
CompletableFuture.runAsync(() -> {
|
|
redPacketLogMapper.insertFsCourseRedPacketLog(redPacketLog);
|
|
redPacketLogMapper.insertFsCourseRedPacketLog(redPacketLog);
|
|
@@ -1183,12 +1204,15 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
|
|
courseWatchLogMapper.updateFsCourseWatchLog(log);
|
|
courseWatchLogMapper.updateFsCourseWatchLog(log);
|
|
});
|
|
});
|
|
|
|
|
|
- // 更新账户余额
|
|
|
|
- logger.info("[更新账户余额] 当前余额{} 更新后余额{}",companyMoney.toPlainString(),companyMoney.subtract(amount).toPlainString());
|
|
|
|
- redisCache.setCacheList(REDPACKET_COMPANY_MONEY_CHANGE, Arrays.asList(companyMoney,companyMoney.subtract(amount)));
|
|
|
|
|
|
+ if(StringUtils.equals(ENABLE_RED_PACK_ACCOUNT,"1")) {
|
|
|
|
+ // 更新账户余额
|
|
|
|
+ logger.info("[更新账户余额] 当前余额{} 更新后余额{}",companyMoney.toPlainString(),companyMoney.subtract(amount).toPlainString());
|
|
|
|
+
|
|
|
|
+ redisCache.setCacheList(REDPACKET_COMPANY_MONEY_CHANGE, Arrays.asList(companyMoney,companyMoney.subtract(amount)));
|
|
|
|
|
|
- companyMoney = companyMoney.subtract(amount);
|
|
|
|
- redisCache.setCacheObject(REDPACKET_COMPANY_MONEY,companyMoney);
|
|
|
|
|
|
+ companyMoney = companyMoney.subtract(amount);
|
|
|
|
+ redisCache.setCacheObject(REDPACKET_COMPANY_MONEY,companyMoney);
|
|
|
|
+ }
|
|
return sendRedPacket;
|
|
return sendRedPacket;
|
|
} else {
|
|
} else {
|
|
return R.error("奖励发送失败,请联系客服");
|
|
return R.error("奖励发送失败,请联系客服");
|