package com.kidgrow.common.controller; import com.fasterxml.jackson.databind.ObjectMapper; import com.kidgrow.common.exception.BeanValidateException; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.modelmapper.ModelMapper; import org.springframework.beans.factory.annotation.Autowired; import javax.validation.ConstraintViolation; import javax.validation.Validator; import java.io.IOException; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; /** * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020
* * @Description: 基类
* @Project:
* @CreateDate: Created in 2020/2/3 17:08
* @Author: liuke */ @Slf4j public class BaseController { @Autowired(required=false) private ModelMapper modelMapper; @Autowired private ObjectMapper objectMapper; @Autowired(required = false) private Validator validator; protected T parseAndValidParams(String str, Class clazz) { T dto = null; try { str = StringUtils.isBlank(str) ? "{}" : str; dto = objectMapper.readValue(str, clazz); } catch (IOException e) { throw new BeanValidateException("解析数据时发生错误"); } if (validator != null) { Set> errors = null; try { errors = validator.validate(dto); } catch (Exception e) { log.error("参数校验异常", e); throw new BeanValidateException("解析数据时发生错误"); } if (CollectionUtils.isNotEmpty(errors)) { Set> errorSet = new HashSet<>(errors); throw new BeanValidateException("参数不符合要求", errorSet); } } return dto; } protected T parseParams(String str, Class clazz) { T dto = null; try { str = StringUtils.isBlank(str) ? "{}" : str; dto = objectMapper.readValue(str, clazz); } catch (IOException e) { throw new BeanValidateException("解析数据时发生错误"); } return dto; } protected T map(Object data, Class clazz) { return modelMapper.map(data, clazz); } protected List mapList(List data, Class clazz) { if (data == null) { return null; } List result = new ArrayList<>(data.size()); for (Object item : data) { result.add(modelMapper.map(item, clazz)); } return result; } }