|
|
@@ -15,6 +15,7 @@ import com.fs.company.service.ICompanyService;
|
|
|
import com.fs.company.service.ICompanyTrafficRecordLogService;
|
|
|
import com.fs.company.service.ICompanyTrafficRecordService;
|
|
|
import com.fs.system.domain.SysConfig;
|
|
|
+import com.fs.system.mapper.SysUserMapper;
|
|
|
import com.fs.system.service.ISysConfigService;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
@@ -66,17 +67,36 @@ public class CompanyTrafficRecordServiceImpl extends ServiceImpl<CompanyTrafficR
|
|
|
public void refreshTraffic() {
|
|
|
List<CompanyTrafficRecord> companyTrafficRecords = baseMapper.selectList(new LambdaQueryWrapper<>());
|
|
|
for (CompanyTrafficRecord companyTrafficRecord : companyTrafficRecords) {
|
|
|
- updateRedisCache(companyTrafficRecord);
|
|
|
+ doReduce(companyTrafficRecord);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//通过redis更新表流量并添加扣除日志
|
|
|
- private void updateRedisCache(CompanyTrafficRecord companyTrafficRecord){
|
|
|
+ private void doReduce(CompanyTrafficRecord companyTrafficRecord) {
|
|
|
+ //redis获取剩余流量
|
|
|
Long balance = redisCache.getCacheObject(CompanyTrafficConstants.CACHE_KEY
|
|
|
+ ":" + companyTrafficRecord.getDeptId()
|
|
|
+ ":" + companyTrafficRecord.getCompanyId());
|
|
|
- if(balance != null)
|
|
|
- baseMapper.updateById(CompanyTrafficRecord.builder().id(companyTrafficRecord.getId()).balance(balance).build());
|
|
|
+ if (balance != null) {
|
|
|
+ long trafficAmount = companyTrafficRecord.getBalance() - balance;
|
|
|
+ if(trafficAmount != 0){
|
|
|
+ baseMapper.updateById(CompanyTrafficRecord.builder()
|
|
|
+ .id(companyTrafficRecord.getId())
|
|
|
+ .balance(balance)
|
|
|
+ .updateTime(new Date())
|
|
|
+ .updateBy(1L).build());
|
|
|
+ companyTrafficRecordLogService.save(CompanyTrafficRecordLog.builder()
|
|
|
+ .balance(companyTrafficRecord.getBalance())
|
|
|
+ .trafficAmount(trafficAmount)
|
|
|
+ .companyId(companyTrafficRecord.getCompanyId())
|
|
|
+ .createTime(new Date())
|
|
|
+ .operationType(2)
|
|
|
+ .userId(1L)//表示amdin
|
|
|
+ .remark("定时更新扣除流量")
|
|
|
+ .userName("admin")
|
|
|
+ .build());
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -97,14 +117,14 @@ public class CompanyTrafficRecordServiceImpl extends ServiceImpl<CompanyTrafficR
|
|
|
//获取转换后的流量
|
|
|
Long trafficAmount = trafficConversion(record.getChargeAmount());
|
|
|
record.setChangeTraffic(trafficAmount);//用于处理日志
|
|
|
- if(companyRecord != null) {
|
|
|
+ if (companyRecord != null) {
|
|
|
//不是第一次充值 增加流量
|
|
|
companyTrafficRecord.setBalance(companyRecord.getBalance() + trafficAmount);
|
|
|
companyTrafficRecord.setId(companyRecord.getId());
|
|
|
companyTrafficRecord.setUpdateTime(new Date());
|
|
|
companyTrafficRecord.setUpdateBy(record.getUserId());
|
|
|
baseMapper.updateById(companyTrafficRecord);
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
companyTrafficRecord.setBalance(trafficAmount);
|
|
|
companyTrafficRecord.setCompanyId(record.getCompanyId());
|
|
|
companyTrafficRecord.setDeptId(record.getCompany().getDeptId());
|
|
|
@@ -129,29 +149,29 @@ public class CompanyTrafficRecordServiceImpl extends ServiceImpl<CompanyTrafficR
|
|
|
throw new IllegalArgumentException("非法的操作类型");
|
|
|
}
|
|
|
// 更新Redis缓存
|
|
|
- updateRedisCache(record, companyTrafficRecord);
|
|
|
+ doRefresh(record, companyTrafficRecord);
|
|
|
|
|
|
- return doLog(companyTrafficRecord,record);
|
|
|
+ return doLog(companyTrafficRecord, record);
|
|
|
}
|
|
|
|
|
|
- private boolean validCompany(CompanyTrafficRecordChargeParam record){
|
|
|
+ private boolean validCompany(CompanyTrafficRecordChargeParam record) {
|
|
|
Company company = new Company();
|
|
|
company.setCompanyId(record.getCompanyId());
|
|
|
company.setIsDel(0);
|
|
|
List<Company> companies = companyService.selectCompanyList(company);
|
|
|
- if(companies != null && companies.size() == 1){
|
|
|
+ if (companies != null && companies.size() == 1) {
|
|
|
record.setCompany(companies.get(0));
|
|
|
return true;
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
/**
|
|
|
* 更新Redis缓存
|
|
|
- * @param record 充值参数
|
|
|
+ * @param record 充值参数
|
|
|
* @param companyTrafficRecord 公司流量记录
|
|
|
*/
|
|
|
- private void updateRedisCache(CompanyTrafficRecordChargeParam record, CompanyTrafficRecord companyTrafficRecord) {
|
|
|
+ private void doRefresh(CompanyTrafficRecordChargeParam record, CompanyTrafficRecord companyTrafficRecord) {
|
|
|
if (record.getCompany() != null && record.getCompany().getDeptId() != null) {
|
|
|
// 更新缓存 key=CACHE_KEY:deptId:companyId value=剩余流量
|
|
|
redisCache.setCacheObject(CompanyTrafficConstants.CACHE_KEY + ":" + record.getCompany().getDeptId() + ":" + record.getCompanyId(),
|
|
|
@@ -159,7 +179,7 @@ public class CompanyTrafficRecordServiceImpl extends ServiceImpl<CompanyTrafficR
|
|
|
|
|
|
// 计算该部门下所有公司流量总和
|
|
|
calculateTotalTrafficByDeptId(record.getCompany().getDeptId());
|
|
|
- }else {
|
|
|
+ } else {
|
|
|
// 抛出异常
|
|
|
throw new IllegalArgumentException("缓存ID异常");
|
|
|
}
|
|
|
@@ -167,24 +187,24 @@ public class CompanyTrafficRecordServiceImpl extends ServiceImpl<CompanyTrafficR
|
|
|
|
|
|
/**
|
|
|
* 部门下所有公司流量总和
|
|
|
- * */
|
|
|
+ */
|
|
|
private void calculateTotalTrafficByDeptId(Long deptId) {
|
|
|
Long totalTraffic = baseMapper.calculateTotalTrafficByDeptId(deptId);
|
|
|
redisCache.setCacheObject(CompanyTrafficConstants.CACHE_KEY + ":" + deptId, totalTraffic);
|
|
|
}
|
|
|
|
|
|
- private boolean doLog(CompanyTrafficRecord companyTrafficRecord,CompanyTrafficRecordChargeParam record){
|
|
|
+ private boolean doLog(CompanyTrafficRecord companyTrafficRecord, CompanyTrafficRecordChargeParam record) {
|
|
|
return companyTrafficRecordLogService.save(CompanyTrafficRecordLog.builder()
|
|
|
- .balance(companyTrafficRecord.getBalance())
|
|
|
- .trafficAmount(record.getChangeTraffic())
|
|
|
- .chargeAmount(record.getChargeAmount())
|
|
|
- .companyId(record.getCompanyId())
|
|
|
- .createTime(new Date())
|
|
|
- .operationType(record.getOperationType())
|
|
|
- .userId(record.getUserId())
|
|
|
- .remark(record.getRemark())
|
|
|
- .userName(record.getUserName())
|
|
|
- .build());
|
|
|
+ .balance(companyTrafficRecord.getBalance())
|
|
|
+ .trafficAmount(record.getChangeTraffic())
|
|
|
+ .chargeAmount(record.getChargeAmount())
|
|
|
+ .companyId(record.getCompanyId())
|
|
|
+ .createTime(new Date())
|
|
|
+ .operationType(record.getOperationType())
|
|
|
+ .userId(record.getUserId())
|
|
|
+ .remark(record.getRemark())
|
|
|
+ .userName(record.getUserName())
|
|
|
+ .build());
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -201,10 +221,12 @@ public class CompanyTrafficRecordServiceImpl extends ServiceImpl<CompanyTrafficR
|
|
|
}
|
|
|
|
|
|
|
|
|
- /** 充值金额转换流量KB*/
|
|
|
+ /**
|
|
|
+ * 充值金额转换流量KB
|
|
|
+ */
|
|
|
@Override
|
|
|
public Long trafficConversion(Long amount) {
|
|
|
- if(this.config == null) {
|
|
|
+ if (this.config == null) {
|
|
|
this.config = iSysConfigService.selectConfigByConfigKey("statis.config");
|
|
|
}
|
|
|
JSONObject jsonObject = JSONObject.parseObject(this.config.getConfigValue());
|