From 11fda9f59e68c94291c9a46c4bd9aa496872a2bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A2=A8=E5=A4=A7=E5=8F=94?= <494979559@qq.com> Date: Tue, 16 Jul 2024 14:44:00 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E8=B4=B9=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E3=80=81=E6=94=AF=E4=BB=98BUG=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/core/domain/model/WxLoginBody.java | 3 -- .../service/impl/DeviceServiceImpl.java | 4 +++ .../java/com/ruoyi/ss/suit/domain/Suit.java | 2 +- .../suit/service/impl/SuitValidatorImpl.java | 8 ++--- .../domain/TransactionBill.java | 10 ++++++ .../domain/TransactionBillQuery.java | 4 +++ .../mapper/TransactionBillMapper.java | 5 +++ .../mapper/TransactionBillMapper.xml | 22 +++++++++++++ .../service/TransactionBillService.java | 10 ++++++ .../impl/TransactionBillServiceImpl.java | 31 +++++++++++++++++-- .../domain/bo/UserUpdateServiceRateBO.java | 2 +- 11 files changed, 88 insertions(+), 13 deletions(-) diff --git a/smart-switch-ruoyi/smart-switch-common/src/main/java/com/ruoyi/common/core/domain/model/WxLoginBody.java b/smart-switch-ruoyi/smart-switch-common/src/main/java/com/ruoyi/common/core/domain/model/WxLoginBody.java index 52cda4b3..bba95f35 100644 --- a/smart-switch-ruoyi/smart-switch-common/src/main/java/com/ruoyi/common/core/domain/model/WxLoginBody.java +++ b/smart-switch-ruoyi/smart-switch-common/src/main/java/com/ruoyi/common/core/domain/model/WxLoginBody.java @@ -1,10 +1,7 @@ package com.ruoyi.common.core.domain.model; -import com.ruoyi.common.enums.UserType; -import com.ruoyi.common.valid.EnumValid; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; -import io.swagger.annotations.ApiOperation; import lombok.Data; import javax.validation.constraints.NotNull; 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 8598f1b2..51d339c7 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 @@ -28,6 +28,7 @@ import com.ruoyi.ss.record.time.service.RecordTimeConverter; import com.ruoyi.ss.store.domain.StoreVo; import com.ruoyi.ss.store.service.IStoreService; import com.ruoyi.ss.suit.service.SuitService; +import com.ruoyi.ss.transactionBill.domain.TransactionBillQuery; import com.ruoyi.ss.transactionBill.domain.TransactionBillVo; import com.ruoyi.ss.transactionBill.service.TransactionBillService; import com.ruoyi.ss.user.domain.SmUserVo; @@ -604,6 +605,9 @@ public class DeviceServiceImpl implements DeviceService form.setStatus(DeviceStatus.NORMAL.getStatus()); smDeviceMapper.updateSmDevice(form); + // 关闭该设备未结束的所有订单 + transactionBillService.batchEndBillByDevice(deviceId); + // 物联网设备归零 CommandResponse commandResponse = iotService.setTime(device.getMac(), BigDecimal.ONE); ServiceUtil.assertion(!commandResponse.isSuccess(), "设备归零失败,请检查设备是否在线或联系管理员"); diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/suit/domain/Suit.java b/smart-switch-service/src/main/java/com/ruoyi/ss/suit/domain/Suit.java index 98b040a7..6fec6189 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/suit/domain/Suit.java +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/suit/domain/Suit.java @@ -33,7 +33,7 @@ public class Suit extends BaseEntity /** 设备id */ @Excel(name = "设备id") - @NotNull(message = "设备ID不允许为空", groups = {ValidGroup.Create.class, ValidGroup.FrontCreate.class}) +// @NotNull(message = "设备ID不允许为空", groups = {ValidGroup.Create.class, ValidGroup.FrontCreate.class}) @JsonView(JsonViewProfile.AppMch.class) private Long deviceId; diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/suit/service/impl/SuitValidatorImpl.java b/smart-switch-service/src/main/java/com/ruoyi/ss/suit/service/impl/SuitValidatorImpl.java index 97158437..97199c8b 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/suit/service/impl/SuitValidatorImpl.java +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/suit/service/impl/SuitValidatorImpl.java @@ -70,7 +70,7 @@ public class SuitValidatorImpl extends BaseValidator implements SuitValidator { } // 设备校验 - if (!deviceValidator.isBelong(suit.getDeviceId(), SecurityUtils.getUserId())) { + if (suit.getDeviceId() != null && !deviceValidator.isBelong(suit.getDeviceId(), SecurityUtils.getUserId())) { return error("该设备不属于该用户"); } @@ -96,10 +96,8 @@ public class SuitValidatorImpl extends BaseValidator implements SuitValidator { } // 设备校验 - if (suit.getDeviceId() != null) { - if (!deviceValidator.isBelong(suit.getDeviceId(), userId)) { - return error("该设备不属于该用户"); - } + if ( suit.getDeviceId() != null && !deviceValidator.isBelong(suit.getDeviceId(), userId)) { + return error("该设备不属于该用户"); } return success(); 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 c52017be..3244756b 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 @@ -97,6 +97,7 @@ public class TransactionBill extends BaseEntity private BigDecimal afterBalance; @ApiModelProperty("支付成功的时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date payTime; @ApiModelProperty("支付过期时间") @@ -162,4 +163,13 @@ public class TransactionBill extends BaseEntity @JsonView(JsonViewProfile.App.class) private String deviceMac; + @ApiModelProperty("总计退款金额") + private BigDecimal refundAmount; + + @ApiModelProperty("商户退款金额") + private BigDecimal refundMchAmount; + + @ApiModelProperty("服务费退款金额") + private BigDecimal refundServiceAmount; + } diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/domain/TransactionBillQuery.java b/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/domain/TransactionBillQuery.java index e3d17c8c..e121a6c3 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/domain/TransactionBillQuery.java +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/domain/TransactionBillQuery.java @@ -8,6 +8,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -76,4 +77,7 @@ public class TransactionBillQuery extends TransactionBill { @ApiModelProperty("是否使用中") private Boolean using; + + @ApiModelProperty("套餐结束时间(结束)") + private LocalDateTime endSuitEndTime; } diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/mapper/TransactionBillMapper.java b/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/mapper/TransactionBillMapper.java index dd16ab1d..07ebf5c8 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/mapper/TransactionBillMapper.java +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/mapper/TransactionBillMapper.java @@ -164,4 +164,9 @@ public interface TransactionBillMapper @Param("refundMchAmount") BigDecimal refundMchAmount, @Param("refundServiceAmount") BigDecimal refundServiceAmount ); + + /** + * 批量更新套餐结束时间 + */ + int batchUpdateSuitEndTime(@Param("billIds") List billIds,@Param("time") LocalDateTime time); } 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 4b3cab02..7c27bc9c 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 @@ -42,6 +42,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" stb.device_no, stb.suit_name, stb.device_mac, + stb.refund_amount, + stb.refund_mch_amount, + stb.refund_service_amount, su.user_name as user_name, su1.user_name as mch_name, su1.phonenumber as mch_mobile @@ -73,6 +76,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and stb.device_recharge_status = #{query.deviceRechargeStatus} and stb.suit_id = #{query.suitId} and stb.store_id = #{query.storeId} + and stb.suit_end_time >= #{query.endSuitEndTime} and now() >= stb.suit_start_time and now() <= stb.suit_end_time and now() <= stb.suit_expire_time @@ -224,6 +228,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" device_no, suit_name, device_mac, + refund_amount, + refund_mch_amount, + refund_service_amount, #{billNo}, @@ -258,6 +265,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{deviceNo}, #{suitName}, #{deviceMac}, + #{refundAmount}, + #{refundMchAmount}, + #{refundServiceAmount}, @@ -309,6 +319,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" device_no = #{data.deviceNo}, suit_name = #{data.suitName}, device_mac = #{data.deviceMac}, + refund_amount = #{data.refundAmount}, + refund_mch_amount = #{data.refundMchAmount}, + refund_service_amount = #{data.refundServiceAmount}, @@ -417,4 +430,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where bill_no = #{billNo} and type = '1' and device_recharge_status = '3' and status = '2' + + update sm_transaction_bill + set suit_end_time = #{time} + where bill_id in + + #{item} + + + 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 a3ad29ae..d569780e 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 @@ -259,4 +259,14 @@ public interface TransactionBillService * 查询用户正在使用中的订单 */ List selectUsingBill(Long userId); + + /** + * 查询正在使用中的订单 + */ + List selectUsingBill(TransactionBillQuery query); + + /** + * 根据设备ID批量结束订单 + */ + int batchEndBillByDevice(Long deviceId); } 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 36b19375..08e31f7b 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 @@ -581,7 +581,7 @@ public class TransactionBillServiceImpl implements TransactionBillService { } /** - * 在设备充值成功后,更新套餐时间 + * 在设备充值成功前,更新套餐时间 * 开始时间 = 设备过期时间 - 套餐时间,过期时间 = 设备过期时间 */ private int updateSuitTimeBeforeDevice(Long billId, LocalDateTime deviceExpireTime) { @@ -589,11 +589,14 @@ public class TransactionBillServiceImpl implements TransactionBillService { if (bill == null) { return 0; } + // 计算开始使用的时间 + LocalDateTime now = LocalDateTime.now(); + LocalDateTime startTime = now.isAfter(deviceExpireTime) ? now : deviceExpireTime; - LocalDateTime endTime = deviceExpireTime.plusMinutes(bill.getSuitTime().longValue()); + LocalDateTime endTime = startTime.plusMinutes(bill.getSuitTime().longValue()); TransactionBill data = new TransactionBill(); data.setBillId(billId); - data.setSuitStartTime(deviceExpireTime); + data.setSuitStartTime(startTime); data.setSuitEndTime(endTime); data.setSuitExpireTime(endTime); return transactionBillMapper.updateSmTransactionBill(data); @@ -958,8 +961,30 @@ public class TransactionBillServiceImpl implements TransactionBillService { @Override public List selectUsingBill(Long userId) { TransactionBillQuery query = new TransactionBillQuery(); + query.setUserId(userId); + return this.selectUsingBill(query); + } + + @Override + public List selectUsingBill(TransactionBillQuery query) { query.setUsing(true); query.setStatus(TransactionBillStatus.SUCCESS.getStatus()); return this.selectSmTransactionBillList(query); } + + @Override + public int batchEndBillByDevice(Long deviceId) { + if (deviceId == null) { + return 0; + } + LocalDateTime now = LocalDateTime.now(); + TransactionBillQuery query = new TransactionBillQuery(); + query.setDeviceId(deviceId); + query.setEndSuitEndTime(now); // 套餐结束时间在这之后的,都会被关闭 + List billList = this.selectSmTransactionBillList(query); + if (CollectionUtils.isNotEmptyElement(billList)) { + return transactionBillMapper.batchUpdateSuitEndTime(billList.stream().map(TransactionBill::getBillId).collect(Collectors.toList()), now); + } + return 0; + } } diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/user/domain/bo/UserUpdateServiceRateBO.java b/smart-switch-service/src/main/java/com/ruoyi/ss/user/domain/bo/UserUpdateServiceRateBO.java index 8f94031a..b1a832a1 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/user/domain/bo/UserUpdateServiceRateBO.java +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/user/domain/bo/UserUpdateServiceRateBO.java @@ -21,7 +21,7 @@ public class UserUpdateServiceRateBO { private Long userId; @ApiModelProperty("服务费费率") - @Range(min = 1, max = 100, message = "服务费费率范围1-100") + @Range(min = 0, max = 100, message = "服务费费率范围0-100") private BigDecimal serviceRate; @ApiModelProperty("是否刷新用户所有设备的服务费")