update 订单支付任务,优化部分修改业务
This commit is contained in:
@@ -141,6 +141,7 @@ public class OrderAndPayTask {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Scheduled(cron = "0 0/30 * * * ? ")
|
@Scheduled(cron = "0 0/30 * * * ? ")
|
||||||
|
//@Scheduled(cron = "0 40 2 * * ? ")
|
||||||
@Async("scheduledTaskExecutor")
|
@Async("scheduledTaskExecutor")
|
||||||
@DSTransactional
|
@DSTransactional
|
||||||
public void paymentTaskV2(){
|
public void paymentTaskV2(){
|
||||||
@@ -181,10 +182,10 @@ public class OrderAndPayTask {
|
|||||||
needPayInfos = updateOrderItemSellerWalletAddress(needPayInfos);
|
needPayInfos = updateOrderItemSellerWalletAddress(needPayInfos);
|
||||||
|
|
||||||
//1.处理需要支付的订单
|
//1.处理需要支付的订单
|
||||||
//根据 lease_order_item 中订单id 查找到 对应的lease_order_mining 信息
|
|
||||||
List<PurchasedMachineListDto> miningInfoByOrderId = leaseOrderMiningMapper.getMiningInfoByOrderId(needPayIds);
|
|
||||||
//根据lease_order_mining 中相关信息 钱包 + 币种 + 算法 + 矿工号 + 矿池名 找到对应的实时算力
|
//根据lease_order_mining 中相关信息 钱包 + 币种 + 算法 + 矿工号 + 矿池名 找到对应的实时算力
|
||||||
if (!miningInfoByOrderId.isEmpty()){
|
if (!needPayIds.isEmpty()){
|
||||||
|
//根据 lease_order_item 中订单id 查找到 对应的lease_order_mining 信息
|
||||||
|
List<PurchasedMachineListDto> miningInfoByOrderId = leaseOrderMiningMapper.getMiningInfoByOrderId(needPayIds);
|
||||||
Map<String, List<PurchasedMachineListDto>> collect = miningInfoByOrderId.stream().collect(Collectors.groupingBy(PurchasedMachineListDto::getPool));
|
Map<String, List<PurchasedMachineListDto>> collect = miningInfoByOrderId.stream().collect(Collectors.groupingBy(PurchasedMachineListDto::getPool));
|
||||||
|
|
||||||
//挖矿信息 与 订单详情id 映射
|
//挖矿信息 与 订单详情id 映射
|
||||||
@@ -306,7 +307,8 @@ public class OrderAndPayTask {
|
|||||||
// 开发环境 测试用1分钟当一天 差值改为差1分钟
|
// 开发环境 测试用1分钟当一天 差值改为差1分钟
|
||||||
//LocalDateTime endTime = orderTimeInfoDto.getCreateTime().plusMinutes(orderTimeInfoDto.getLeaseTime());
|
//LocalDateTime endTime = orderTimeInfoDto.getCreateTime().plusMinutes(orderTimeInfoDto.getLeaseTime());
|
||||||
// 获取订单完成的订单详情:比较 now 和 endTime 的年月日时分秒差值是否小于30分
|
// 获取订单完成的订单详情:比较 now 和 endTime 的年月日时分秒差值是否小于30分
|
||||||
if (Duration.between(now, endTime).toMinutes() <= 30) {
|
long minuteTime = Duration.between(now, endTime).toMinutes();
|
||||||
|
if (minuteTime <= 0) {
|
||||||
completeMachines.add(LeaseMachine.builder()
|
completeMachines.add(LeaseMachine.builder()
|
||||||
.id(orderTimeInfoDto.getProductMachineId())
|
.id(orderTimeInfoDto.getProductMachineId())
|
||||||
.canSaleNumbers(orderTimeInfoDto.getNumbers())
|
.canSaleNumbers(orderTimeInfoDto.getNumbers())
|
||||||
@@ -323,8 +325,8 @@ public class OrderAndPayTask {
|
|||||||
LocalTime startTime = orderTimeInfoDto.getCreateTime().toLocalTime();
|
LocalTime startTime = orderTimeInfoDto.getCreateTime().toLocalTime();
|
||||||
LocalDate nowDate = now.toLocalDate();
|
LocalDate nowDate = now.toLocalDate();
|
||||||
LocalDate startDate = orderTimeInfoDto.getCreateTime().toLocalDate();
|
LocalDate startDate = orderTimeInfoDto.getCreateTime().toLocalDate();
|
||||||
|
long minuteDate = Duration.between(startTime, nowTime).toMinutes();
|
||||||
if (!nowDate.equals(startDate) && Duration.between(startTime, nowTime).toMinutes() <= 30) {
|
if (!nowDate.equals(startDate) && minuteDate <= 30 && minuteDate >= 0) {
|
||||||
needPayIds.add(orderTimeInfoDto.getId());
|
needPayIds.add(orderTimeInfoDto.getId());
|
||||||
needPayInfos.add(orderTimeInfoDto);
|
needPayInfos.add(orderTimeInfoDto);
|
||||||
}
|
}
|
||||||
@@ -427,8 +429,6 @@ public class OrderAndPayTask {
|
|||||||
leaseOrderItemMapper.update(LeaseOrderItem.builder().status(0).build(), new LambdaUpdateWrapper<LeaseOrderItem>()
|
leaseOrderItemMapper.update(LeaseOrderItem.builder().status(0).build(), new LambdaUpdateWrapper<LeaseOrderItem>()
|
||||||
.in(LeaseOrderItem::getId, itemIds));
|
.in(LeaseOrderItem::getId, itemIds));
|
||||||
//修改商品库存矿机表 矿机状态为 0 未售出
|
//修改商品库存矿机表 矿机状态为 0 未售出
|
||||||
System.out.println("打印"+JSONUtil.toJsonPrettyStr(completeMachines));
|
|
||||||
// 合并相同 id 的机器,避免 SQL CASE WHEN 只执行第一条的问题
|
|
||||||
List<LeaseMachine> mergedMachines = mergeMachines(completeMachines);
|
List<LeaseMachine> mergedMachines = mergeMachines(completeMachines);
|
||||||
leaseMachineMapper.updateBatchSaleNumbers(mergedMachines);
|
leaseMachineMapper.updateBatchSaleNumbers(mergedMachines);
|
||||||
//挖矿订单信息 改为状态0 租约已过期
|
//挖矿订单信息 改为状态0 租约已过期
|
||||||
@@ -807,7 +807,7 @@ public class OrderAndPayTask {
|
|||||||
|
|
||||||
// 合并后的处理
|
// 合并后的处理
|
||||||
Map<String, List<LeasePayRecordMessageInfo>> infoMap = new HashMap<>();
|
Map<String, List<LeasePayRecordMessageInfo>> infoMap = new HashMap<>();
|
||||||
List<Long> shopIds = new ArrayList<>();
|
Set<Long> shopIds = new HashSet<>();
|
||||||
for (LeasePayRecordMessageInfo message : leasePayRecordMessages) {
|
for (LeasePayRecordMessageInfo message : leasePayRecordMessages) {
|
||||||
// 处理分组逻辑
|
// 处理分组逻辑
|
||||||
infoMap.computeIfAbsent(message.getOrderId(), k -> new ArrayList<>()).add(message);
|
infoMap.computeIfAbsent(message.getOrderId(), k -> new ArrayList<>()).add(message);
|
||||||
@@ -884,7 +884,6 @@ public class OrderAndPayTask {
|
|||||||
|
|
||||||
|
|
||||||
});
|
});
|
||||||
System.out.println("部分完成"+JSONUtil.toJsonPrettyStr(reocrdList));
|
|
||||||
leasePayRecordMessageService.saveBatch(reocrdList);
|
leasePayRecordMessageService.saveBatch(reocrdList);
|
||||||
|
|
||||||
// 合并相同查询条件的记录,避免 SQL CASE WHEN 只执行第一条的问题
|
// 合并相同查询条件的记录,避免 SQL CASE WHEN 只执行第一条的问题
|
||||||
@@ -892,7 +891,7 @@ public class OrderAndPayTask {
|
|||||||
int buyerUpdate = leaseUserWalletDataMapper.updateBalanceAndBlockBalance(mergedRecordList);
|
int buyerUpdate = leaseUserWalletDataMapper.updateBalanceAndBlockBalance(mergedRecordList);
|
||||||
int sellerUpdate = leaseShopConfigMapper.updateBalance(mergedRecordList);
|
int sellerUpdate = leaseShopConfigMapper.updateBalance(mergedRecordList);
|
||||||
|
|
||||||
if (buyerUpdate > 0 && sellerUpdate > 0){
|
if (buyerUpdate > 0 || sellerUpdate > 0){
|
||||||
for (LeasePayRecordMessage item : reocrdList) {
|
for (LeasePayRecordMessage item : reocrdList) {
|
||||||
recordLog(item);
|
recordLog(item);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -98,22 +98,11 @@
|
|||||||
</foreach>
|
</foreach>
|
||||||
ELSE balance
|
ELSE balance
|
||||||
END
|
END
|
||||||
WHERE pay_address IN (
|
WHERE (pay_address,pay_coin,chain) IN(
|
||||||
<foreach collection="list" item="item" separator=",">
|
<foreach collection="list" item="item" separator=",">
|
||||||
#{item.fromAddress}
|
(#{item.fromAddress}, #{item.fromSymbol}, #{item.fromChain})
|
||||||
</foreach>
|
</foreach>
|
||||||
)
|
) AND del = false
|
||||||
AND pay_coin IN (
|
|
||||||
<foreach collection="list" item="item" separator=",">
|
|
||||||
#{item.fromSymbol}
|
|
||||||
</foreach>
|
|
||||||
)
|
|
||||||
AND chain IN (
|
|
||||||
<foreach collection="list" item="item" separator=",">
|
|
||||||
#{item.fromChain}
|
|
||||||
</foreach>
|
|
||||||
)
|
|
||||||
AND del = false
|
|
||||||
|
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
|
|||||||
@@ -123,19 +123,9 @@
|
|||||||
</foreach>
|
</foreach>
|
||||||
ELSE blocked_balance
|
ELSE blocked_balance
|
||||||
END
|
END
|
||||||
WHERE from_address IN (
|
WHERE (from_address, from_symbol, from_chain) IN (
|
||||||
<foreach collection="list" item="item" separator=",">
|
<foreach collection="list" item="item" separator=",">
|
||||||
#{item.fromAddress}
|
(#{item.fromAddress}, #{item.fromSymbol}, #{item.fromChain})
|
||||||
</foreach>
|
|
||||||
)
|
|
||||||
AND from_symbol IN (
|
|
||||||
<foreach collection="list" item="item" separator=",">
|
|
||||||
#{item.fromSymbol}
|
|
||||||
</foreach>
|
|
||||||
)
|
|
||||||
AND from_chain IN (
|
|
||||||
<foreach collection="list" item="item" separator=",">
|
|
||||||
#{item.fromChain}
|
|
||||||
</foreach>
|
</foreach>
|
||||||
)
|
)
|
||||||
AND del = false
|
AND del = false
|
||||||
|
|||||||
Reference in New Issue
Block a user