|
|
@@ -1299,48 +1299,17 @@ public class CompanyServiceImpl implements ICompanyService
|
|
|
if(companyId!=null&&companyId>0){
|
|
|
Company company=companyMapper.selectCompanyByIdForUpdate(companyId);
|
|
|
if(company!=null){
|
|
|
- String companyMoneyKey = FsConstants.COMPANY_MONEY_KEY + company.getCompanyId();
|
|
|
- // 加锁,与看课发放红包的加锁保持一致
|
|
|
- RLock lock = redissonClient.getLock(FsConstants.COMPANY_MONEY_LOCK + company.getCompanyId());
|
|
|
- boolean lockAcquired = false;
|
|
|
- try {
|
|
|
- lockAcquired = lock.tryLock(3, 10, TimeUnit.SECONDS);
|
|
|
- if (lockAcquired) {
|
|
|
- BigDecimal redisMoney;
|
|
|
- // 获取当前余额
|
|
|
- String moneyStr = redisCache.getCacheObject(companyMoneyKey);
|
|
|
- if (StringUtils.isNotEmpty(moneyStr)) {
|
|
|
- redisMoney = new BigDecimal(moneyStr);
|
|
|
- } else {
|
|
|
- redisMoney = company.getMoney();
|
|
|
- }
|
|
|
- BigDecimal newMoney = redisMoney.add(money);
|
|
|
- logger.info("退回红包金额:"+money);
|
|
|
- company.setMoney(newMoney);
|
|
|
- companyMapper.updateCompany(company);
|
|
|
- CompanyMoneyLogs log=new CompanyMoneyLogs();
|
|
|
- log.setCompanyId(company.getCompanyId());
|
|
|
- log.setRemark("退回红包金额");
|
|
|
- log.setMoney(money);
|
|
|
- log.setLogsType(16);
|
|
|
- log.setBalance(newMoney);
|
|
|
- log.setCreateTime(new Date());
|
|
|
- moneyLogsMapper.insertCompanyMoneyLogs(log);
|
|
|
-
|
|
|
- redisCache.setCacheObject(companyMoneyKey, newMoney.toString());
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- logger.error("退回的红包同步增加到缓存和数据表,参数错误,请求异常,异常信息:{}", e.getMessage(), e);
|
|
|
- } finally {
|
|
|
- if (lockAcquired && lock.isHeldByCurrentThread()) {
|
|
|
- try {
|
|
|
- lock.unlock();
|
|
|
- } catch (IllegalMonitorStateException e) {
|
|
|
- logger.warn("尝试释放非当前线程持有的锁: companyId:{}", company.getCompanyId());
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
+ logger.info("退回红包金额:"+money);
|
|
|
+ company.setMoney(company.getMoney().add(money));
|
|
|
+ companyMapper.updateCompany(company);
|
|
|
+ CompanyMoneyLogs log=new CompanyMoneyLogs();
|
|
|
+ log.setCompanyId(company.getCompanyId());
|
|
|
+ log.setRemark("退回红包金额");
|
|
|
+ log.setMoney(money);
|
|
|
+ log.setLogsType(16);
|
|
|
+ log.setBalance(company.getMoney());
|
|
|
+ log.setCreateTime(new Date());
|
|
|
+ moneyLogsMapper.insertCompanyMoneyLogs(log);
|
|
|
}
|
|
|
}
|
|
|
}
|