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