forked from kidgrow-microservices-platform

1、扩展日期数据校验注解
2、扩展kidgrow-code-generator 中Controller.java.vm 保存修改数据校验、Model.java.vm 校验依赖包扩展
2 files added
5 files modified
174 ■■■■■ changed files
kidgrow-business/kidgrow-code-generator/src/main/resources/template/Controller.java.vm 6 ●●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-code-generator/src/main/resources/template/Model.java.vm 3 ●●●● patch | view | raw | blame | history
kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/annotation/DateValidator.java 52 ●●●●● patch | view | raw | blame | history
kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/constant/BaseConstants.java 5 ●●●●● patch | view | raw | blame | history
kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/utils/KidgrowDateValidator.java 62 ●●●●● patch | view | raw | blame | history
kidgrow-demo/kidgrow-demo-order/src/main/java/com/kidgrow/order/controller/OrderTestController.java 9 ●●●● patch | view | raw | blame | history
kidgrow-demo/kidgrow-demo-order/src/main/java/com/kidgrow/order/model/OrderTest.java 37 ●●●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-code-generator/src/main/resources/template/Controller.java.vm
@@ -83,8 +83,12 @@
    @ApiOperation(value = "保存")
    @PostMapping
    public ResultBody save(@Valid @RequestBody ${className} ${classname}, BindingResult bindingResult) {
        List<String> errMsg= new ArrayList<>();
        if (bindingResult.hasErrors()) {
            return ResultBody.failed().msg(bindingResult.getFieldError().getDefaultMessage());
            for (ObjectError error : bindingResult.getAllErrors()) {
                errMsg.add(error.getDefaultMessage());
            }
            return ResultBody.failed().msg(errMsg.toString());
        } else {
            boolean v= ${classname}Service.saveOrUpdate(${classname});
            if(v) {
kidgrow-business/kidgrow-code-generator/src/main/resources/template/Model.java.vm
@@ -11,6 +11,7 @@
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.*;
import javax.validation.constraints.*;
#if(${hasBigDecimal})
import java.math.BigDecimal;
#end
@@ -38,7 +39,7 @@
    * $column.comments
    */
    #if($column.isNullAble=="NO")
    @NotBlank(message = "$column.comments不能为空")
    @NotEmpty(message = "$column.comments不能为空")
    #end
    private $column.attrType $column.attrname;
    #end
kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/annotation/DateValidator.java
New file
@@ -0,0 +1,52 @@
package com.kidgrow.common.annotation;
/**
 * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
 *
 * @Description: <br>
 * @Project: <br>
 * @CreateDate: Created in 2020/4/3 11:40 <br>
 * @Author: <a href="4345453@kidgrow.com">liuke</a>
 */
import com.kidgrow.common.utils.KidgrowDateValidator;
import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.*;
@Documented
// 指定该注解可以使用的地方
@Target(value = {ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
// 指定实际进行校验的校验器,该校验器是自己写的且必须实现ConstraintValidator接口
@Constraint(validatedBy = KidgrowDateValidator.class)
public @interface DateValidator {
    /**
     * 时间不早于
     * @return
     */
    String minDate() default "";
    /**
     * 时间不晚于
     * @return
     */
    String maxDate() default "";
    /**
     * 时间格式定义
     * @return
     */
    String pattern() default "yyyy-MM-dd";
    /**
     * 没加default给定默认值,使用注解的时候该属性必须赋值,否则报错
     * @return
     */
    String message();
    Class<?>[] groups() default {};
    Class<? extends Payload>[] payload() default {};
}
kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/constant/BaseConstants.java
@@ -92,5 +92,10 @@
     * 动态数据库名前缀。  每个项目配置死的
     */
    public static final String DATABASE_NAME = "database_name";
    /**
     * 手机验证正则表达式
     */
    public static final String PHONE_REGEXP="/^[1](([3][0-9])|([4][5-9])|([5][0-3,5-9])|([6][5,6])|([7][0-8])|([8][0-9])|([9][1,8,9]))[0-9]{8}$/";
}
kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/utils/KidgrowDateValidator.java
New file
@@ -0,0 +1,62 @@
package com.kidgrow.common.utils;
import com.kidgrow.common.annotation.DateValidator;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
 * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
 *
 * @Description: <br>
 * @Project: <br>
 * @CreateDate: Created in 2020/4/3 11:41 <br>
 * @Author: <a href="4345453@kidgrow.com">liuke</a>
 */
public class KidgrowDateValidator implements ConstraintValidator<DateValidator, Date> {
    private DateValidator dateValidator;
    @Override
    public void initialize(DateValidator constraintAnnotation) {
        this.dateValidator = constraintAnnotation;
    }
    @Override
    public boolean isValid(Date value, ConstraintValidatorContext context) {
        String pattern = dateValidator.pattern();
        SimpleDateFormat df = new SimpleDateFormat(pattern);
        String myMinDate = dateValidator.minDate();
        String myMaxDate = dateValidator.maxDate();
        // 为空可以放过
        if (value == null){
            return true;
        }
        try {
            Date maxDate = null;
            Date minDate = null;
            if ("".equals(myMinDate)){
                // 未设置最小时间
                maxDate = df.parse(dateValidator.maxDate());
                // compareTo方法, 1:后者大于前者;-1:后者小于前者;0:两个相同
                return value.compareTo(maxDate) != 1;
            } else if ("".equals(myMaxDate)){
                // 未设置最大时间
                minDate = df.parse(dateValidator.minDate());
                return value.compareTo(minDate) >= 0;
            } else {
                // 设置了最大时间和最小时间
                maxDate = df.parse(dateValidator.maxDate());
                minDate = df.parse(dateValidator.minDate());
                return value.compareTo(maxDate) != 1 && value.compareTo(minDate) >= 0;
            }
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return false;
    }
}
kidgrow-demo/kidgrow-demo-order/src/main/java/com/kidgrow/order/controller/OrderTestController.java
@@ -12,9 +12,12 @@
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
import org.springframework.validation.ObjectError;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -68,8 +71,12 @@
    @ApiOperation(value = "保存")
    @PostMapping
    public ResultBody save(@Valid @RequestBody OrderTest orderTest, BindingResult bindingResult) {
        List<String> errMsg= new ArrayList<>();
        if (bindingResult.hasErrors()) {
            return ResultBody.failed().msg(bindingResult.getFieldError().getDefaultMessage());
            for (ObjectError error : bindingResult.getAllErrors()) {
                errMsg.add(error.getDefaultMessage());
            }
            return ResultBody.failed().msg(errMsg.toString());
        } else {
            boolean v= orderTestService.saveOrUpdate(orderTest);
            if(v) {
kidgrow-demo/kidgrow-demo-order/src/main/java/com/kidgrow/order/model/OrderTest.java
@@ -1,10 +1,19 @@
package com.kidgrow.order.model;
import com.baomidou.mybatisplus.annotation.TableName;
import com.kidgrow.common.annotation.DateValidator;
import com.kidgrow.common.model.SuperModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.*;
import org.hibernate.validator.constraints.Email;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotEmpty;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import java.util.Date;
@@ -24,11 +33,33 @@
    private static final long serialVersionUID = 1L;
    //
    @NotBlank(message = "订单名不能为空")
    @NotEmpty(message = "订单名不能为空")
    private String name;
    //
    @Length(min=5, max=10,message = "用户名长度为5-10")
    @NotBlank(message = "用户名不能为空")
    @NotEmpty(message = "用户名不能为空")
    private String namecn;
    @DateValidator(minDate = "2019-01-01",message = "有效期限不能早于2019-01-01")
    private Date addDate;
    @NotEmpty(message = "邮箱不能为空")
    @Email(message = "邮箱格式不正确")
    private String mail;
    @NotEmpty(message = "手机号不能为空")
//    @Pattern(regexp= BaseConstants.PHONE_REGEXP,message = "手机号格式不正确")
    private String phone;
    @NotNull(message = "年龄不能为空")
    @Min(value = 0,message = "年龄必须大于等于0")
    @Max(value = 200,message = "年龄不能大于200")
    private Integer age;
    @NotNull(message = "性别不能为空")
    @Min(value = 0,message = "性别,1-男,2-女,0-未知")
    @Max(value = 2,message = "性别,1-男,2-女,0-未知")
    private Integer sex;
}