diff --git a/smart-switch-ruoyi/smart-switch-common/src/main/java/com/ruoyi/common/core/domain/entity/SmUser.java b/smart-switch-ruoyi/smart-switch-common/src/main/java/com/ruoyi/common/core/domain/entity/SmUser.java index 74b8ea61..32679e84 100644 --- a/smart-switch-ruoyi/smart-switch-common/src/main/java/com/ruoyi/common/core/domain/entity/SmUser.java +++ b/smart-switch-ruoyi/smart-switch-common/src/main/java/com/ruoyi/common/core/domain/entity/SmUser.java @@ -17,6 +17,7 @@ import com.ruoyi.common.annotation.Excel; import com.ruoyi.common.core.domain.BaseEntity; import org.springframework.format.annotation.DateTimeFormat; +import javax.validation.constraints.Min; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; @@ -225,6 +226,7 @@ public class SmUser extends BaseEntity @Excel(name = "订单查看用户手机号所需的金额", readConverterExp = "元=/单") @ApiModelProperty("订单查看用户手机号所需的金额") + @Min(value = 0, message = "订单显示用户手机号单价不允许小于0元/单") private BigDecimal showBillMobilePrice; } diff --git a/smart-switch-ruoyi/smart-switch-common/src/main/java/com/ruoyi/common/enums/DesensitizedType.java b/smart-switch-ruoyi/smart-switch-common/src/main/java/com/ruoyi/common/enums/DesensitizedType.java index 45444d96..7e5f208e 100644 --- a/smart-switch-ruoyi/smart-switch-common/src/main/java/com/ruoyi/common/enums/DesensitizedType.java +++ b/smart-switch-ruoyi/smart-switch-common/src/main/java/com/ruoyi/common/enums/DesensitizedType.java @@ -44,7 +44,12 @@ public enum DesensitizedType /** * 车牌号码,包含普通车辆、新能源车辆 */ - CAR_LICENSE(DesensitizedUtil::carLicense); + CAR_LICENSE(DesensitizedUtil::carLicense), + + /** + * 通用,保留前后各一位,中间所有用星号替换 + */ + COMMON(s -> s.replaceAll("(?<=\\w{1})\\w(?=\\w{1})", "*")); private final Function desensitizer; diff --git a/smart-switch-service/src/main/java/com/ruoyi/dashboard/domain/vo/ServiceIncomeVO.java b/smart-switch-service/src/main/java/com/ruoyi/dashboard/domain/vo/ServiceIncomeVO.java index e553902e..7823d317 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/dashboard/domain/vo/ServiceIncomeVO.java +++ b/smart-switch-service/src/main/java/com/ruoyi/dashboard/domain/vo/ServiceIncomeVO.java @@ -28,4 +28,7 @@ public class ServiceIncomeVO { @ApiModelProperty("渠道成本") private BigDecimal channelCost; + @ApiModelProperty("订单手机号收入") + private BigDecimal billMobileAmount; + } diff --git a/smart-switch-service/src/main/java/com/ruoyi/dashboard/service/DashboardService.java b/smart-switch-service/src/main/java/com/ruoyi/dashboard/service/DashboardService.java index c3fd1eca..3f804d12 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/dashboard/service/DashboardService.java +++ b/smart-switch-service/src/main/java/com/ruoyi/dashboard/service/DashboardService.java @@ -136,11 +136,15 @@ public class DashboardService { // 查询月费收入 ReceiveBillQuery receiveQuery = new ReceiveBillQuery(); - receiveQuery.setType(ReceiveBillType.MONTH.getType()); receiveQuery.setStartDate(query.getStartDate()); receiveQuery.setEndDate(query.getEndDate()); + receiveQuery.setType(ReceiveBillType.MONTH.getType()); List> receiveList = receiveBillService.selectCommonSumOfAmount(receiveQuery, ReceiveBillGroupBy.create_date.name()); + // 查询订单手机号收入 + receiveQuery.setType(ReceiveBillType.MOBILE.getType()); + List> mobileList = receiveBillService.selectCommonSumOfAmount(receiveQuery, ReceiveBillGroupBy.create_date.name()); + // 拼接结果集 List result = new ArrayList<>(); if (query.getStartDate() != null && query.getEndDate() != null) { @@ -190,6 +194,17 @@ public class DashboardService { vo.setMonthAmount(BigDecimal.ZERO); } + // 订单手机号收入 + ReceiveAmountVO mobile = mobileList.stream() + .filter(item -> item.getKey().compareTo(DateUtils.toDate(date)) == 0) + .findFirst() + .orElse(null); + if (mobile != null) { + vo.setBillMobileAmount(mobile.getReceivedAmount()); + } else { + vo.setBillMobileAmount(BigDecimal.ZERO); + } + return vo; }, query.getStartDate(), query.getEndDate()); } diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/domain/vo/TransactionBillVO.java b/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/domain/vo/TransactionBillVO.java index d83b3e9f..95a0f7a0 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/domain/vo/TransactionBillVO.java +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/domain/vo/TransactionBillVO.java @@ -1,7 +1,9 @@ package com.ruoyi.ss.transactionBill.domain.vo; import com.fasterxml.jackson.annotation.JsonView; +import com.ruoyi.common.annotation.Sensitive; import com.ruoyi.common.core.domain.JsonViewProfile; +import com.ruoyi.common.enums.DesensitizedType; import com.ruoyi.ss.bonus.domain.Bonus; import com.ruoyi.ss.bonus.domain.BonusVO; import com.ruoyi.iot.interfaces.IotDevice; @@ -26,6 +28,7 @@ import java.util.List; public class TransactionBillVO extends TransactionBill implements IotDevice { @ApiModelProperty("用户名称") @JsonView(JsonViewProfile.App.class) + @Sensitive(desensitizedType = DesensitizedType.COMMON) private String userName; @ApiModelProperty("商户(到账用户)名称") diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/service/impl/TransactionAssemblerImpl.java b/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/service/impl/TransactionAssemblerImpl.java index 08e478ce..f59bf816 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/service/impl/TransactionAssemblerImpl.java +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/service/impl/TransactionAssemblerImpl.java @@ -1,6 +1,8 @@ package com.ruoyi.ss.transactionBill.service.impl; import com.github.pagehelper.PageHelper; +import com.ruoyi.common.enums.DesensitizedType; +import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.collection.CollectionUtils; import com.ruoyi.ss.bonus.domain.BonusQuery; import com.ruoyi.ss.bonus.domain.BonusVO; @@ -144,7 +146,7 @@ public class TransactionAssemblerImpl implements TransactionAssembler { @Override public void handleMchUserMobile(List list) { - if (CollectionUtils.isNotEmptyElement(list)) { + if (CollectionUtils.isEmptyElement(list)) { return; } @@ -153,8 +155,11 @@ public class TransactionAssemblerImpl implements TransactionAssembler { continue; } boolean payed = RechargeBillShowMobileStatus.PAID.getStatus().equals(bill.getMchShowMobileStatus()); // 是否已经缴费 + // 若商户不需要显示手机号 或者 未缴费,则手机号脱敏 if (bill.getMchShowMobile() == null || !bill.getMchShowMobile() || !payed) { - bill.setUserMobile(null); + if (StringUtils.hasText(bill.getUserMobile())) { + bill.setUserMobile(DesensitizedType.PHONE.desensitizer().apply(bill.getUserMobile())); + } } } }