From d42b3fff756d33fb92619609b43d809f87eaba2d 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, 23 Jul 2024 16:27:23 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=9C=88=E8=B4=B9=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/common/enums/LoginType.java | 11 ++++- .../common/constants/DictTypeConstants.java | 2 + .../ruoyi/ss/abnormal/domain/Abnormal.java | 11 ++--- .../ruoyi/ss/abnormal/domain/AbnormalBO.java | 23 --------- .../ss/abnormal/domain/AbnormalQuery.java | 3 ++ .../ruoyi/ss/abnormal/domain/AbnormalVO.java | 8 ++++ .../domain/dto/AbnormalSubmitDTO.java | 24 ++++++++++ .../abnormal/domain/enums/AbnormalStatus.java | 20 ++++++++ .../ss/abnormal/mapper/AbnormalMapper.java | 5 ++ .../ss/abnormal/mapper/AbnormalMapper.xml | 32 +++++++++---- .../abnormal/service/AbnormalConverter.java | 16 +++++++ ...ormalService.java => AbnormalService.java} | 7 ++- .../abnormal/service/AbnormalValidator.java | 7 +-- .../service/impl/AbnormalConverterImpl.java | 46 ++++++++++++++++++ .../service/impl/AbnormalServiceImpl.java | 9 +++- .../service/impl/AbnormalValidatorImpl.java | 21 +------- .../com/ruoyi/ss/device/domain/Device.java | 12 ++++- .../com/ruoyi/ss/device/domain/DeviceBO.java | 2 + .../domain/enums/DeviceServiceType.java | 22 +++++++++ .../ruoyi/ss/device/mapper/DeviceMapper.java | 5 ++ .../ruoyi/ss/device/mapper/DeviceMapper.xml | 12 +++++ .../ss/device/service/DeviceService.java | 5 ++ .../service/impl/DeviceServiceImpl.java | 5 ++ .../ss/receiveBill/domain/ReceiveBill.java | 8 ++++ .../receiveBill/domain/ReceiveBillQuery.java | 9 ++++ .../ss/receiveBill/domain/ReceiveBillVO.java | 11 +++++ .../domain/enums/ReceiveBillStatus.java | 5 +- .../receiveBill/mapper/ReceiveBillMapper.java | 2 +- .../receiveBill/mapper/ReceiveBillMapper.xml | 19 +++++++- .../service/ReceiveBillService.java | 13 +++-- .../service/impl/ReceiveBillServiceImpl.java | 44 ++++++++++++----- .../com/ruoyi/ss/refund/domain/Refund.java | 9 ++++ .../ruoyi/ss/refund/mapper/RefundMapper.xml | 15 ++++++ .../service/impl/RefundConverterImpl.java | 3 ++ .../ruoyi/ss/store/service/IStoreService.java | 4 +- .../store/service/impl/StoreServiceImpl.java | 2 +- .../domain/dto/BillRefundDTO.java | 8 ++++ .../impl/TransactionBillServiceImpl.java | 48 ++++++++++++++----- .../ss/user/domain/enums/UserServiceType.java | 2 +- .../com/ruoyi/ss/user/mapper/SmUserMapper.xml | 1 + .../ruoyi/ss/user/service/ISmUserService.java | 3 +- .../user/service/impl/SmUserServiceImpl.java | 4 +- .../controller/app/AppAbnormalController.java | 17 ++++--- .../controller/app/AppStoreController.java | 6 +-- .../app/AppTransactionBillController.java | 5 ++ .../web/controller/ss/AbnormalController.java | 16 ++++--- .../web/controller/ss/SmDeviceController.java | 19 ++++++-- .../ss/SmTransactionBillController.java | 5 ++ 48 files changed, 454 insertions(+), 132 deletions(-) delete mode 100644 smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/domain/AbnormalBO.java create mode 100644 smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/domain/dto/AbnormalSubmitDTO.java create mode 100644 smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/domain/enums/AbnormalStatus.java create mode 100644 smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/service/AbnormalConverter.java rename smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/service/{IAbnormalService.java => AbnormalService.java} (92%) create mode 100644 smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/service/impl/AbnormalConverterImpl.java create mode 100644 smart-switch-service/src/main/java/com/ruoyi/ss/device/domain/enums/DeviceServiceType.java diff --git a/smart-switch-ruoyi/smart-switch-common/src/main/java/com/ruoyi/common/enums/LoginType.java b/smart-switch-ruoyi/smart-switch-common/src/main/java/com/ruoyi/common/enums/LoginType.java index a9d9bd93..5911904e 100644 --- a/smart-switch-ruoyi/smart-switch-common/src/main/java/com/ruoyi/common/enums/LoginType.java +++ b/smart-switch-ruoyi/smart-switch-common/src/main/java/com/ruoyi/common/enums/LoginType.java @@ -1,11 +1,18 @@ package com.ruoyi.common.enums; +import lombok.AllArgsConstructor; +import lombok.Getter; + /** * 登录用户类型 * @author 辉 * 2024/3/5 */ +@Getter +@AllArgsConstructor public enum LoginType { - ADMIN, // 后台登录 - FRONT; // 前台登录 + ADMIN("1"), // 后台登录 + FRONT("2"); // 前台登录 + + private final String type; } 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 f5533fdb..3e300fa3 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 @@ -9,4 +9,6 @@ public class DictTypeConstants { // 套餐时长单位 public static final String SUIT_TIME_UNIT = "suit_time_unit"; + // 设备服务费类型 + public static final String DEVICE_SERVICE_TYPE = "device_service_type"; } diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/domain/Abnormal.java b/smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/domain/Abnormal.java index d8f2ca51..75190a85 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/domain/Abnormal.java +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/domain/Abnormal.java @@ -29,12 +29,8 @@ public class Abnormal extends BaseEntity @ApiModelProperty("用户id(提交人)") private Long userId; - /** 设备编号 */ - @ApiModelProperty("设备编号") - @Excel(name = "设备编号") - @NotNull(message = "设备编号不允许为空", groups = {ValidGroup.FrontCreate.class}) - @Size(max = 64, message = "设备编号长度不能超过64个字符") - private String deviceNo; + @ApiModelProperty("设备ID") + private Long deviceId; /** 故障描述 */ @ApiModelProperty("故障描述") @@ -62,7 +58,6 @@ public class Abnormal extends BaseEntity @Size(max = 200, message = "联系地址长度不能超过200个字符") private String address; - /** 状态(0:审核中,1:已证实,待处理,2:处理中,3:已处理,4:未证实) */ - @ApiModelProperty(" 状态(0:审核中,1:已证实,待处理,2:处理中,3:已处理,4:未证实)") + @ApiModelProperty("状态:1-未读,2-已读") private String status; } diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/domain/AbnormalBO.java b/smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/domain/AbnormalBO.java deleted file mode 100644 index f98ab6d4..00000000 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/domain/AbnormalBO.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.ruoyi.ss.abnormal.domain; - -/** - * @author wjh - * 2024/4/30 - */ -public class AbnormalBO extends Abnormal { - - /** - * 过滤App端提交的数据 - * @return - */ - public AbnormalBO filterCreateByApp() { - AbnormalBO bo = new AbnormalBO(); - bo.setUserId(getUserId()); - bo.setDeviceNo(getDeviceNo()); - bo.setContent(getContent()); - bo.setName(getName()); - bo.setMobile(getMobile()); - bo.setAddress(getAddress()); - return bo; - } -} diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/domain/AbnormalQuery.java b/smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/domain/AbnormalQuery.java index 964a4af4..d72d9c3d 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/domain/AbnormalQuery.java +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/domain/AbnormalQuery.java @@ -13,4 +13,7 @@ public class AbnormalQuery extends Abnormal { @ApiModelProperty("关键词,可以是故障描述、故障编号") private String keyword; + @ApiModelProperty("设备编号") + private String deviceNo; + } diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/domain/AbnormalVO.java b/smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/domain/AbnormalVO.java index 445d4007..02c4c37e 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/domain/AbnormalVO.java +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/domain/AbnormalVO.java @@ -1,8 +1,13 @@ package com.ruoyi.ss.abnormal.domain; +import com.ruoyi.common.annotation.Excel; +import com.ruoyi.common.core.domain.ValidGroup; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; + /** * @author wjh * 2024/4/30 @@ -10,6 +15,9 @@ import lombok.Data; @Data public class AbnormalVO extends Abnormal { + @ApiModelProperty("设备编号") + private String deviceNo; + @ApiModelProperty("用户名称") private String userName; diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/domain/dto/AbnormalSubmitDTO.java b/smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/domain/dto/AbnormalSubmitDTO.java new file mode 100644 index 00000000..9bccf79c --- /dev/null +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/domain/dto/AbnormalSubmitDTO.java @@ -0,0 +1,24 @@ +package com.ruoyi.ss.abnormal.domain.dto; + +import com.ruoyi.common.core.domain.ValidGroup; +import com.ruoyi.ss.abnormal.domain.Abnormal; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; + +/** + * @author wjh + * 2024/4/30 + */ +@Data +public class AbnormalSubmitDTO extends Abnormal { + + /** 设备编号 */ + @ApiModelProperty("设备编号") + @NotNull(message = "设备编号不允许为空", groups = {ValidGroup.FrontCreate.class}) + @Size(max = 64, message = "设备编号长度不能超过64个字符") + private String deviceNo; + +} diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/domain/enums/AbnormalStatus.java b/smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/domain/enums/AbnormalStatus.java new file mode 100644 index 00000000..26e30f77 --- /dev/null +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/domain/enums/AbnormalStatus.java @@ -0,0 +1,20 @@ +package com.ruoyi.ss.abnormal.domain.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @author wjh + * 2024/7/23 + */ +@Getter +@AllArgsConstructor +public enum AbnormalStatus { + + UNREAD("1", "未读"), + READ("2", "已读"); + + private final String status; + private final String msg; + +} diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/mapper/AbnormalMapper.java b/smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/mapper/AbnormalMapper.java index 70f0ff25..4d9f8f44 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/mapper/AbnormalMapper.java +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/mapper/AbnormalMapper.java @@ -69,4 +69,9 @@ public interface AbnormalMapper * @return */ int logicDel(@Param("abnormalIds") List abnormalIds); + + /** + * 查询数量 + */ + int selectCount(AbnormalQuery query); } diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/mapper/AbnormalMapper.xml b/smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/mapper/AbnormalMapper.xml index 102c14d0..a38c3ca3 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/mapper/AbnormalMapper.xml +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/mapper/AbnormalMapper.xml @@ -4,13 +4,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - - + select sa.abnormal_id, - sa.device_no, + sa.device_id, sa.content, sa.name, sa.mobile, @@ -22,16 +21,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" sa.update_by, sa.deleted, sa.user_id, - su.user_name as user_name - from ss_abnormal sa + su.user_name as user_name, + sd.device_no as device_no + from + + + + ss_abnormal sa left join sm_user su on su.user_id = sa.user_id + left join sm_device sd on sd.device_id = sa.device_id + + insert into ss_abnormal - device_no, + device_id, content, `name`, mobile, address, - status, + `status`, create_time, create_by, update_time, @@ -74,7 +86,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" user_id, - #{deviceNo}, + #{deviceId}, #{content}, #{name}, #{mobile}, @@ -92,7 +104,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update ss_abnormal - device_no = #{deviceNo}, + device_no = #{deviceId}, content = #{content}, `name` = #{name}, mobile = #{mobile}, diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/service/AbnormalConverter.java b/smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/service/AbnormalConverter.java new file mode 100644 index 00000000..80823069 --- /dev/null +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/service/AbnormalConverter.java @@ -0,0 +1,16 @@ +package com.ruoyi.ss.abnormal.service; + +import com.ruoyi.ss.abnormal.domain.Abnormal; +import com.ruoyi.ss.abnormal.domain.dto.AbnormalSubmitDTO; + +/** + * @author wjh + * 2024/7/23 + */ +public interface AbnormalConverter { + + /** + * 提交异常 DTO -> PO + */ + Abnormal toPo(AbnormalSubmitDTO dto); +} diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/service/IAbnormalService.java b/smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/service/AbnormalService.java similarity index 92% rename from smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/service/IAbnormalService.java rename to smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/service/AbnormalService.java index 0bd5e0fc..dad4c0fe 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/service/IAbnormalService.java +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/service/AbnormalService.java @@ -12,7 +12,7 @@ import java.util.List; * @author ruoyi * @date 2024-04-30 */ -public interface IAbnormalService +public interface AbnormalService { /** * 查询设备故障 @@ -61,4 +61,9 @@ public interface IAbnormalService * @return 结果 */ public int deleteAbnormalByAbnormalId(Long abnormalId); + + /** + * 查询数量 + */ + int selectCount(AbnormalQuery query); } diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/service/AbnormalValidator.java b/smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/service/AbnormalValidator.java index f43b484b..88a34300 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/service/AbnormalValidator.java +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/service/AbnormalValidator.java @@ -1,7 +1,7 @@ package com.ruoyi.ss.abnormal.service; import com.ruoyi.common.core.domain.ValidateResult; -import com.ruoyi.ss.abnormal.domain.AbnormalBO; +import com.ruoyi.ss.abnormal.domain.dto.AbnormalSubmitDTO; /** * @author wjh @@ -9,9 +9,4 @@ import com.ruoyi.ss.abnormal.domain.AbnormalBO; */ public interface AbnormalValidator { - /** - * App端插入前校验 - */ - ValidateResult preCreateByApp(AbnormalBO data); - } diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/service/impl/AbnormalConverterImpl.java b/smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/service/impl/AbnormalConverterImpl.java new file mode 100644 index 00000000..9dec3309 --- /dev/null +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/service/impl/AbnormalConverterImpl.java @@ -0,0 +1,46 @@ +package com.ruoyi.ss.abnormal.service.impl; + +import com.ruoyi.common.utils.ServiceUtil; +import com.ruoyi.ss.abnormal.domain.Abnormal; +import com.ruoyi.ss.abnormal.domain.dto.AbnormalSubmitDTO; +import com.ruoyi.ss.abnormal.domain.enums.AbnormalStatus; +import com.ruoyi.ss.abnormal.service.AbnormalConverter; +import com.ruoyi.ss.abnormal.service.AbnormalService; +import com.ruoyi.ss.device.domain.vo.DeviceVO; +import com.ruoyi.ss.device.service.DeviceService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * @author wjh + * 2024/7/23 + */ +@Service +public class AbnormalConverterImpl implements AbnormalConverter { + + @Autowired + private AbnormalService abnormalService; + + @Autowired + private DeviceService deviceService; + + @Override + public Abnormal toPo(AbnormalSubmitDTO dto) { + if (dto == null) { + return null; + } + DeviceVO device = deviceService.selectByDeviceNo(dto.getDeviceNo()); + ServiceUtil.assertion(device == null, "设备不存在"); + + Abnormal po = new Abnormal(); + po.setUserId(dto.getUserId()); + po.setDeviceId(device.getDeviceId()); + po.setContent(dto.getContent()); + po.setName(dto.getName()); + po.setMobile(dto.getMobile()); + po.setAddress(dto.getAddress()); + po.setStatus(AbnormalStatus.UNREAD.getStatus()); + po.setCreateBy(dto.getCreateBy()); + return po; + } +} diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/service/impl/AbnormalServiceImpl.java b/smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/service/impl/AbnormalServiceImpl.java index 9855b231..3c2acb37 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/service/impl/AbnormalServiceImpl.java +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/service/impl/AbnormalServiceImpl.java @@ -5,7 +5,7 @@ import com.ruoyi.ss.abnormal.domain.Abnormal; import com.ruoyi.ss.abnormal.domain.AbnormalQuery; import com.ruoyi.ss.abnormal.domain.AbnormalVO; import com.ruoyi.ss.abnormal.mapper.AbnormalMapper; -import com.ruoyi.ss.abnormal.service.IAbnormalService; +import com.ruoyi.ss.abnormal.service.AbnormalService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -18,7 +18,7 @@ import java.util.List; * @date 2024-04-30 */ @Service -public class AbnormalServiceImpl implements IAbnormalService +public class AbnormalServiceImpl implements AbnormalService { @Autowired private AbnormalMapper abnormalMapper; @@ -96,4 +96,9 @@ public class AbnormalServiceImpl implements IAbnormalService { return abnormalMapper.deleteAbnormalByAbnormalId(abnormalId); } + + @Override + public int selectCount(AbnormalQuery query) { + return abnormalMapper.selectCount(query); + } } diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/service/impl/AbnormalValidatorImpl.java b/smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/service/impl/AbnormalValidatorImpl.java index 40ab2119..16853029 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/service/impl/AbnormalValidatorImpl.java +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/abnormal/service/impl/AbnormalValidatorImpl.java @@ -2,7 +2,7 @@ package com.ruoyi.ss.abnormal.service.impl; import com.ruoyi.common.core.domain.BaseValidator; import com.ruoyi.common.core.domain.ValidateResult; -import com.ruoyi.ss.abnormal.domain.AbnormalBO; +import com.ruoyi.ss.abnormal.domain.dto.AbnormalSubmitDTO; import com.ruoyi.ss.abnormal.service.AbnormalValidator; import com.ruoyi.ss.device.service.DeviceValidator; import com.ruoyi.ss.device.service.DeviceService; @@ -23,23 +23,4 @@ public class AbnormalValidatorImpl extends BaseValidator implements AbnormalVali @Autowired private DeviceValidator deviceValidator; - - /** - * App端插入前校验 - * - * @param data - */ - @Override - public ValidateResult preCreateByApp(AbnormalBO data) { - if (data == null) { - return error("数据不能为空"); - } - - // 判断设备是否存在 - if (!deviceValidator.isExistNo(Collections.singletonList(data.getDeviceNo()))) { - return error("设备不存在"); - } - - return success(); - } } 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 e7305791..a139d6ae 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 @@ -3,15 +3,18 @@ package com.ruoyi.ss.device.domain; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonView; 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.JsonViewProfile; import com.ruoyi.common.core.domain.ValidGroup; +import com.ruoyi.system.valid.DictValid; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.hibernate.validator.constraints.Range; import org.springframework.format.annotation.DateTimeFormat; import javax.validation.constraints.Min; +import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import javax.validation.constraints.Past; import java.math.BigDecimal; @@ -143,10 +146,15 @@ public class Device extends BaseEntity @JsonView(JsonViewProfile.App.class) private String customPicture; - @ApiModelProperty("服务费费率") - @Range(min = 0, max = 100, message = "服务费费率必须在0-100之间") + @ApiModelProperty("服务费") + @Range(min = 0, message = "服务费不允许小于0") private BigDecimal serviceRate; + @ApiModelProperty("服务费类型") + @NotBlank(message = "服务费类型不允许为空", groups = {ValidGroup.Create.class}) + @DictValid(type = DictTypeConstants.DEVICE_SERVICE_TYPE, message = "非法的服务费类型") + private String serviceType; + @ApiModelProperty("剩余时长(秒)") private BigDecimal remainTime; diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/device/domain/DeviceBO.java b/smart-switch-service/src/main/java/com/ruoyi/ss/device/domain/DeviceBO.java index f48e391a..25cc04f6 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/device/domain/DeviceBO.java +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/device/domain/DeviceBO.java @@ -21,6 +21,7 @@ public class DeviceBO extends Device { bo.setDeviceName(getDeviceName()); bo.setServiceRate(getServiceRate()); bo.setRemark(getRemark()); + bo.setServiceType(getServiceType()); return bo; } @@ -36,6 +37,7 @@ public class DeviceBO extends Device { bo.setDeviceName(getDeviceName()); bo.setServiceRate(getServiceRate()); bo.setRemark(getRemark()); + bo.setServiceType(getServiceType()); return bo; } 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 new file mode 100644 index 00000000..1ba73c6a --- /dev/null +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/device/domain/enums/DeviceServiceType.java @@ -0,0 +1,22 @@ +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/mapper/DeviceMapper.java b/smart-switch-service/src/main/java/com/ruoyi/ss/device/mapper/DeviceMapper.java index 54e1d64d..3eb0f68a 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/device/mapper/DeviceMapper.java +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/device/mapper/DeviceMapper.java @@ -175,4 +175,9 @@ public interface DeviceMapper DeviceVO selectOne(DeviceQuery query); int batchUpdateModel(DeviceBatchUpdateModelDTO dto); + + /** + * 更新服务费 + */ + int updateServiceRate(DeviceVO data); } diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/device/mapper/DeviceMapper.xml b/smart-switch-service/src/main/java/com/ruoyi/ss/device/mapper/DeviceMapper.xml index fede435f..12bc8f13 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/device/mapper/DeviceMapper.xml +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/device/mapper/DeviceMapper.xml @@ -12,6 +12,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and ss.name like concat('%', #{storeName}, '%') + and sd.service_type = #{serviceType} and sd.device_name like concat('%', #{deviceName}, '%') and sm.model_name like concat('%', #{model}, '%') and sd.mac like concat('%', #{mac}, '%') @@ -91,6 +92,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" sd.service_rate, sd.remain_time, sd.user_id, + sd.service_type, sm.model_name as model, sm.picture as picture, sm.tags as model_tags, @@ -244,6 +246,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" service_rate, remain_time, user_id, + service_type, #{storeId}, @@ -274,6 +277,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{serviceRate}, #{remainTime}, #{userId}, + #{serviceType}, @@ -325,6 +329,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" service_rate = #{serviceRate}, remain_time = #{remainTime}, user_id = #{userId}, + service_type = #{serviceType}, where device_id = #{deviceId} @@ -377,6 +382,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" last_pull_time = #{lastPullTime}, power_status = #{powerStatus}, remain_time = #{remainTime}, + service_type = #{serviceType}, where mac = #{mac} @@ -420,6 +426,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + update sm_device + set service_rate = #{serviceRate} + where device_id = #{deviceId} + + delete from sm_device where device_id = #{deviceId} 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 757aa3e1..a2993295 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 @@ -246,4 +246,9 @@ public interface DeviceService * 批量更新设备型号 */ int batchUpdateModel(DeviceBatchUpdateModelDTO dto); + + /** + * 更新服务费 + */ + int updateServiceRate(DeviceVO data); } 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 6c37959d..c3b5aa1c 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 @@ -336,6 +336,11 @@ public class DeviceServiceImpl implements DeviceService return deviceMapper.batchUpdateModel(dto); } + @Override + public int updateServiceRate(DeviceVO data) { + return deviceMapper.updateServiceRate(data); + } + @Override public boolean addTime(Long deviceId, long seconds, boolean withIot) { diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/receiveBill/domain/ReceiveBill.java b/smart-switch-service/src/main/java/com/ruoyi/ss/receiveBill/domain/ReceiveBill.java index 964a169b..0da36f90 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/receiveBill/domain/ReceiveBill.java +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/receiveBill/domain/ReceiveBill.java @@ -4,6 +4,7 @@ import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; @@ -28,6 +29,10 @@ public class ReceiveBill extends BaseEntity @Excel(name = "用户ID") private Long userId; + /** 设备ID */ + @Excel(name = "设备ID") + private Long deviceId; + /** 账单类型 */ @Excel(name = "账单类型") private String type; @@ -47,4 +52,7 @@ public class ReceiveBill extends BaseEntity /** 账单描述 */ @Excel(name = "账单描述") private String description; + + @ApiModelProperty("已收金额") + private BigDecimal receivedAmount; } diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/receiveBill/domain/ReceiveBillQuery.java b/smart-switch-service/src/main/java/com/ruoyi/ss/receiveBill/domain/ReceiveBillQuery.java index ab3af05b..1c904e2d 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/receiveBill/domain/ReceiveBillQuery.java +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/receiveBill/domain/ReceiveBillQuery.java @@ -16,4 +16,13 @@ public class ReceiveBillQuery extends ReceiveBill{ @ApiModelProperty("月份") private Integer billMonth; + @ApiModelProperty("用户名称") + private String userName; + + @ApiModelProperty("设备名称") + private String deviceName; + + @ApiModelProperty("设备SN") + private String deviceNo;; + } diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/receiveBill/domain/ReceiveBillVO.java b/smart-switch-service/src/main/java/com/ruoyi/ss/receiveBill/domain/ReceiveBillVO.java index 3e5bfa07..2ed95523 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/receiveBill/domain/ReceiveBillVO.java +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/receiveBill/domain/ReceiveBillVO.java @@ -1,5 +1,6 @@ package com.ruoyi.ss.receiveBill.domain; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** @@ -8,4 +9,14 @@ import lombok.Data; */ @Data public class ReceiveBillVO extends ReceiveBill{ + + @ApiModelProperty("用户名称") + private String userName; + + @ApiModelProperty("设备名称") + private String deviceName; + + @ApiModelProperty("设备SN") + private String deviceNo; + } diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/receiveBill/domain/enums/ReceiveBillStatus.java b/smart-switch-service/src/main/java/com/ruoyi/ss/receiveBill/domain/enums/ReceiveBillStatus.java index f6472118..d4047fa3 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/receiveBill/domain/enums/ReceiveBillStatus.java +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/receiveBill/domain/enums/ReceiveBillStatus.java @@ -11,9 +11,8 @@ import lombok.Getter; @AllArgsConstructor public enum ReceiveBillStatus { - WAIT_PAY("1", "待支付"), - PAYING("2", "支付中"), - PAID("3", "已支付"), + UNPAID("1", "未付完"), + PAID("2", "已付完"), ; private final String status; diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/receiveBill/mapper/ReceiveBillMapper.java b/smart-switch-service/src/main/java/com/ruoyi/ss/receiveBill/mapper/ReceiveBillMapper.java index 4197f0d1..16cc5938 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/receiveBill/mapper/ReceiveBillMapper.java +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/receiveBill/mapper/ReceiveBillMapper.java @@ -65,5 +65,5 @@ public interface ReceiveBillMapper /** * 查询数量 */ - int selectCount(ReceiveBillQuery query); + int selectCount(@Param("query") ReceiveBillQuery query); } diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/receiveBill/mapper/ReceiveBillMapper.xml b/smart-switch-service/src/main/java/com/ruoyi/ss/receiveBill/mapper/ReceiveBillMapper.xml index 7caddf63..a6d9e5b3 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/receiveBill/mapper/ReceiveBillMapper.xml +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/receiveBill/mapper/ReceiveBillMapper.xml @@ -10,26 +10,37 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select srb.bill_id, srb.user_id, + srb.device_id, srb.type, srb.status, srb.bill_time, srb.amount, srb.description, - srb.create_time + srb.create_time, + srb.received_amount, + su.user_name as user_name, + sd.device_name as device_name, + sd.device_no as device_no from ss_receive_bill srb + left join sm_user su on su.user_id = srb.user_id + left join sm_device sd on sd.device_id = srb.device_id and srb.bill_id = #{query.billId} and srb.user_id = #{query.userId} + and srb.device_id = #{query.deviceId} and year(srb.bill_time) = #{query.billYear} and month(srb.bill_time) = #{query.billMonth} and srb.type = #{query.type} and srb.status = #{query.status} + and su.user_name like concat('%', #{query.userName}, '%') + and sd.device_name like concat('%', #{query.deviceName}, '%') + and sd.device_no like concat('%', #{query.deviceNo}, '%') and srb.description like concat('%', #{query.description}, '%') @@ -57,21 +68,25 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" insert into ss_receive_bill user_id, + device_id, type, `status`, bill_time, amount, `description`, create_time, + received_amount, #{userId}, + #{deviceId}, #{type}, #{status}, #{billTime}, #{amount}, #{description}, #{createTime}, + #{receivedAmount}, @@ -79,12 +94,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update ss_receive_bill user_id = #{data.userId}, + device_id = #{data.deviceId}, type = #{data.type}, `status` = #{data.status}, bill_time = #{data.billTime}, amount = #{data.amount}, `description` = #{data.description}, create_time = #{data.createTime}, + received_amount = #{data.receivedAmount}, where bill_id = #{billId} diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/receiveBill/service/ReceiveBillService.java b/smart-switch-service/src/main/java/com/ruoyi/ss/receiveBill/service/ReceiveBillService.java index cb3b9eed..ec05768f 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/receiveBill/service/ReceiveBillService.java +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/receiveBill/service/ReceiveBillService.java @@ -1,7 +1,10 @@ package com.ruoyi.ss.receiveBill.service; -import java.time.YearMonth; +import java.math.BigDecimal; +import java.time.LocalDateTime; import java.util.List; + +import com.ruoyi.ss.device.domain.vo.DeviceVO; import com.ruoyi.ss.receiveBill.domain.ReceiveBill; import com.ruoyi.ss.receiveBill.domain.ReceiveBillVO; import com.ruoyi.ss.receiveBill.domain.ReceiveBillQuery; @@ -66,10 +69,12 @@ public interface ReceiveBillService /** * 月费商户出账 * - * @param user 用户ID - * @param billMonth 出账日期 + * @param user 用户ID + * @param device + * @param billTime 出账日期 + * @param amount */ - int genBillByMonth(SmUserVo user, YearMonth billMonth); + int genBillByMonthAndPay(SmUserVo user, DeviceVO device, LocalDateTime billTime, BigDecimal amount); /** * 查询数量 diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/receiveBill/service/impl/ReceiveBillServiceImpl.java b/smart-switch-service/src/main/java/com/ruoyi/ss/receiveBill/service/impl/ReceiveBillServiceImpl.java index cf14f855..3aa85b2e 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/receiveBill/service/impl/ReceiveBillServiceImpl.java +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/receiveBill/service/impl/ReceiveBillServiceImpl.java @@ -1,14 +1,15 @@ package com.ruoyi.ss.receiveBill.service.impl; -import java.time.LocalDate; +import java.math.BigDecimal; import java.time.LocalDateTime; -import java.time.LocalTime; -import java.time.YearMonth; import java.util.List; + import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.ServiceUtil; +import com.ruoyi.ss.device.domain.vo.DeviceVO; import com.ruoyi.ss.receiveBill.domain.enums.ReceiveBillStatus; import com.ruoyi.ss.receiveBill.domain.enums.ReceiveBillType; +import com.ruoyi.ss.transactionBill.service.impl.TransactionBillServiceImpl; import com.ruoyi.ss.user.domain.SmUserVo; import com.ruoyi.ss.user.service.ISmUserService; import org.springframework.beans.factory.annotation.Autowired; @@ -18,6 +19,7 @@ import com.ruoyi.ss.receiveBill.domain.ReceiveBill; import com.ruoyi.ss.receiveBill.domain.ReceiveBillVO; import com.ruoyi.ss.receiveBill.domain.ReceiveBillQuery; import com.ruoyi.ss.receiveBill.service.ReceiveBillService; +import org.springframework.transaction.support.TransactionTemplate; /** * 应收账单Service业务层处理 @@ -33,6 +35,10 @@ public class ReceiveBillServiceImpl implements ReceiveBillService @Autowired private ISmUserService userService; + @Autowired + private TransactionBillServiceImpl transactionBillService; + @Autowired + private TransactionTemplate transactionTemplate; /** * 查询应收账单 @@ -108,16 +114,18 @@ public class ReceiveBillServiceImpl implements ReceiveBillService } @Override - public int genBillByMonth(SmUserVo user, YearMonth billMonth) { + public int genBillByMonthAndPay(SmUserVo user, DeviceVO device, LocalDateTime billTime, BigDecimal amount) { ServiceUtil.assertion(user == null || user.getUserId() == null, "用户不存在"); - ServiceUtil.assertion(billMonth == null, "请指定一个月份"); + ServiceUtil.assertion(device == null || device.getDeviceId() == null, "设备不存在"); + ServiceUtil.assertion(billTime == null, "请指定一个月份"); // 查询指定月份是否已出账 ReceiveBillQuery query = new ReceiveBillQuery(); - query.setBillYear(billMonth.getYear()); - query.setBillMonth(billMonth.getMonthValue()); + query.setBillYear(billTime.getYear()); + query.setBillMonth(billTime.getMonthValue()); query.setType(ReceiveBillType.MONTH.getType()); query.setUserId(user.getUserId()); + query.setDeviceId(device.getDeviceId()); int count = this.selectCount(query); if ( count > 0) { return count; @@ -126,16 +134,28 @@ public class ReceiveBillServiceImpl implements ReceiveBillService // 若未出账则生成账单 ReceiveBill bill = new ReceiveBill(); bill.setUserId(user.getUserId()); + bill.setDeviceId(device.getDeviceId()); bill.setType(ReceiveBillType.MONTH.getType()); - bill.setStatus(ReceiveBillStatus.WAIT_PAY.getStatus()); - bill.setBillTime(LocalDateTime.of(LocalDate.of(billMonth.getYear(), billMonth.getMonthValue(), 1), LocalTime.MIN)); - bill.setAmount(user.getServiceRate()); - bill.setDescription(String.format("%s年%s月-月费", billMonth.getYear(), billMonth.getMonthValue())); - return this.insertReceiveBill(bill); + bill.setStatus(ReceiveBillStatus.PAID.getStatus()); + bill.setBillTime(billTime); + bill.setAmount(amount); + bill.setDescription(String.format("%s年%s月-设备%s月费", billTime.getYear(), billTime.getMonthValue(), device.getDeviceNo())); + bill.setReceivedAmount(amount); + Integer result = transactionTemplate.execute(status -> { + // 用户余额扣减 + int subtract = userService.subtractBalance(user.getUserId(), amount, false, bill.getDescription()); + ServiceUtil.assertion(subtract != 1, "扣减商户余额失败"); + + // 插入账单 + return this.insertReceiveBill(bill); + }); + + return result == null ? 0 : result; } @Override public int selectCount(ReceiveBillQuery query) { return receiveBillMapper.selectCount(query); } + } diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/refund/domain/Refund.java b/smart-switch-service/src/main/java/com/ruoyi/ss/refund/domain/Refund.java index d4749dcf..5115560c 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/refund/domain/Refund.java +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/refund/domain/Refund.java @@ -48,4 +48,13 @@ public class Refund extends BaseEntity @ApiModelProperty("手续费退款金额") private BigDecimal serviceAmount; + + @ApiModelProperty("操作人类型") + private String userType; + + @ApiModelProperty("操作人名称") + private String userName; + + @ApiModelProperty("操作人ID") + private Long userId; } diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/refund/mapper/RefundMapper.xml b/smart-switch-service/src/main/java/com/ruoyi/ss/refund/mapper/RefundMapper.xml index 9432e578..52284511 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/refund/mapper/RefundMapper.xml +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/refund/mapper/RefundMapper.xml @@ -17,6 +17,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" sr.reason, sr.mch_amount, sr.service_amount, + sr.user_type, + sr.user_id, + sr.user_name, smb.money as bill_amount, smb.bill_no as bill_no from ss_refund sr @@ -28,6 +31,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and sr.refund_no = #{query.refundNo} and sr.bill_id = #{query.billId} and sr.status = #{query.status} + and user_type = #{query.userType} + and user_id = #{query.userId} + and user_name like concat('%', #{query.userName}, '%')