From b65b3c952822547db85d5b924c12eb1ebd89b4a7 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: Thu, 17 Oct 2024 18:04:05 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=B4=E6=97=B6=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/common/utils/ServiceUtil.java | 6 ------ .../ss/device/service/DeviceValidator.java | 5 +++++ .../service/impl/DeviceServiceImpl.java | 4 +++- .../service/impl/DeviceValidatorImpl.java | 19 +++++++++++++++++++ .../impl/TransactionBillServiceImpl.java | 4 ++-- 5 files changed, 29 insertions(+), 9 deletions(-) diff --git a/smart-switch-ruoyi/smart-switch-common/src/main/java/com/ruoyi/common/utils/ServiceUtil.java b/smart-switch-ruoyi/smart-switch-common/src/main/java/com/ruoyi/common/utils/ServiceUtil.java index 0abefae4..e260fd87 100644 --- a/smart-switch-ruoyi/smart-switch-common/src/main/java/com/ruoyi/common/utils/ServiceUtil.java +++ b/smart-switch-ruoyi/smart-switch-common/src/main/java/com/ruoyi/common/utils/ServiceUtil.java @@ -32,12 +32,6 @@ public class ServiceUtil { } } - public static void assertion(boolean flag, ServiceCode code) { - if (flag) { - throw new ServiceException(code.getMsg(), code.getCode()); - } - } - public static void assertion(ValidateResult result) { if (result.isError()) { throw new ServiceException(result.getMsg(), result.getCode()); diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/device/service/DeviceValidator.java b/smart-switch-service/src/main/java/com/ruoyi/ss/device/service/DeviceValidator.java index 483ba5fc..8a1f9eec 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/device/service/DeviceValidator.java +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/device/service/DeviceValidator.java @@ -68,4 +68,9 @@ public interface DeviceValidator { * @param userId 用户ID */ boolean isAgent(DeviceVO device, Long userId); + + /** + * 判断判断设备是否有正在使用中的订单 + */ + boolean hasUsingBill(Long deviceId); } 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 81646080..0eaa4624 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 @@ -9,6 +9,7 @@ import com.ruoyi.common.enums.UserType; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.*; import com.ruoyi.common.utils.collection.CollectionUtils; +import com.ruoyi.dashboard.domain.vo.BillCountVo; import com.ruoyi.iot.domain.IotDeviceInfo; import com.ruoyi.iot.domain.response.CommandResponse; import com.ruoyi.iot.enums.IotHttpStatus; @@ -1393,7 +1394,8 @@ public class DeviceServiceImpl implements DeviceService public int unbind(Long deviceId) { DeviceVO device = deviceMapper.selectSmDeviceByDeviceId(deviceId); ServiceUtil.assertion(device == null || device.getDeleted(), "设备不存在"); - ServiceUtil.assertion(DeviceStatus.USING.getStatus().equals(device.getStatus()), "设备正在使用中,无法解除绑定"); + // 判断是否有正在使用中的订单 + ServiceUtil.assertion(deviceValidator.hasUsingBill(device.getDeviceId()), "当前设备有正在使用中的订单,请关闭后重试"); Integer result = transactionTemplate.execute(status -> { int updateCount = deviceMapper.unbindStore(deviceId); diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/device/service/impl/DeviceValidatorImpl.java b/smart-switch-service/src/main/java/com/ruoyi/ss/device/service/impl/DeviceValidatorImpl.java index a8c1569a..8ef08162 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/device/service/impl/DeviceValidatorImpl.java +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/device/service/impl/DeviceValidatorImpl.java @@ -15,6 +15,9 @@ import com.ruoyi.ss.device.service.DeviceValidator; import com.ruoyi.ss.model.domain.enums.ModelTag; import com.ruoyi.ss.store.service.StoreValidator; import com.ruoyi.ss.suit.service.SuitValidator; +import com.ruoyi.ss.transactionBill.domain.TransactionBillQuery; +import com.ruoyi.ss.transactionBill.domain.enums.TransactionBillType; +import com.ruoyi.ss.transactionBill.service.TransactionBillService; import org.eclipse.jetty.util.StringUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -37,6 +40,9 @@ public class DeviceValidatorImpl extends BaseValidator implements DeviceValidato @Autowired private SuitValidator suitValidator; + @Autowired + private TransactionBillService transactionBillService; + /** * 设备编号是否存在 * @@ -204,4 +210,17 @@ public class DeviceValidatorImpl extends BaseValidator implements DeviceValidato } return Objects.equals(device.getAgentId(), userId); } + + @Override + public boolean hasUsingBill(Long deviceId) { + if (deviceId == null) { + return false; + } + TransactionBillQuery query = new TransactionBillQuery(); + query.setDeviceId(deviceId); + query.setType(TransactionBillType.RECHARGE.getType()); + query.setIsUsing(true); + int count = transactionBillService.selectSimpleCount(query); + return count > 0; + } } 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 469693e0..d866993d 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 @@ -1341,9 +1341,9 @@ public class TransactionBillServiceImpl implements TransactionBillService, After // 尝试设备清零时长、电量 if (withDevice) { if (SuitFeeType.COUNT.getType().equals(order.getSuitFeeType())) { - deviceService.resetEle(device, true); + deviceService.resetEle(device, false); } else if(SuitFeeType.TIME.getType().equals(order.getSuitFeeType())){ - deviceService.resetTime(device, true); + deviceService.resetTime(device, false); } }