自定义参数注解参数校验

自定义参数注解参数校验

自定义注解

@Documented
@Target({ElementType.PARAMETER, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface CheckParam {
    /**
     * 判断参数是否为null或“”,false不做校验,true校验(未校验trim())
     *
     * @return
     */
    boolean check() default true;
}

参数校验工具类

public class CheckParamUtils {

    /**
     * 参数校验 {@link com.ruoyi.common.utils.checkParam.CheckParam}
     *
     * @param o
     * @return
     */
    public static boolean check(Object o) {
        Class cla = o.getClass();
        Field[] fields = cla.getDeclaredFields();
        for (Field field : fields) {
            CheckParam checkParam = field.getAnnotation(CheckParam.class);
            if (checkParam == null) {
                continue;
            }
            if (checkParam.check()) {
                try {
                    field.setAccessible(true);
                    Object obj = field.get(o);
                    if (obj == null || obj == "") {
                        System.out.println("参数校验失败,失败参数:" + field.getName());
                        return false;
                    }
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                    System.out.println("参数校验异常,失败参数:" + field.getName());
                }
            }
        }
        return true;
    }
}

实体类

@Data
@ApiModel
public class AddOrderVO implements Serializable {

    @CheckParam
    @ApiModelProperty("车辆信息")
    private String carname;

    @CheckParam
    @ApiModelProperty("租期")
    private Integer leasetime;

    @CheckParam
    @ApiModelProperty("押金")
    private BigDecimal deposit;

    @CheckParam
    @ApiModelProperty("月租金")
    private BigDecimal monthlyrent;

    @CheckParam
    @ApiModelProperty("承租人姓名")
    private String rentername;

    @CheckParam
    @ApiModelProperty("承租人身份证号")
    private String renteridcard;

    @CheckParam
    @ApiModelProperty("承租人手机号")
    private String renteridphone;

}

调用参数校验


    @ApiOperation("新增司机端求租发布")
    @PostMapping("/addUserWanted")
    @BeahviorIntercept(event = "hire_issue", paramsOpen = false, personage = BeahviorIntercept.BeahviorRecordState.peosonal)
    public ApiResult<Object> addUserWanted(@RequestBody AddUserWantedVO addUserWnatedVO) {
        if (!CheckParamUtils.check(addUserWnatedVO)) {
            return ApiResult.fail("参数校验失败");
        }
        driverMessageService.addUserWanted(addUserWnatedVO.change(WebUtil.getUserId()));
        return ApiResult.ok();
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值