修改时间

master
bynt 2 years ago
parent aa2e1fbe22
commit 0042ff81fa

@ -12,11 +12,9 @@ import cn.hutool.core.util.ObjectUtil;
import com.baiye.config.properties.DeliveryProperties;
import com.baiye.constant.DefaultNumberConstants;
import com.baiye.modules.system.domain.Company;
import com.baiye.modules.system.domain.PayFatherTemplate;
import com.baiye.modules.system.domain.TaskImei;
import com.baiye.modules.system.service.CompanyService;
import com.baiye.modules.system.service.DeliveryRecordService;
import com.baiye.modules.system.service.PayFatherTemplateService;
import com.baiye.modules.system.service.TaskImeiService;
import com.baiye.modules.system.service.dto.ImeiDTO;
import com.baiye.util.*;
@ -53,9 +51,12 @@ public class DeliveryBalanceTask {
private final DeliveryRecordService deliveryRecordService;
@Scheduled(cron = "0 0/30 8-23 * * ? ")
/**
* 821
*
*
*/
@Scheduled(cron = "0 0/30 8-21 * * ? ")
@Transactional(rollbackFor = Exception.class)
public void cashResources() {
// 查询所有未兑换的
@ -71,56 +72,55 @@ public class DeliveryBalanceTask {
Long userId = list.get(DefaultNumberConstants.ZERO_NUMBER).getUserId();
Company companyByUserId = companyService.findCompanyByUserId(userId);
if (ObjectUtil.isNotNull(companyByUserId)
&& ObjectUtil.isNotNull(companyByUserId.getTemplateId())) {
// 判断价格
if (ObjectUtil.isNotNull(companyByUserId.getDeliveryCallFee())) {
// 每次100000 数据
List<List<TaskImei>> lists = Lists.partition
(list, DefaultNumberConstants.ONE_HUNDRED_THOUSAND);
// 批量发送
for (List<TaskImei> taskImeiList : lists) {
// 大于100 进行兑换
if (taskImeiList.size() >= DefaultNumberConstants.ONE_HUNDRED) {
BigDecimal decimal = NumberUtil.mul(companyByUserId.getDeliveryCallFee(), BigDecimal.valueOf(taskImeiList.size()));
BigDecimal sub = NumberUtil.sub(companyByUserId.getUserBalance(), decimal);
// 判断余额
if (sub.compareTo(BigDecimal.valueOf
(DefaultNumberConstants.ZERO_NUMBER)) < DefaultNumberConstants.ZERO_NUMBER) {
continue;
}
String fileUrl = deliveryProperties.getFileUrl();
String format = DateUtil.format(DateUtil.date(), DatePattern.PURE_DATE_PATTERN);
Integer num = (Integer) redisUtils.get(CacheKey.DMP_REQUEST_ID.concat(format));
// 转换DTO
List<ImeiDTO> toList = Convert.toList(ImeiDTO.class, taskImeiList);
Integer batch = ObjectUtil.isNull(num) ? DefaultNumberConstants.ONE_NUMBER : num + DefaultNumberConstants.ONE_NUMBER;
String taskImeiName = "BY".concat(StrPool.UNDERLINE).concat(format).concat(StrPool.UNDERLINE).concat(String.valueOf(batch));
String file = fileUrl.concat(StrPool.SLASH).concat(taskImeiName);
// 保存文件
String csvPath = file.concat(".csv");
CSVFileUtil.createCsvFile(toList, csvPath);
String zipPath = file.concat(".zip");
// 设置压缩文件
CompressUtil.decryptionCompression
(zipPath, csvPath, deliveryProperties.getZipPassword());
// 发送邮件
MailUtil.sendMail(deliveryProperties.getEmailAddress(),
deliveryProperties.getEmailPassword(),
deliveryProperties.getToEmailAddress(), zipPath, taskImeiName);
// 保存批次号
redisUtils.set(CacheKey.DMP_REQUEST_ID.concat(format), batch, DefaultNumberConstants.ONE_NUMBER, TimeUnit.DAYS);
// 修改状态 修改余额
taskImeiService.updateBath(taskId, CharSequenceUtil.EMPTY, DefaultNumberConstants.ONE_NUMBER);
deliveryRecordService.saveDeliveryRecord(zipPath, taskImeiName, taskImeiList.size(), taskId, userId);
companyService.updateUserBalanceByCompanyId(sub.doubleValue(), companyByUserId.getId());
// 删除文件
boolean csvResult = FileUtil.del(csvPath);
boolean zipResult = FileUtil.del(zipPath);
log.info("=========================== the csv path as {}, zip path as {} csvResult as {} zipResult as {} ========================", csvPath, zipPath, csvResult, zipResult);
&& ObjectUtil.isNotNull(companyByUserId.getTemplateId())
// 判断价格
&& ObjectUtil.isNotNull(companyByUserId.getDeliveryCallFee())) {
// 每次100000 数据
List<List<TaskImei>> lists = Lists.partition
(list, DefaultNumberConstants.ONE_HUNDRED_THOUSAND);
// 批量发送
for (List<TaskImei> taskImeiList : lists) {
// 大于100 进行兑换
if (taskImeiList.size() >= DefaultNumberConstants.ONE_HUNDRED) {
BigDecimal decimal = NumberUtil.mul(companyByUserId.getDeliveryCallFee(), BigDecimal.valueOf(taskImeiList.size()));
BigDecimal sub = NumberUtil.sub(companyByUserId.getUserBalance(), decimal);
// 判断余额
if (sub.compareTo(BigDecimal.valueOf
(DefaultNumberConstants.ZERO_NUMBER)) < DefaultNumberConstants.ZERO_NUMBER) {
continue;
}
String fileUrl = deliveryProperties.getFileUrl();
String format = DateUtil.format(DateUtil.date(), DatePattern.PURE_DATE_PATTERN);
Integer num = (Integer) redisUtils.get(CacheKey.DMP_REQUEST_ID.concat(format));
// 转换DTO
List<ImeiDTO> toList = Convert.toList(ImeiDTO.class, taskImeiList);
Integer batch = ObjectUtil.isNull(num) ? DefaultNumberConstants.ONE_NUMBER : num + DefaultNumberConstants.ONE_NUMBER;
String taskImeiName = "BY".concat(StrPool.UNDERLINE).concat(format).concat(StrPool.UNDERLINE).concat(String.valueOf(batch));
String file = fileUrl.concat(StrPool.SLASH).concat(taskImeiName);
// 保存文件
String csvPath = file.concat(".csv");
CSVFileUtil.createCsvFile(toList, csvPath);
String zipPath = file.concat(".zip");
// 设置压缩文件
CompressUtil.decryptionCompression
(zipPath, csvPath, deliveryProperties.getZipPassword());
// 发送邮件
MailUtil.sendMail(deliveryProperties.getEmailAddress(),
deliveryProperties.getEmailPassword(),
deliveryProperties.getToEmailAddress(), zipPath, taskImeiName);
// 保存批次号
redisUtils.set(CacheKey.DMP_REQUEST_ID.concat(format), batch, DefaultNumberConstants.ONE_NUMBER, TimeUnit.DAYS);
// 修改状态 修改余额
taskImeiService.updateBath(taskId, CharSequenceUtil.EMPTY, DefaultNumberConstants.ONE_NUMBER);
deliveryRecordService.saveDeliveryRecord(zipPath, taskImeiName, taskImeiList.size(), taskId, userId);
companyService.updateUserBalanceByCompanyId(sub.doubleValue(), companyByUserId.getId());
// 删除文件
boolean csvResult = FileUtil.del(csvPath);
boolean zipResult = FileUtil.del(zipPath);
log.info("=========================== the csv path as {}, zip path as {} csvResult as {} zipResult as {} ========================", csvPath, zipPath, csvResult, zipResult);
}
}
}

Loading…
Cancel
Save