diff --git a/src/main/java/com/m2pool/lease/mapper/LeaseMachineMapper.java b/src/main/java/com/m2pool/lease/mapper/LeaseMachineMapper.java index 1e54156..393fc22 100644 --- a/src/main/java/com/m2pool/lease/mapper/LeaseMachineMapper.java +++ b/src/main/java/com/m2pool/lease/mapper/LeaseMachineMapper.java @@ -99,13 +99,12 @@ public interface LeaseMachineMapper extends BaseMapper { */ int updateLockState(@Param("list") List asicMachines); - /** * 修改asic 矿机售出数量 - * @param gpuMachines + * @param list * @return */ - int updateLockNumbers(@Param("list") List gpuMachines); + boolean updateBatchLockNumbers(@Param("list") List list); diff --git a/src/main/java/com/m2pool/lease/service/impl/LeaseOrderInfoServiceImpl.java b/src/main/java/com/m2pool/lease/service/impl/LeaseOrderInfoServiceImpl.java index 9aaa32b..67083f6 100644 --- a/src/main/java/com/m2pool/lease/service/impl/LeaseOrderInfoServiceImpl.java +++ b/src/main/java/com/m2pool/lease/service/impl/LeaseOrderInfoServiceImpl.java @@ -905,8 +905,11 @@ public class LeaseOrderInfoServiceImpl extends ServiceImpl mergedAsicMachines = mergeMachines(asicMachines); + System.out.println("打印"+JSONUtil.toJsonPrettyStr(mergedAsicMachines)); + leaseMachineMapper.updateBatchLockNumbers(mergedAsicMachines); + i += asicMachines.size(); } if (i != machineIds.size()){ throw new OrderException("订单中已有商品售出,请刷新购物车删除已售出商品,重新结算生成订单"); @@ -915,8 +918,11 @@ public class LeaseOrderInfoServiceImpl extends ServiceImpl addressInfos = new ArrayList(); + if(!orderMiningInfoDtos.isEmpty()){ Map> collect = orderMiningInfoDtos.stream().collect(Collectors.groupingBy(OrderMiningInfoDto::getWalletAddress)); collect.forEach((address,list)->{ @@ -980,14 +986,13 @@ public class LeaseOrderInfoServiceImpl extends ServiceImpl mergeMachines(List 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()); + } } diff --git a/src/main/java/com/m2pool/lease/task/OrderAndPayTask.java b/src/main/java/com/m2pool/lease/task/OrderAndPayTask.java index d48bda9..85a5fec 100644 --- a/src/main/java/com/m2pool/lease/task/OrderAndPayTask.java +++ b/src/main/java/com/m2pool/lease/task/OrderAndPayTask.java @@ -769,26 +769,28 @@ public class OrderAndPayTask { .chain(LeaseOrderItem.getChain()).build()) .distinct() .collect(Collectors.toList()); - //查询到对应商铺对应的 chain 然后比较上面的链对应的地址是否改变 - List shopConfigList = leaseShopConfigMapper.selectShopConfigByShopIdAndSymbolAndChain(collect); List updateOrderItemList = new ArrayList<>(); - // 遍历 orderItemList - for (LeaseOrderItem orderItem : orderItemList) { - for (ShopConfigDelDto shopConfig : shopConfigList) { - // 检查 chain 和 shopId 是否相同 - if (orderItem.getShopId().equals(shopConfig.getShopId()) && - orderItem.getChain().equals(shopConfig.getChain())) { - // 检查 address 是否不同 - if (!orderItem.getAddress().equals(shopConfig.getPayAddress())) { - // 更新 orderItem 的 address - orderItem.setAddress(shopConfig.getPayAddress()); - updateOrderItemList.add(orderItem); + if (!collect.isEmpty()){ + //查询到对应商铺对应的 chain 然后比较上面的链对应的地址是否改变 + List shopConfigList = leaseShopConfigMapper.selectShopConfigByShopIdAndSymbolAndChain(collect); + // 遍历 orderItemList + for (LeaseOrderItem orderItem : orderItemList) { + for (ShopConfigDelDto shopConfig : shopConfigList) { + // 检查 chain 和 shopId 是否相同 + if (orderItem.getShopId().equals(shopConfig.getShopId()) && + orderItem.getChain().equals(shopConfig.getChain())) { + // 检查 address 是否不同 + if (!orderItem.getAddress().equals(shopConfig.getPayAddress())) { + // 更新 orderItem 的 address + orderItem.setAddress(shopConfig.getPayAddress()); + updateOrderItemList.add(orderItem); + } + break; } - break; } } + leaseOrderItemService.updateBatchById(updateOrderItemList); } - leaseOrderItemService.updateBatchById(updateOrderItemList); return orderItemList; } @@ -796,7 +798,7 @@ public class OrderAndPayTask { /** - *订单完成后---发送支付消息到mq 一个买家对应一个卖家 + *订单全部已完成 * @param orderIds */ public void sendMessageToMq(List orderIds){ diff --git a/src/main/java/com/m2pool/lease/utils/WalletRuleCheckUtils.java b/src/main/java/com/m2pool/lease/utils/WalletRuleCheckUtils.java index a7e8af4..3643feb 100644 --- a/src/main/java/com/m2pool/lease/utils/WalletRuleCheckUtils.java +++ b/src/main/java/com/m2pool/lease/utils/WalletRuleCheckUtils.java @@ -149,8 +149,8 @@ public class WalletRuleCheckUtils { } // ---------------NEXA校验------------------- - private static final Pattern NEXA_PATTERN = Pattern.compile("^nexa:[0-9a-zA-Z]{40}$"); - private static final Pattern NEXA_PATTERN2 = Pattern.compile("^[0-9a-zA-Z]{40}$"); + private static final Pattern NEXA_PATTERN = Pattern.compile("^nexa:[0-9a-zA-Z]{48}$"); + private static final Pattern NEXA_PATTERN2 = Pattern.compile("^[0-9a-zA-Z]{48}$"); public static boolean checkNEXA(String address) { if (address.startsWith("nexa:")){ return StringUtils.isNotEmpty(address) && NEXA_PATTERN.matcher(address).matches(); @@ -177,6 +177,6 @@ public class WalletRuleCheckUtils { return StringUtils.isNotEmpty( address) && CLORE_PATTERN.matcher(address).matches(); } public static void main(String[] args) { - + System.out.println(checkNEXA("0x550de999a4d8bd33dc5856d80ea3d196eac97427")); } } diff --git a/src/main/resources/mapper/lease/LeaseMachineMapper.xml b/src/main/resources/mapper/lease/LeaseMachineMapper.xml index 0b299fb..9521114 100644 --- a/src/main/resources/mapper/lease/LeaseMachineMapper.xml +++ b/src/main/resources/mapper/lease/LeaseMachineMapper.xml @@ -349,20 +349,6 @@ and sale_state = 0 - - - UPDATE lease_machine - SET - sale_out_numbers = #{item.saleOutNumbers}, - sale_state = CASE WHEN #{item.saleOutNumbers} = sale_numbers THEN 1 ELSE sale_state END, - can_sale_numbers = #{item.canSaleNumbers} - WHERE - id = #{item.id} - AND sale_out_numbers = #{item.lockNumbers} - - - - SELECT COUNT(*)