update 删除部分未用到的引用

This commit is contained in:
yyb
2026-01-07 10:37:24 +08:00
parent 7627b8962d
commit db8384f04b
8 changed files with 101 additions and 20 deletions

View File

@@ -138,7 +138,7 @@ public class OrderAndPayTask {
}
@Scheduled(cron = "0 0/2 * * * ? ")
@Scheduled(cron = "0 0/1 * * * ? ")
@Async("scheduledTaskExecutor")
@DSTransactional
public void paymentTaskV2(){
@@ -303,10 +303,9 @@ public class OrderAndPayTask {
//LocalDateTime endTime = orderTimeInfoDto.getCreateTime().plusDays(orderTimeInfoDto.getLeaseTime());
//TODO 开发环境测试用1分钟当一天 差值改为差1分钟
LocalDateTime endTime = orderTimeInfoDto.getCreateTime().plusMinutes(orderTimeInfoDto.getLeaseTime() * 2);
System.out.println("支付开始"+"开始时间"+now+ "结束时间"+endTime+ "差值:"+Duration.between(now, endTime).toMinutes());
// 获取订单完成的订单详情:比较 now 和 endTime 的年月日时分秒差值是否小于30分
if (Duration.between(now, endTime).toMinutes() <= 2) {
LocalDateTime endTime = orderTimeInfoDto.getCreateTime().plusMinutes(orderTimeInfoDto.getLeaseTime() );
// 获取订单完成的订单详情:比较 now 和 endTime 的年月日时分秒差值是否小于30分
if (Duration.between(now, endTime).toMinutes() <= 1) {
completeMachines.add(LeaseMachine.builder()
.id(orderTimeInfoDto.getProductMachineId())
.canSaleNumbers(orderTimeInfoDto.getNumbers())
@@ -427,12 +426,77 @@ public class OrderAndPayTask {
leaseOrderItemMapper.update(LeaseOrderItem.builder().status(0).build(), new LambdaUpdateWrapper<LeaseOrderItem>()
.in(LeaseOrderItem::getId, itemIds));
//修改商品库存矿机表 矿机状态为 0 未售出
leaseMachineMapper.updateBatchSaleNumbers(completeMachines);
System.out.println("打印"+JSONUtil.toJsonPrettyStr(completeMachines));
// 合并相同 id 的机器,避免 SQL CASE WHEN 只执行第一条的问题
List<LeaseMachine> mergedMachines = mergeMachines(completeMachines);
leaseMachineMapper.updateBatchSaleNumbers(mergedMachines);
//挖矿订单信息 改为状态0 租约已过期
leaseOrderMiningMapper.update(LeaseOrderMining.builder().status(false).build(), new LambdaUpdateWrapper<LeaseOrderMining>()
.in(LeaseOrderMining::getOrderItemId, itemIds));
}
/**
* 合并相同 id 的机器,避免 SQL CASE WHEN 只执行第一条的问题
* @param machines 机器列表
* @return 合并后的机器列表
*/
private List<LeaseMachine> mergeMachines(List<LeaseMachine> machines) {
if (machines == null || machines.isEmpty()) {
return new ArrayList<>();
}
return new ArrayList<>(machines.stream()
.collect(Collectors.groupingBy(
LeaseMachine::getId,
Collectors.collectingAndThen(
Collectors.toList(),
list -> {
LeaseMachine merged = list.get(0);
Integer totalSaleOutNumbers = list.stream()
.mapToInt(m -> m.getSaleOutNumbers() != null ? m.getSaleOutNumbers() : 0)
.sum();
Integer totalCanSaleNumbers = list.stream()
.mapToInt(m -> m.getCanSaleNumbers() != null ? m.getCanSaleNumbers() : 0)
.sum();
merged.setSaleOutNumbers(totalSaleOutNumbers);
merged.setCanSaleNumbers(totalCanSaleNumbers);
return merged;
}
)
))
.values());
}
/**
* 合并相同查询条件的支付记录消息,避免 SQL CASE WHEN 只执行第一条的问题
* @param records 支付记录消息列表
* @return 合并后的支付记录消息列表
*/
private List<LeasePayRecordMessage> mergePayRecordMessages(List<LeasePayRecordMessage> records) {
if (records == null || records.isEmpty()) {
return new ArrayList<>();
}
return new ArrayList<>(records.stream()
.collect(Collectors.groupingBy(
r -> r.getFromAddress() + "_" + r.getFromSymbol() + "_" + r.getFromChain(),
Collectors.collectingAndThen(
Collectors.toList(),
list -> {
LeasePayRecordMessage merged = list.get(0);
BigDecimal totalRealAmount = list.stream()
.map(r -> r.getRealAmount() != null ? r.getRealAmount() : BigDecimal.ZERO)
.reduce(BigDecimal.ZERO, BigDecimal::add);
BigDecimal totalBlockAmount = list.stream()
.map(r -> r.getBlockAmount() != null ? r.getBlockAmount() : BigDecimal.ZERO)
.reduce(BigDecimal.ZERO, BigDecimal::add);
merged.setRealAmount(totalRealAmount);
merged.setBlockAmount(totalBlockAmount);
return merged;
}
)
))
.values());
}
/**
* 支付 定时任务
*/
@@ -819,8 +883,11 @@ public class OrderAndPayTask {
});
System.out.println("部分完成"+JSONUtil.toJsonPrettyStr(reocrdList));
leasePayRecordMessageService.saveBatch(reocrdList);
int buyerUpdate = leaseUserWalletDataMapper.updateBalanceAndBlockBalance(reocrdList);
int sellerUpdate = leaseShopConfigMapper.updateBalance(reocrdList);
// 合并相同查询条件的记录,避免 SQL CASE WHEN 只执行第一条的问题
List<LeasePayRecordMessage> mergedRecordList = mergePayRecordMessages(reocrdList);
int buyerUpdate = leaseUserWalletDataMapper.updateBalanceAndBlockBalance(mergedRecordList);
int sellerUpdate = leaseShopConfigMapper.updateBalance(mergedRecordList);
if (buyerUpdate > 0 && sellerUpdate > 0){
for (LeasePayRecordMessage item : reocrdList) {