From 099249122f211459d8681e543e0a3717dd21e524 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A2=A8=E5=A4=A7=E5=8F=94?= <494979559@qq.com> Date: Mon, 15 Jul 2024 17:56:58 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=AD=A3=E5=9C=A8=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E4=B8=AD=E7=9A=84=E8=AE=BE=E5=A4=87=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/TransactionBillServiceImpl.java | 28 ++++++++++++------- .../web/controller/ss/SmDeviceController.java | 19 +++++++++---- 2 files changed, 31 insertions(+), 16 deletions(-) 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 9e5b97de..36b19375 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 @@ -571,9 +571,10 @@ public class TransactionBillServiceImpl implements TransactionBillService { // 修改设备充值状态:成功 if (success) { - transactionBillMapper.updateDeviceRechargeStatus(bill.getBillId(), TransactionBillDeviceRechargeStatus.SUCCESS.getStatus()); SmDeviceVO device = deviceService.selectSmDeviceByDeviceId(bill.getDeviceId()); - this.updateSuitTimeAfterDevice(billId, device.getExpireTime()); + this.updateSuitTimeBeforeDevice(billId, device.getExpireTime()); + + transactionBillMapper.updateDeviceRechargeStatus(bill.getBillId(), TransactionBillDeviceRechargeStatus.SUCCESS.getStatus()); } return true; @@ -583,13 +584,19 @@ public class TransactionBillServiceImpl implements TransactionBillService { * 在设备充值成功后,更新套餐时间 * 开始时间 = 设备过期时间 - 套餐时间,过期时间 = 设备过期时间 */ - private int updateSuitTimeAfterDevice(Long billId, LocalDateTime deviceExpireTime) { - TransactionBill bill = new TransactionBill(); - bill.setBillId(billId); - bill.setSuitStartTime(deviceExpireTime.plusMinutes(-bill.getSuitTime().longValue())); - bill.setSuitEndTime(deviceExpireTime); - bill.setSuitExpireTime(deviceExpireTime); - return transactionBillMapper.updateSmTransactionBill(bill); + private int updateSuitTimeBeforeDevice(Long billId, LocalDateTime deviceExpireTime) { + TransactionBillVo bill = this.selectSmTransactionBillByBillId(billId); + if (bill == null) { + return 0; + } + + LocalDateTime endTime = deviceExpireTime.plusMinutes(bill.getSuitTime().longValue()); + TransactionBill data = new TransactionBill(); + data.setBillId(billId); + data.setSuitStartTime(deviceExpireTime); + data.setSuitEndTime(endTime); + data.setSuitExpireTime(endTime); + return transactionBillMapper.updateSmTransactionBill(data); } /** @@ -826,6 +833,7 @@ public class TransactionBillServiceImpl implements TransactionBillService { * @return */ @Override + @Transactional public boolean bluetoothRechargeSuccess(String billNo) { Boolean execute = transactionTemplate.execute(status -> { TransactionBill bill = selectSmTransactionBillByBillNo(billNo); @@ -838,7 +846,7 @@ public class TransactionBillServiceImpl implements TransactionBillService { // 更新套餐时间 SmDeviceVO afterDevice = deviceService.selectSmDeviceByDeviceId(bill.getDeviceId()); - this.updateSuitTimeAfterDevice(bill.getBillId(), afterDevice.getExpireTime()); + this.updateSuitTimeBeforeDevice(bill.getBillId(), afterDevice.getExpireTime()); boolean addTime = deviceService.addTime(bill.getDeviceId(), bill.getSuitTime(), false); ServiceUtil.assertion(!addTime, "修改剩余时间失败"); diff --git a/smart-switch-web/src/main/java/com/ruoyi/web/controller/ss/SmDeviceController.java b/smart-switch-web/src/main/java/com/ruoyi/web/controller/ss/SmDeviceController.java index 6ffc734e..9b1bf857 100644 --- a/smart-switch-web/src/main/java/com/ruoyi/web/controller/ss/SmDeviceController.java +++ b/smart-switch-web/src/main/java/com/ruoyi/web/controller/ss/SmDeviceController.java @@ -7,12 +7,12 @@ import java.util.List; import javax.servlet.http.HttpServletResponse; import com.ruoyi.common.core.domain.ValidGroup; +import com.ruoyi.common.utils.ServiceUtil; import com.ruoyi.ss.device.domain.SmDeviceBO; import com.ruoyi.ss.device.domain.dto.DeviceBatchUpdateModelDTO; import com.ruoyi.ss.device.service.DeviceAssembler; import com.ruoyi.ss.device.domain.SmDeviceQuery; import com.ruoyi.ss.device.domain.vo.SmDeviceVO; -import com.ruoyi.ss.device.service.DeviceValidator; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.springframework.security.access.prepost.PreAuthorize; @@ -30,8 +30,6 @@ import com.ruoyi.common.core.page.TableDataInfo; /** * 设备Controller * - * @author 邱贞招 - * @date 2024-02-21 */ @RestController @RequestMapping("/system/device") @@ -40,9 +38,6 @@ public class SmDeviceController extends BaseController @Autowired private DeviceService smDeviceService; - @Autowired - private DeviceValidator deviceValidator; - @Autowired private DeviceAssembler deviceAssembler; @@ -149,32 +144,44 @@ public class SmDeviceController extends BaseController } @ApiOperation("绑定SN码") + @PreAuthorize("@ss.hasPermi('system:device:bindSn')") @PutMapping("/{deviceId}/bindSn/{sn}") public AjaxResult bindSn(@PathVariable @ApiParam("设备ID") Long deviceId, @PathVariable @ApiParam("SN") String sn) { return success(smDeviceService.bindSn(deviceId, sn)); } @ApiOperation("设备充值时长") + @PreAuthorize("@ss.hasPermi('system:device:addTime')") @PutMapping("/addTime/{deviceId}") public AjaxResult addTime(@PathVariable @ApiParam("设备id") Long deviceId, @ApiParam("电量(度)") BigDecimal amount) { return toAjax(smDeviceService.addTimeByUser(deviceId, amount, true, "管理员手动充值")); } @ApiOperation("设备时长归零") + @PreAuthorize("@ss.hasPermi('system:device:reset')") @PutMapping("/{deviceId}/reset") public AjaxResult reset(@PathVariable @ApiParam("设备id") Long deviceId) { return success(smDeviceService.reset(deviceId)); } @ApiOperation("设备开关") + @PreAuthorize("@ss.hasPermi('system:device:switch')") @PutMapping("/{deviceId}/switch") public AjaxResult switchDevice(@PathVariable Long deviceId, @RequestParam Boolean open) { return toAjax(smDeviceService.switchDevice(deviceId, open)); } @ApiOperation("设备批量修改型号") + @PreAuthorize("@ss.hasPermi('system:device:edit')") @PutMapping("/batchUpdateModel") public AjaxResult batchUpdateModel(@RequestBody @Validated DeviceBatchUpdateModelDTO dto) { return success(smDeviceService.batchUpdateModel(dto)); } + + @ApiOperation("解除设备绑定") + @PreAuthorize("@ss.hasPermi('system:device:unbind')") + @DeleteMapping("/{deviceId}/unbind") + public AjaxResult unbind(@PathVariable @ApiParam("设备id") Long deviceId) { + return toAjax(smDeviceService.unbind(deviceId)); + } }