From f85e151b3b5ec9a3640bea59accecf0dde493471 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A3=B7=E5=8F=B6?= <14103883+leaf-phos@user.noreply.gitee.com> Date: Fri, 25 Oct 2024 09:40:40 +0800 Subject: [PATCH] =?UTF-8?q?debug:=E8=AE=A2=E5=8D=95=E6=B5=81=E7=A8=8B?= =?UTF-8?q?=E4=BC=98=E5=8C=96=EF=BC=88=E5=BE=85=E6=B5=8B=E8=AF=95=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iot/service/impl/IotServiceImpl.java | 3 +++ .../ss/device/service/DeviceService.java | 4 +-- .../service/impl/DeviceServiceImpl.java | 19 ++++++++----- .../java/com/ruoyi/ss/store/domain/Store.java | 2 +- .../service/TransactionBillService.java | 3 ++- .../service/impl/RechargePayHandler.java | 8 +++--- .../impl/TransactionBillServiceImpl.java | 27 +++++++++---------- .../app/AppTransactionBillController.java | 3 +-- .../ss/SmTransactionBillController.java | 4 +-- 9 files changed, 39 insertions(+), 34 deletions(-) diff --git a/smart-switch-service/src/main/java/com/ruoyi/iot/service/impl/IotServiceImpl.java b/smart-switch-service/src/main/java/com/ruoyi/iot/service/impl/IotServiceImpl.java index d1b4edf6..c3c743fe 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/iot/service/impl/IotServiceImpl.java +++ b/smart-switch-service/src/main/java/com/ruoyi/iot/service/impl/IotServiceImpl.java @@ -105,6 +105,7 @@ public class IotServiceImpl implements IotService { CommandResponse response = sendCommand(deviceName, IotConstants.COMMAND_OPEN, productId); IotHttpStatus status = IotHttpStatus.convertByCode(response.getCode()); if (!IotHttpStatus.SUCCESS.equals(status)) { + log.error("{}通电异常:{}", deviceName, status.getMsg()); throw new ServiceException("通电发生异常:" + status.getMsg()); } return true; @@ -121,6 +122,7 @@ public class IotServiceImpl implements IotService { try { result = this.open(device.iotMac1(), device.getProductId()); if (!result) { + log.error("mac1通电失败:{}", device.iotMac1()); throw new ServiceException("mac1通电失败"); } } catch (Exception e) { @@ -137,6 +139,7 @@ public class IotServiceImpl implements IotService { CommandResponse response = sendCommand(deviceName, IotConstants.COMMAND_CLOSE, productId); IotHttpStatus status = IotHttpStatus.convertByCode(response.getCode()); if (!IotHttpStatus.SUCCESS.equals(status)) { + log.error("断电发生异常:{}, {}", deviceName, status.getMsg()); throw new ServiceException("断电发生异常:" + status.getMsg()); } return true; diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/device/service/DeviceService.java b/smart-switch-service/src/main/java/com/ruoyi/ss/device/service/DeviceService.java index 8269e4ba..84ce6c91 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/device/service/DeviceService.java +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/device/service/DeviceService.java @@ -372,10 +372,10 @@ public interface DeviceService /** * 设置电量 */ - int setEle(DeviceVO device, BigDecimal ele); + int setEle(DeviceVO device, BigDecimal ele, int tryCount); /** * 设置剩余时间 */ - int setTime(DeviceVO device, long seconds); + int setTime(DeviceVO device, long seconds, int tryCount); } diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/device/service/impl/DeviceServiceImpl.java b/smart-switch-service/src/main/java/com/ruoyi/ss/device/service/impl/DeviceServiceImpl.java index 47400615..3f91afdd 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/device/service/impl/DeviceServiceImpl.java +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/device/service/impl/DeviceServiceImpl.java @@ -776,17 +776,22 @@ public class DeviceServiceImpl implements DeviceService } @Override - public int setEle(DeviceVO device, BigDecimal ele) { - if (device == null || ele == null) { + public int setEle(DeviceVO device, BigDecimal ele, int tryCount) { + if (device == null || ele == null || tryCount <= 0) { + log.error("设置电量失败:参数为空"); return 0; } Integer result = transactionTemplate.execute(status -> { int update = this.updateSurplusEle(device.getDeviceId(), ele); ServiceUtil.assertion(update != 1, "更新设备数据失败"); - CommandResponse res = iotService.setEle(device, ele); - ServiceUtil.assertion(res == null, "发送命令失败:返回值为空"); - ServiceUtil.assertion(!res.isSuccess(), res.getMsg()); + CommandResponse res = iotService.trySetEle(device, ele, tryCount); + if (res == null || !res.isSuccess()) { + log.error("操作设备设置电量{}失败:{}", device.getDeviceId(), res); + ServiceUtil.assertion(res == null, "充值电量失败"); + IotHttpStatus statusResult = IotHttpStatus.convertByCode(res.getCode()); + ServiceUtil.assertion(!res.isSuccess(), "充值电量失败:" + statusResult.getMsg()); + } return update; }); @@ -795,8 +800,8 @@ public class DeviceServiceImpl implements DeviceService } @Override - public int setTime(DeviceVO device, long seconds) { - return this.setTime(device, LocalDateTime.now().plusSeconds(seconds), true, 1); + public int setTime(DeviceVO device, long seconds, int tryCount) { + return this.setTime(device, LocalDateTime.now().plusSeconds(seconds), true, tryCount); } private int updateSurplusEle(Long deviceId, BigDecimal ele) { diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/store/domain/Store.java b/smart-switch-service/src/main/java/com/ruoyi/ss/store/domain/Store.java index 31cca56c..e40bf02c 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/store/domain/Store.java +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/store/domain/Store.java @@ -149,7 +149,7 @@ public class Store extends BaseEntity private Boolean show; @ApiModelProperty("状态") - @JsonView(JsonViewProfile.App.class) + @JsonView({JsonViewProfile.App.class, StoreView.ListCount.class}) private String status; @ApiModelProperty("是否生效") diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/service/TransactionBillService.java b/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/service/TransactionBillService.java index e315d395..684fc351 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/service/TransactionBillService.java +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/service/TransactionBillService.java @@ -148,8 +148,9 @@ public interface TransactionBillService * 手动设备充值 * * @param billId + * @param tryCount */ - boolean rechargeDevice(Long billId); + boolean rechargeDevice(Long billId, int tryCount); /** * 查询设备充值失败列表 diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/service/impl/RechargePayHandler.java b/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/service/impl/RechargePayHandler.java index 4ecae373..bf591288 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/service/impl/RechargePayHandler.java +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/service/impl/RechargePayHandler.java @@ -124,13 +124,13 @@ public class RechargePayHandler implements AfterPay, AfterRefund { // 操作成功 if (result != null && result == 1) { - // 充值设备,尝试1次 - transactionBillService.tryRechargeDevice(bill.getBillId(), 1); + // 充值设备,尝试3次 + transactionBillService.rechargeDevice(bill.getBillId(), 3); - // 设备设置语音播报 + // 5秒后,设备设置语音播报 scheduledExecutorService.schedule(() -> { transactionBillService.trySetVoice(bill, 3); - }, 0, TimeUnit.SECONDS); + }, 5, TimeUnit.SECONDS); } return result == null ? 0 : result; 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 6f7f74ea..29c4593c 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 @@ -588,7 +588,7 @@ public class TransactionBillServiceImpl implements TransactionBillService, After } } } - + // 判断今天提现成功和正在审核中的提现是否超过限额 String dailyLimitStr = sysConfigService.selectConfigByKey(ConfigKey.DAILY_WITHDRAW_AMOUNT.getKey()); String dailyLimitCountStr = sysConfigService.selectConfigByKey(ConfigKey.DAILY_WITHDRAW_COUNT.getKey()); @@ -886,10 +886,12 @@ public class TransactionBillServiceImpl implements TransactionBillService, After } /** - * 设备充值 + * 订单设备充值 + * @param billId 订单ID + * @param tryCount 尝试次数 */ @Override - public boolean rechargeDevice(Long billId) { + public boolean rechargeDevice(Long billId, int tryCount) { ServiceUtil.assertion(billId == null, "参数错误,billId不允许为空"); // ServiceUtil.assertion(!redisLock.lock(RedisLockKey.RECHARGE_DEVICE, billId), "当前设备充值请求过于频繁,请等待"); try { @@ -906,18 +908,16 @@ public class TransactionBillServiceImpl implements TransactionBillService, After // 设备开启状态描述 AtomicReference openMsg = new AtomicReference<>("成功"); + // 获取最新设备信息 + DeviceVO device = deviceService.selectById(bill.getDeviceId()); + deviceService.pullDeviceInfo(device); Boolean result = transactionTemplate.execute(status -> { - // 刷新设备数据 - deviceService.pullDeviceInfo(bill.getDeviceId()); - - DeviceVO device = deviceService.selectById(bill.getDeviceId()); - - // 更新套餐使用信息 + // 更新订单套餐使用信息 int updateInfo = this.updateSuitInfoBeforeDevice(bill, device); ServiceUtil.assertion(updateInfo != 1, "更新套餐使用信息失败"); - // 修改设备充值状态:成功 + // 更新订单设备充值状态:成功 int updateRecharge = transactionBillMapper.updateDeviceRechargeStatus( bill.getBillId(), TransactionBillDeviceRechargeStatus.SUCCESS.getStatus(), @@ -930,12 +930,12 @@ public class TransactionBillServiceImpl implements TransactionBillService, After if (SuitFeeType.TIME.getType().equals(bill.getSuitFeeType())) { // 设备设置时长 long seconds = transactionBillConverter.toRechargeSeconds(bill); - int setTime = deviceService.setTime(device, seconds); + int setTime = deviceService.setTime(device, seconds, tryCount); ServiceUtil.assertion(setTime != 1, "设备时长充值失败"); } else if (SuitFeeType.COUNT.getType().equals(bill.getSuitFeeType())) { // 设备设置电量 BigDecimal ele = transactionBillConverter.toRechargeEle(bill); - int setEle = deviceService.setEle(device, ele); + int setEle = deviceService.setEle(device, ele, tryCount); ServiceUtil.assertion(setEle != 1, "设备时长充值失败"); } else { throw new ServiceException("不支持的套餐类型"); @@ -973,7 +973,6 @@ public class TransactionBillServiceImpl implements TransactionBillService, After /** * 在设备充值成功前,更新套餐使用信息 - * 开始时间 = 设备过期时间 - 套餐时间,过期时间 = 设备过期时间 */ private int updateSuitInfoBeforeDevice(TransactionBillVO bill, DeviceVO device) { if (bill == null || device == null) { @@ -1057,7 +1056,7 @@ public class TransactionBillServiceImpl implements TransactionBillService, After return; } try { - boolean result = rechargeDevice(billId); + boolean result = rechargeDevice(billId, 1); ServiceUtil.assertion(!result, String.format("尝试充值设备失败:billId=%s:剩余次数:%s,", billId, tryCount - 1)); } catch (Exception e) { this.tryRechargeDevice(billId, tryCount - 1); diff --git a/smart-switch-web/src/main/java/com/ruoyi/web/controller/app/AppTransactionBillController.java b/smart-switch-web/src/main/java/com/ruoyi/web/controller/app/AppTransactionBillController.java index 6a94a4e2..aab332e5 100644 --- a/smart-switch-web/src/main/java/com/ruoyi/web/controller/app/AppTransactionBillController.java +++ b/smart-switch-web/src/main/java/com/ruoyi/web/controller/app/AppTransactionBillController.java @@ -7,7 +7,6 @@ import com.ruoyi.common.core.domain.JsonViewProfile; import com.ruoyi.common.core.domain.ValidGroup; import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.core.page.TableDataInfo; -import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.ServiceUtil; import com.ruoyi.dashboard.domain.vo.BillCountVo; @@ -365,7 +364,7 @@ public class AppTransactionBillController extends BaseController if (bill == null) { return error("订单不存在"); } - return success(transactionBillService.rechargeDevice(bill.getBillId())); + return success(transactionBillService.rechargeDevice(bill.getBillId(), 1)); } } diff --git a/smart-switch-web/src/main/java/com/ruoyi/web/controller/ss/SmTransactionBillController.java b/smart-switch-web/src/main/java/com/ruoyi/web/controller/ss/SmTransactionBillController.java index cdd8e70f..47b2f028 100644 --- a/smart-switch-web/src/main/java/com/ruoyi/web/controller/ss/SmTransactionBillController.java +++ b/smart-switch-web/src/main/java/com/ruoyi/web/controller/ss/SmTransactionBillController.java @@ -20,7 +20,6 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -29,7 +28,6 @@ import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.enums.BusinessType; -import com.ruoyi.ss.transactionBill.domain.TransactionBill; import com.ruoyi.ss.transactionBill.service.TransactionBillService; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.core.page.TableDataInfo; @@ -140,7 +138,7 @@ public class SmTransactionBillController extends BaseController @GetMapping("/rechargeDevice/{billId}") @Log(title = "手动设备充值", businessType = BusinessType.UPDATE) public AjaxResult rechargeDevice(@PathVariable Long billId) { - return toAjax(transactionBillService.rechargeDevice(billId)); + return toAjax(transactionBillService.rechargeDevice(billId, 1)); } // 订单退款