feat:[REQ-3488]
1. 新增验证工具类,与hutool不同的是, 这个工具类使用的java本身的validator
This commit is contained in:
parent
907b226291
commit
3f2761246d
@ -32,6 +32,14 @@
|
|||||||
<groupId>cn.axzo.orgmanax</groupId>
|
<groupId>cn.axzo.orgmanax</groupId>
|
||||||
<artifactId>orgmanax-dto</artifactId>
|
<artifactId>orgmanax-dto</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.glassfish</groupId>
|
||||||
|
<artifactId>javax.el</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.glassfish</groupId>
|
||||||
|
<artifactId>jakarta.el</artifactId>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
@ -0,0 +1,101 @@
|
|||||||
|
package cn.axzo.orgmanax.common;
|
||||||
|
|
||||||
|
import cn.axzo.orgmanax.dto.cooperateship.dto.OrgCooperateShipDTO;
|
||||||
|
import cn.hutool.extra.validation.BeanValidationResult;
|
||||||
|
import org.hibernate.validator.HibernateValidator;
|
||||||
|
import org.hibernate.validator.PredefinedScopeHibernateValidator;
|
||||||
|
|
||||||
|
import javax.validation.ConstraintViolation;
|
||||||
|
import javax.validation.Validation;
|
||||||
|
import javax.validation.Validator;
|
||||||
|
import javax.validation.ValidatorFactory;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: LiuYang
|
||||||
|
* @Date: 2024/2/1 14:13
|
||||||
|
*/
|
||||||
|
public class ValidationUtil {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 默认{@link Validator} 对象
|
||||||
|
*/
|
||||||
|
private static final Validator validator;
|
||||||
|
|
||||||
|
static {
|
||||||
|
try(ValidatorFactory factory = Validation.buildDefaultValidatorFactory()){
|
||||||
|
validator = factory.getValidator();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验对象
|
||||||
|
*
|
||||||
|
* @param <T> Bean类型
|
||||||
|
* @param bean bean
|
||||||
|
* @param groups 校验组
|
||||||
|
* @return {@link Set}
|
||||||
|
*/
|
||||||
|
public static <T> Set<ConstraintViolation<T>> validate(T bean, Class<?>... groups) {
|
||||||
|
return validator.validate(bean, groups);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验bean的某一个属性
|
||||||
|
*
|
||||||
|
* @param <T> Bean类型
|
||||||
|
* @param bean bean
|
||||||
|
* @param propertyName 属性名称
|
||||||
|
* @param groups 验证分组
|
||||||
|
* @return {@link Set}
|
||||||
|
*/
|
||||||
|
public static <T> Set<ConstraintViolation<T>> validateProperty(T bean, String propertyName, Class<?>... groups) {
|
||||||
|
return validator.validateProperty(bean, propertyName, groups);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验对象
|
||||||
|
*
|
||||||
|
* @param <T> Bean类型
|
||||||
|
* @param bean bean
|
||||||
|
* @param groups 校验组
|
||||||
|
* @return {@link BeanValidationResult}
|
||||||
|
*/
|
||||||
|
public static <T> BeanValidationResult warpValidate(T bean, Class<?>... groups) {
|
||||||
|
return warpBeanValidationResult(validate(bean, groups));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验bean的某一个属性
|
||||||
|
*
|
||||||
|
* @param <T> bean类型
|
||||||
|
* @param bean bean
|
||||||
|
* @param propertyName 属性名称
|
||||||
|
* @param groups 验证分组
|
||||||
|
* @return {@link BeanValidationResult}
|
||||||
|
*/
|
||||||
|
public static <T> BeanValidationResult warpValidateProperty(T bean, String propertyName, Class<?>... groups) {
|
||||||
|
return warpBeanValidationResult(validateProperty(bean, propertyName, groups));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 包装校验结果
|
||||||
|
*
|
||||||
|
* @param constraintViolations 校验结果集
|
||||||
|
* @return {@link BeanValidationResult}
|
||||||
|
*/
|
||||||
|
private static <T> BeanValidationResult warpBeanValidationResult(Set<ConstraintViolation<T>> constraintViolations) {
|
||||||
|
BeanValidationResult result = new BeanValidationResult(constraintViolations.isEmpty());
|
||||||
|
for (ConstraintViolation<T> constraintViolation : constraintViolations) {
|
||||||
|
BeanValidationResult.ErrorMessage errorMessage = new BeanValidationResult.ErrorMessage();
|
||||||
|
errorMessage.setPropertyName(constraintViolation.getPropertyPath().toString());
|
||||||
|
errorMessage.setMessage(constraintViolation.getMessage());
|
||||||
|
errorMessage.setValue(constraintViolation.getInvalidValue());
|
||||||
|
result.addErrorMessage(errorMessage);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -7,6 +7,7 @@ import lombok.Data;
|
|||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import lombok.experimental.SuperBuilder;
|
import lombok.experimental.SuperBuilder;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
@ -19,6 +20,7 @@ public class OrgCooperateShipDTO implements Serializable {
|
|||||||
/**
|
/**
|
||||||
* 主健
|
* 主健
|
||||||
*/
|
*/
|
||||||
|
@NotNull
|
||||||
private Long id;
|
private Long id;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -6,6 +6,9 @@ import lombok.Builder;
|
|||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotBlank;
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
|
|
||||||
@Builder
|
@Builder
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@ -15,46 +18,55 @@ public class CooperateShipCreator {
|
|||||||
/**
|
/**
|
||||||
* 工作台ID
|
* 工作台ID
|
||||||
*/
|
*/
|
||||||
|
@NotNull(message = "工作台ID为空")
|
||||||
private Long workspaceId;
|
private Long workspaceId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 工作台名称
|
* 工作台名称
|
||||||
*/
|
*/
|
||||||
|
@NotBlank(message = "工作台名称为空")
|
||||||
private String workspaceName;
|
private String workspaceName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 工作台类型
|
* 工作台类型
|
||||||
*/
|
*/
|
||||||
|
@NotNull(message = "工作台类型为空")
|
||||||
private Integer workspaceType;
|
private Integer workspaceType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 组织节点ID
|
* 组织节点ID
|
||||||
*/
|
*/
|
||||||
|
@NotNull(message = "组织节点ID为空")
|
||||||
private Long organizationalNodeId;
|
private Long organizationalNodeId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 组织单位ID
|
* 组织单位ID
|
||||||
*/
|
*/
|
||||||
|
@NotNull(message = "组织单位ID为空")
|
||||||
private Long organizationalUnitId;
|
private Long organizationalUnitId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 组织单位名称
|
* 组织单位名称
|
||||||
*/
|
*/
|
||||||
|
@NotBlank(message = "组织单位名称为空")
|
||||||
private String organizationalUnitName;
|
private String organizationalUnitName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 父级协同节点ID
|
* 父级协同节点ID
|
||||||
*/
|
*/
|
||||||
|
@NotNull(message = "父级协同节点ID为空")
|
||||||
private Long parentId;
|
private Long parentId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 协同类型
|
* 协同类型
|
||||||
*/
|
*/
|
||||||
|
@NotNull(message = "协同类型为空")
|
||||||
private Integer cooperateType;
|
private Integer cooperateType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 协作关系
|
* 协作关系
|
||||||
*/
|
*/
|
||||||
|
@NotNull(message = "协作关系为空")
|
||||||
private Integer partnerShip;
|
private Integer partnerShip;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -3,6 +3,8 @@ package cn.axzo.orgmanax.server.cooperateship.foundation.impl;
|
|||||||
import cn.axzo.foundation.event.support.Event;
|
import cn.axzo.foundation.event.support.Event;
|
||||||
import cn.axzo.foundation.event.support.producer.EventProducer;
|
import cn.axzo.foundation.event.support.producer.EventProducer;
|
||||||
import cn.axzo.foundation.exception.Axssert;
|
import cn.axzo.foundation.exception.Axssert;
|
||||||
|
import cn.axzo.foundation.exception.BusinessException;
|
||||||
|
import cn.axzo.orgmanax.common.ValidationUtil;
|
||||||
import cn.axzo.orgmanax.common.config.BizResultCode;
|
import cn.axzo.orgmanax.common.config.BizResultCode;
|
||||||
import cn.axzo.orgmanax.dto.cooperateship.dto.OrgCooperateShipDTO;
|
import cn.axzo.orgmanax.dto.cooperateship.dto.OrgCooperateShipDTO;
|
||||||
import cn.axzo.orgmanax.dto.cooperateship.enums.CooperateShipStatusEnum;
|
import cn.axzo.orgmanax.dto.cooperateship.enums.CooperateShipStatusEnum;
|
||||||
@ -30,8 +32,10 @@ import cn.hutool.core.util.StrUtil;
|
|||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
|
import java.util.function.Supplier;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import cn.hutool.extra.validation.BeanValidationResult;
|
||||||
import com.google.common.collect.ImmutableSet;
|
import com.google.common.collect.ImmutableSet;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
@ -145,6 +149,12 @@ public class CooperateShipFoundationServiceImpl implements CooperateShipFoundati
|
|||||||
@Override
|
@Override
|
||||||
public SaasCooperateShip create(CooperateShipCreator creator) {
|
public SaasCooperateShip create(CooperateShipCreator creator) {
|
||||||
|
|
||||||
|
// 入参校验
|
||||||
|
BeanValidationResult validationResult = ValidationUtil.warpValidate(creator);
|
||||||
|
Axssert.check(validationResult.isSuccess(), BizResultCode.INVALID_PARAM,
|
||||||
|
validationResult.getErrorMessages().stream().map(BeanValidationResult.ErrorMessage::getMessage).findFirst().orElse(""));
|
||||||
|
|
||||||
|
|
||||||
// 如果parentId不为空, 初始化父级协同节点
|
// 如果parentId不为空, 初始化父级协同节点
|
||||||
SaasCooperateShip parentCooperateShip = null;
|
SaasCooperateShip parentCooperateShip = null;
|
||||||
if (Objects.nonNull(creator.getParentId()) && creator.getParentId() > 0) {
|
if (Objects.nonNull(creator.getParentId()) && creator.getParentId() > 0) {
|
||||||
@ -191,7 +201,7 @@ public class CooperateShipFoundationServiceImpl implements CooperateShipFoundati
|
|||||||
.build())
|
.build())
|
||||||
.build());
|
.build());
|
||||||
// 返回结果
|
// 返回结果
|
||||||
return cooperateShipQueryRepository.one(CooperateShipQueryRepository.OneReq.builder().id(savedCooperateShip.getId()).build());
|
return savedCooperateShip;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -81,7 +81,6 @@ public class CooperateShipServiceImpl implements CooperateShipService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<OrgCooperateShipDTO> list(ListOrgCooperateShipReq req) {
|
public List<OrgCooperateShipDTO> list(ListOrgCooperateShipReq req) {
|
||||||
|
|
||||||
// 全局变量定义:是否查询当前节点的人员
|
// 全局变量定义:是否查询当前节点的人员
|
||||||
boolean isFilterCurrentNodeByPerson = ObjectUtil.isNotNull(req.getFilterByPersonId()) &&
|
boolean isFilterCurrentNodeByPerson = ObjectUtil.isNotNull(req.getFilterByPersonId()) &&
|
||||||
Objects.equals(req.getFilterMethod(), ListOrgCooperateShipReq.FILTER_PERSON_TYPE_CURRENT_NODE);
|
Objects.equals(req.getFilterMethod(), ListOrgCooperateShipReq.FILTER_PERSON_TYPE_CURRENT_NODE);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user