diff --git a/smart-switch-service/src/main/java/com/ruoyi/common/constants/DictTypeConstants.java b/smart-switch-service/src/main/java/com/ruoyi/common/constants/DictTypeConstants.java index 3e300fa3..a103c306 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/common/constants/DictTypeConstants.java +++ b/smart-switch-service/src/main/java/com/ruoyi/common/constants/DictTypeConstants.java @@ -10,5 +10,5 @@ public class DictTypeConstants { // 套餐时长单位 public static final String SUIT_TIME_UNIT = "suit_time_unit"; // 设备服务费类型 - public static final String DEVICE_SERVICE_TYPE = "device_service_type"; + public static final String SERVICE_TYPE = "service_type"; } diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/user/domain/enums/UserServiceType.java b/smart-switch-service/src/main/java/com/ruoyi/common/enums/ServiceType.java similarity index 80% rename from smart-switch-service/src/main/java/com/ruoyi/ss/user/domain/enums/UserServiceType.java rename to smart-switch-service/src/main/java/com/ruoyi/common/enums/ServiceType.java index a1fc4325..fa1e2e7a 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/user/domain/enums/UserServiceType.java +++ b/smart-switch-service/src/main/java/com/ruoyi/common/enums/ServiceType.java @@ -1,4 +1,4 @@ -package com.ruoyi.ss.user.domain.enums; +package com.ruoyi.common.enums; import lombok.AllArgsConstructor; import lombok.Getter; @@ -10,7 +10,7 @@ import lombok.Getter; */ @Getter @AllArgsConstructor -public enum UserServiceType { +public enum ServiceType { PERCENT("1", "按订单比例"), MONTH("2", "月费"); diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/device/domain/Device.java b/smart-switch-service/src/main/java/com/ruoyi/ss/device/domain/Device.java index a139d6ae..7244519e 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/device/domain/Device.java +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/device/domain/Device.java @@ -152,7 +152,7 @@ public class Device extends BaseEntity @ApiModelProperty("服务费类型") @NotBlank(message = "服务费类型不允许为空", groups = {ValidGroup.Create.class}) - @DictValid(type = DictTypeConstants.DEVICE_SERVICE_TYPE, message = "非法的服务费类型") + @DictValid(type = DictTypeConstants.SERVICE_TYPE, message = "非法的服务费类型") private String serviceType; @ApiModelProperty("剩余时长(秒)") diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/device/domain/enums/DeviceServiceType.java b/smart-switch-service/src/main/java/com/ruoyi/ss/device/domain/enums/DeviceServiceType.java deleted file mode 100644 index 1ba73c6a..00000000 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/device/domain/enums/DeviceServiceType.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.ruoyi.ss.device.domain.enums; - -import lombok.AllArgsConstructor; -import lombok.Getter; - -/** - * 设备服务费类型 - * @author wjh - * 2024/7/23 - */ -@Getter -@AllArgsConstructor -public enum DeviceServiceType { - - PERCENT("1", "按订单比例"), - MONTH("2", "月费"); - - private final String type; - private final String msg; - - -} 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 c3b5aa1c..1c2a8576 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 @@ -26,6 +26,8 @@ import com.ruoyi.ss.device.service.DeviceAssembler; import com.ruoyi.ss.device.service.DeviceValidator; import com.ruoyi.ss.device.service.DeviceService; import com.ruoyi.ss.deviceBindRecord.service.ISmDeviceBindRecordService; +import com.ruoyi.ss.model.domain.SmModelVO; +import com.ruoyi.ss.model.service.ModelService; import com.ruoyi.ss.record.time.service.IRecordTimeService; import com.ruoyi.ss.record.time.service.RecordTimeConverter; import com.ruoyi.ss.store.domain.StoreVo; @@ -103,6 +105,9 @@ public class DeviceServiceImpl implements DeviceService @Autowired private RedisLock redisLock; + @Autowired + private ModelService modelService; + /** * 查询设备 * @@ -289,12 +294,20 @@ public class DeviceServiceImpl implements DeviceService @Override public int register(DeviceRegisterDTO dto) { + if (dto == null) { + return 0; + } + SmModelVO model = modelService.selectSmModelByModelId(dto.getModelId()); + ServiceUtil.assertion(model == null, "型号不存在"); + // 添加 Device device = new Device(); device.setDeviceName("未命名"); device.setMac(dto.getMac()); device.setDeviceNo(dto.getSn()); device.setModelId(dto.getModelId()); + device.setServiceType(model.getServiceType()); + device.setServiceRate(model.getServiceRate()); return this.insertSmDevice(device); } diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/model/domain/SmModel.java b/smart-switch-service/src/main/java/com/ruoyi/ss/model/domain/SmModel.java index 6a5845bf..267198bf 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/model/domain/SmModel.java +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/model/domain/SmModel.java @@ -1,13 +1,17 @@ package com.ruoyi.ss.model.domain; import com.ruoyi.common.annotation.Excel; +import com.ruoyi.common.constants.DictTypeConstants; import com.ruoyi.common.core.domain.BaseEntity; import com.ruoyi.common.core.domain.ValidGroup; +import com.ruoyi.system.valid.DictValid; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.Min; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; +import java.math.BigDecimal; import java.util.List; /** @@ -54,4 +58,12 @@ public class SmModel extends BaseEntity @NotNull(message = "标签列表不允许为空", groups = {ValidGroup.Create.class}) @Size(min = 1, message = "至少需要一个标签", groups = {ValidGroup.Create.class}) private List tags; + + @ApiModelProperty("默认服务费类型") + @DictValid(type = DictTypeConstants.SERVICE_TYPE, message = "非法的服务费类型") + private String serviceType; + + @ApiModelProperty("默认服务费") + @Min(value = 0, message = "默认服务费不能小于0") + private BigDecimal serviceRate; } diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/model/domain/SmModelBO.java b/smart-switch-service/src/main/java/com/ruoyi/ss/model/domain/SmModelBO.java index 621f6516..ac07617f 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/model/domain/SmModelBO.java +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/model/domain/SmModelBO.java @@ -17,6 +17,8 @@ public class SmModelBO extends SmModel { bo.setPicture(getPicture()); bo.setIntroduce(getIntroduce()); bo.setRemark(getRemark()); + bo.setServiceType(getServiceType()); + bo.setServiceRate(getServiceRate()); return bo; } @@ -30,6 +32,8 @@ public class SmModelBO extends SmModel { bo.setPicture(getPicture()); bo.setIntroduce(getIntroduce()); bo.setRemark(getRemark()); + bo.setServiceType(getServiceType()); + bo.setServiceRate(getServiceRate()); return bo; } } diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/model/mapper/SmModelMapper.xml b/smart-switch-service/src/main/java/com/ruoyi/ss/model/mapper/SmModelMapper.xml index fe64dd00..2de23d14 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/model/mapper/SmModelMapper.xml +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/model/mapper/SmModelMapper.xml @@ -21,6 +21,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" sm.remark, sm.deleted, sm.tags, + sm.service_type, + sm.service_rate, count(case when sd.activation_time is not null and sd.deleted = false then sd.device_id end) as activation_count, count(case when sd.online_status = '1' and sd.activation_time is not null and sd.deleted = false then sd.device_id end) as online_count from sm_model sm @@ -30,6 +32,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and sm.model_name like concat('%', #{modelName}, '%') and sm.model = #{model} + and sm.service_type = #{serviceType} and sm.deleted = false and sm.deleted = #{deleted} @@ -78,6 +81,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" remark, deleted, tags, + service_type, + service_rate, #{modelName}, @@ -91,6 +96,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{remark}, #{deleted}, #{tags,typeHandler=com.ruoyi.system.mapper.typehandler.StringSplitListTypeHandler}, + #{serviceType}, + #{serviceRate}, @@ -108,6 +115,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" remark = #{remark}, deleted = #{deleted}, tags = #{tags,typeHandler=com.ruoyi.system.mapper.typehandler.StringSplitListTypeHandler}, + service_type = #{serviceType}, + service_rate = #{serviceRate}, where model_id = #{modelId} 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 d1ae72e7..85ac3051 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 @@ -11,7 +11,6 @@ import com.ruoyi.ss.account.service.ISmAccountService; import com.ruoyi.ss.channel.domain.SmChannel; import com.ruoyi.ss.channel.service.ISmChannelService; import com.ruoyi.ss.dashboard.BillCountVo; -import com.ruoyi.ss.device.domain.enums.DeviceServiceType; import com.ruoyi.ss.device.domain.vo.DeviceVO; import com.ruoyi.ss.device.service.DeviceService; import com.ruoyi.ss.receiveBill.service.ReceiveBillService; @@ -35,7 +34,7 @@ import com.ruoyi.ss.transactionBill.mapper.TransactionBillMapper; import com.ruoyi.ss.transactionBill.service.TransactionBillService; import com.ruoyi.ss.transactionBill.service.TransactionBillValidator; import com.ruoyi.ss.user.domain.SmUserVo; -import com.ruoyi.ss.user.domain.enums.UserServiceType; +import com.ruoyi.common.enums.ServiceType; import com.ruoyi.ss.user.mapper.SmUserMapper; import com.ruoyi.ss.user.service.ISmUserService; import com.ruoyi.ss.wxPay.service.IWxPayService; @@ -247,7 +246,7 @@ public class TransactionBillServiceImpl implements TransactionBillService { // 优先级: 设备 > 商户 > 渠道 if (device.getServiceRate() != null) { // 设备月费 - if (DeviceServiceType.MONTH.getType().equals(device.getServiceType())) { + if (ServiceType.MONTH.getType().equals(device.getServiceType())) { int count = receiveBillService.genBillByMonthAndPay(mch, device, LocalDateTime.now(), device.getServiceRate()); ServiceUtil.assertion(count == 0, "商户出账失败,请刷新后重试"); } @@ -259,7 +258,7 @@ public class TransactionBillServiceImpl implements TransactionBillService { // 用户 else if (mch.getServiceRate() != null) { // 用户月费 - if (UserServiceType.MONTH.getType().equals(mch.getServiceType())) { + if (ServiceType.MONTH.getType().equals(mch.getServiceType())) { int count = receiveBillService.genBillByMonthAndPay(mch, device, LocalDateTime.now(), mch.getServiceRate()); ServiceUtil.assertion(count == 0, "商户出账失败,请刷新后重试");