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; }