From 8a1ad7c92992358a2b31f3838d9d9c37bcf9f8d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A2=A8=E5=A4=A7=E5=8F=94?= <494979559@qq.com> Date: Fri, 24 May 2024 13:53:36 +0800 Subject: [PATCH] =?UTF-8?q?debug=20=E8=93=9D=E7=89=99=E5=85=85=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../device/service/impl/SmDeviceServiceImpl.java | 16 +++++++++------- .../transactionBill/domain/TransactionBill.java | 4 ++++ .../mapper/TransactionBillMapper.xml | 12 +++++++++++- .../service/impl/TransactionBillServiceImpl.java | 15 ++++++++++++++- .../java/com/ruoyi/task/device/DeviceTask.java | 8 ++++---- 5 files changed, 42 insertions(+), 13 deletions(-) diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/device/service/impl/SmDeviceServiceImpl.java b/smart-switch-service/src/main/java/com/ruoyi/ss/device/service/impl/SmDeviceServiceImpl.java index 0e21542a..673f1a73 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/device/service/impl/SmDeviceServiceImpl.java +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/device/service/impl/SmDeviceServiceImpl.java @@ -26,6 +26,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.support.TransactionTemplate; @@ -271,7 +272,9 @@ public class SmDeviceServiceImpl implements ISmDeviceService ServiceUtil.assertion(!StringUtils.hasText(device.getMac()), "设备MAC号为空"); ServiceUtil.assertion(DeviceStatus.FIXING.getStatus().equals(device.getStatus()), "设备正在维修中,无法使用"); - Boolean result = transactionTemplate.execute(status -> { + // 开启一个新的事务 + TransactionTemplate newTransaction = new TransactionTemplate(); + Boolean result = newTransaction.execute(status -> { // 更新数据库时长 int updateCount = smDeviceMapper.addTime(deviceId, num); ServiceUtil.assertion(updateCount != 1, "增加时长失败,请刷新后重试"); @@ -317,19 +320,18 @@ public class SmDeviceServiceImpl implements ISmDeviceService return; } LocalDateTime now = LocalDateTime.now(); + Duration between = Duration.between(now, device.getExpireTime()); // 如果已过期,则调整设备为正常状态 - if (device.getExpireTime().isBefore(now) || device.getExpireTime().isEqual(now)) { - int i = smDeviceMapper.changeTimeoutStatus(device.getDeviceId()); - if (i == 1) { - return; - } + int i = smDeviceMapper.changeTimeoutStatus(device.getDeviceId()); + if (i == 1) { + return; } // 如果没有过期,则延迟至过期时间继续查询 scheduledExecutorService.schedule(() -> { freshStatus(device.getDeviceId()); - }, device.getExpireTime().until(LocalDateTime.now(), ChronoUnit.MINUTES), TimeUnit.MINUTES); + }, between.getSeconds() , TimeUnit.SECONDS); } private int changeStatus(Long deviceId, DeviceStatus status) { diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/domain/TransactionBill.java b/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/domain/TransactionBill.java index 1344d4ac..f93c7d04 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/domain/TransactionBill.java +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/domain/TransactionBill.java @@ -157,4 +157,8 @@ public class TransactionBill extends BaseEntity @JsonView(JsonViewProfile.App.class) private String suitName; + @ApiModelProperty("设备MAC") + @JsonView(JsonViewProfile.App.class) + private String deviceMac; + } diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/mapper/TransactionBillMapper.xml b/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/mapper/TransactionBillMapper.xml index edc1d9af..38b098e6 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/mapper/TransactionBillMapper.xml +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/mapper/TransactionBillMapper.xml @@ -41,6 +41,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" stb.device_name, stb.device_no, stb.suit_name, + stb.device_mac, su.user_name user_name, su1.user_name mch_name from sm_transaction_bill stb @@ -70,6 +71,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and stb.device_recharge_status = #{deviceRechargeStatus} and stb.suit_id = #{suitId} and stb.store_id = #{storeId} + + and stb.bill_id in + + #{item} + + and stb.device_recharge_status in @@ -206,6 +213,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" device_name, device_no, suit_name, + device_mac, #{billNo}, @@ -239,6 +247,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{deviceName}, #{deviceNo}, #{suitName}, + #{deviceMac}, @@ -274,6 +283,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" device_name = #{deviceName}, device_no = #{deviceNo}, suit_name = #{suitName}, + device_mac = #{deviceMac}, where bill_id = #{billId} @@ -371,6 +381,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update sm_transaction_bill set device_recharge_status = '1' - where bill_no = #{billNo} and type = '1' and device_recharge_status = '3' + where bill_no = #{billNo} and type = '1' and device_recharge_status = '3' and status = '2' diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/service/impl/TransactionBillServiceImpl.java b/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/service/impl/TransactionBillServiceImpl.java index 50626e53..196266dc 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/service/impl/TransactionBillServiceImpl.java +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/service/impl/TransactionBillServiceImpl.java @@ -41,6 +41,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Isolation; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.support.TransactionTemplate; import java.math.BigDecimal; import java.math.RoundingMode; @@ -103,6 +104,8 @@ public class TransactionBillServiceImpl implements TransactionBillService { @Value("${sm.withdraw.password.enable}") private Boolean smWithdrawPasswordEnable; // 是否开启提现密码 + @Autowired + private TransactionTemplate transactionTemplate; /** * 查询充值记录 @@ -225,6 +228,7 @@ public class TransactionBillServiceImpl implements TransactionBillService { order.setDeviceId(device.getDeviceId()); order.setMchId(device.getUserId()); // 到账人ID order.setDeviceName(device.getDeviceName()); + order.setDeviceMac(device.getMac()); // 店铺信息 order.setStoreId(device.getStoreId()); @@ -796,6 +800,15 @@ public class TransactionBillServiceImpl implements TransactionBillService { */ @Override public boolean bluetoothRechargeSuccess(String billNo) { - return transactionBillMapper.bluetoothRechargeSuccess(billNo) == 1; + Boolean execute = transactionTemplate.execute(status -> { + TransactionBill bill = selectSmTransactionBillByBillNo(billNo); + ServiceUtil.assertion(bill == null, "订单不存在", 10001); + ServiceUtil.assertion(!TransactionBillType.RECHARGE.getType().equals(bill.getType()), "该订单不是充值订单", 10002); + ServiceUtil.assertion(TransactionBillDeviceRechargeStatus.SUCCESS.getStatus().equals(bill.getDeviceRechargeStatus()), "设备已充值成功,请勿重复充值", 10003); + ServiceUtil.assertion(!TransactionBillStatus.SUCCESS.getStatus().equals(bill.getStatus()), "订单尚未充值成功", 10004); + return transactionBillMapper.bluetoothRechargeSuccess(billNo) == 1; + }); + + return execute != null && execute; } } diff --git a/smart-switch-service/src/main/java/com/ruoyi/task/device/DeviceTask.java b/smart-switch-service/src/main/java/com/ruoyi/task/device/DeviceTask.java index ac2a8628..0d99f7ce 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/task/device/DeviceTask.java +++ b/smart-switch-service/src/main/java/com/ruoyi/task/device/DeviceTask.java @@ -19,10 +19,10 @@ public class DeviceTask { private ISmMeterReadingRecordService smMeterReadingRecordService; // 定时拉取设备信息 - public void pullDeviceInfo() throws InterruptedException { - smDeviceService.pullDeviceInfo(null); - Thread.sleep(3000); // 睡眠3秒,防止quartz重复调度 - } +// public void pullDeviceInfo() throws InterruptedException { +// smDeviceService.pullDeviceInfo(null); +// Thread.sleep(3000); // 睡眠3秒,防止quartz重复调度 +// } // 定时抄表 public void recordElectriQuantity() throws InterruptedException {