Commit b85d660a5cc375bccb9c200fd0ac4a813c62c00d

Authored by owen
1 parent 0a0c3c0e

trade: 分销业务完善校验

yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/brokerage/vo/record/AppBrokerageRecordPageReqVO.java
1 package cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.record; 1 package cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.record;
2 2
3 import cn.iocoder.yudao.framework.common.pojo.PageParam; 3 import cn.iocoder.yudao.framework.common.pojo.PageParam;
  4 +import cn.iocoder.yudao.framework.common.validation.InEnum;
  5 +import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageRecordBizTypeEnum;
  6 +import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageRecordStatusEnum;
4 import io.swagger.v3.oas.annotations.media.Schema; 7 import io.swagger.v3.oas.annotations.media.Schema;
5 import lombok.Data; 8 import lombok.Data;
6 9
@@ -8,12 +11,12 @@ import lombok.Data; @@ -8,12 +11,12 @@ import lombok.Data;
8 @Data 11 @Data
9 public class AppBrokerageRecordPageReqVO extends PageParam { 12 public class AppBrokerageRecordPageReqVO extends PageParam {
10 13
11 - // TODO @疯狂:要加下枚举校验  
12 -  
13 @Schema(description = "业务类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") 14 @Schema(description = "业务类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  15 + @InEnum(value = BrokerageRecordBizTypeEnum.class, message = "业务类型必须是 {value}")
14 private Integer bizType; 16 private Integer bizType;
15 17
16 @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") 18 @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  19 + @InEnum(value = BrokerageRecordStatusEnum.class, message = "状态必须是 {value}")
17 private Integer status; 20 private Integer status;
18 21
19 } 22 }
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/brokerage/vo/withdraw/AppBrokerageWithdrawCreateReqVO.java
1 package cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.withdraw; 1 package cn.iocoder.yudao.module.trade.controller.app.brokerage.vo.withdraw;
2 2
  3 +import cn.iocoder.yudao.framework.common.util.validation.ValidationUtils;
  4 +import cn.iocoder.yudao.framework.common.validation.InEnum;
  5 +import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageWithdrawTypeEnum;
3 import io.swagger.v3.oas.annotations.media.Schema; 6 import io.swagger.v3.oas.annotations.media.Schema;
4 import lombok.Data; 7 import lombok.Data;
5 import org.hibernate.validator.constraints.URL; 8 import org.hibernate.validator.constraints.URL;
6 9
  10 +import javax.validation.Validator;
7 import javax.validation.constraints.Min; 11 import javax.validation.constraints.Min;
  12 +import javax.validation.constraints.NotBlank;
8 13
9 @Schema(description = "用户 App - 分销提现创建 Request VO") 14 @Schema(description = "用户 App - 分销提现创建 Request VO")
10 @Data 15 @Data
11 public class AppBrokerageWithdrawCreateReqVO { 16 public class AppBrokerageWithdrawCreateReqVO {
12 17
13 - // TODO @疯狂:参数校验逻辑,需要根据 type 进行不同的校验;感觉可以通过分组?  
14 -  
15 @Schema(description = "提现方式", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") 18 @Schema(description = "提现方式", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  19 + @InEnum(value = BrokerageWithdrawTypeEnum.class, message = "提现方式必须是 {value}")
16 private Integer type; 20 private Integer type;
17 21
18 - @Schema(description = "提现账号", requiredMode = Schema.RequiredMode.REQUIRED, example = "123456789") // 银行卡号/微信账号/支付宝账号 22 + @Schema(description = "提现金额,单位:分", requiredMode = Schema.RequiredMode.REQUIRED, example = "1000")
  23 + @Min(value = 1, message = "提现金额不能小于 1")
  24 + private Integer price;
  25 +
  26 +
  27 + // ========== 银行卡、微信、支付宝 提现相关字段 ==========
  28 +
  29 + @Schema(description = "提现账号", requiredMode = Schema.RequiredMode.REQUIRED, example = "123456789")
  30 + @NotBlank(message = "提现账号不能为空", groups = {Bank.class, Wechat.class, Alipay.class})
19 private String accountNo; 31 private String accountNo;
20 32
  33 +
  34 + // ========== 微信、支付宝 提现相关字段 ==========
  35 +
21 @Schema(description = "收款码的图片", example = "https://www.iocoder.cn/1.png") 36 @Schema(description = "收款码的图片", example = "https://www.iocoder.cn/1.png")
22 @URL(message = "收款码的图片,必须是一个 URL") 37 @URL(message = "收款码的图片,必须是一个 URL")
23 private String accountQrCodeUrl; 38 private String accountQrCodeUrl;
24 39
25 - @Schema(description = "提现金额,单位:分", requiredMode = Schema.RequiredMode.REQUIRED, example = "1000")  
26 - @Min(value = 1, message = "提现金额必须大于 1")  
27 - private Integer price; 40 +
  41 + // ========== 银行卡 提现相关字段 ==========
  42 +
  43 + @Schema(description = "持卡人姓名", example = "张三")
  44 + @NotBlank(message = "持卡人姓名不能为空", groups = {Bank.class})
  45 + private String name;
  46 + @Schema(description = "提现银行", example = "1")
  47 + @NotBlank(message = "提现银行不能为空", groups = {Bank.class})
  48 + private Integer bankName;
  49 + @Schema(description = "开户地址", example = "海淀支行")
  50 + private String bankAddress;
  51 +
  52 + public interface Wallet {
  53 + }
  54 +
  55 + public interface Bank {
  56 + }
  57 +
  58 + public interface Wechat {
  59 + }
  60 +
  61 + public interface Alipay {
  62 + }
  63 +
  64 + public void validate(Validator validator) {
  65 + if (BrokerageWithdrawTypeEnum.WALLET.getType().equals(type)) {
  66 + ValidationUtils.validate(validator, this, Wallet.class);
  67 + } else if (BrokerageWithdrawTypeEnum.BANK.getType().equals(type)) {
  68 + ValidationUtils.validate(validator, this, Bank.class);
  69 + } else if (BrokerageWithdrawTypeEnum.WECHAT.getType().equals(type)) {
  70 + ValidationUtils.validate(validator, this, Wechat.class);
  71 + } else if (BrokerageWithdrawTypeEnum.ALIPAY.getType().equals(type)) {
  72 + ValidationUtils.validate(validator, this, Alipay.class);
  73 + }
  74 + }
28 75
29 } 76 }
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/brokerage/bo/BrokerageAddReqBO.java
@@ -4,6 +4,8 @@ import lombok.AllArgsConstructor; @@ -4,6 +4,8 @@ import lombok.AllArgsConstructor;
4 import lombok.Data; 4 import lombok.Data;
5 import lombok.NoArgsConstructor; 5 import lombok.NoArgsConstructor;
6 6
  7 +import javax.validation.constraints.NotBlank;
  8 +
7 /** 9 /**
8 * 佣金 增加 Request BO 10 * 佣金 增加 Request BO
9 * 11 *
@@ -14,11 +16,10 @@ import lombok.NoArgsConstructor; @@ -14,11 +16,10 @@ import lombok.NoArgsConstructor;
14 @AllArgsConstructor 16 @AllArgsConstructor
15 public class BrokerageAddReqBO { 17 public class BrokerageAddReqBO {
16 18
17 - // TODO @疯狂:bo 的话,也可以考虑加下 @Validated 注解,校验下参数;防御性下哈,虽然不一定用的到  
18 -  
19 /** 19 /**
20 - * 业务ID 20 + * 业务编号
21 */ 21 */
  22 + @NotBlank(message = "业务编号不能为空")
22 private String bizId; 23 private String bizId;
23 /** 24 /**
24 * 佣金基数 25 * 佣金基数
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/brokerage/record/BrokerageRecordService.java
@@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageRecordBizTypeEnum; @@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageRecordBizTypeEnum;
7 import cn.iocoder.yudao.module.trade.service.brokerage.bo.BrokerageAddReqBO; 7 import cn.iocoder.yudao.module.trade.service.brokerage.bo.BrokerageAddReqBO;
8 import cn.iocoder.yudao.module.trade.service.brokerage.bo.UserBrokerageSummaryBO; 8 import cn.iocoder.yudao.module.trade.service.brokerage.bo.UserBrokerageSummaryBO;
9 9
  10 +import javax.validation.Valid;
10 import java.util.List; 11 import java.util.List;
11 12
12 /** 13 /**
@@ -39,7 +40,7 @@ public interface BrokerageRecordService { @@ -39,7 +40,7 @@ public interface BrokerageRecordService {
39 * @param bizType 业务类型 40 * @param bizType 业务类型
40 * @param list 请求参数列表 41 * @param list 请求参数列表
41 */ 42 */
42 - void addBrokerage(Long userId, BrokerageRecordBizTypeEnum bizType, List<BrokerageAddReqBO> list); 43 + void addBrokerage(Long userId, BrokerageRecordBizTypeEnum bizType, @Valid List<BrokerageAddReqBO> list);
43 44
44 /** 45 /**
45 * 取消佣金:将佣金记录,状态修改为已失效 46 * 取消佣金:将佣金记录,状态修改为已失效