|
@ -0,0 +1,162 @@
|
|
|
package com.yihu.jw.web.endpoint;
|
|
|
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
import com.yihu.jw.web.model.BaseEnvelop;
|
|
|
import com.yihu.jw.web.model.ListEnvelop;
|
|
|
import com.yihu.jw.web.model.MultiEnvelop;
|
|
|
import com.yihu.jw.web.model.ObjEnvelop;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.util.StringUtils;
|
|
|
|
|
|
import java.beans.PropertyDescriptor;
|
|
|
import java.io.IOException;
|
|
|
import java.lang.reflect.Method;
|
|
|
import java.util.*;
|
|
|
|
|
|
/**
|
|
|
* Created by progr1mmer on 2018/8/15.
|
|
|
*/
|
|
|
public abstract class EnvelopRestEndpoint {
|
|
|
|
|
|
@Autowired
|
|
|
protected ObjectMapper objectMapper;
|
|
|
|
|
|
protected BaseEnvelop success(String message) {
|
|
|
return success(message, 200);
|
|
|
}
|
|
|
|
|
|
protected BaseEnvelop success(String message, int status) {
|
|
|
BaseEnvelop baseEnvelop = new BaseEnvelop();
|
|
|
baseEnvelop.setMessage(message);
|
|
|
baseEnvelop.setStatus(status);
|
|
|
return baseEnvelop;
|
|
|
}
|
|
|
|
|
|
protected <J> ObjEnvelop<J> success(J obj){
|
|
|
return success(obj, "success", 200);
|
|
|
}
|
|
|
|
|
|
protected <J> ObjEnvelop<J> success(J obj, String message){
|
|
|
return success(obj, message, 200);
|
|
|
}
|
|
|
|
|
|
protected <J> ObjEnvelop<J> success(J obj, String message, Integer status){
|
|
|
ObjEnvelop<J> objEnvelop = new ObjEnvelop<>();
|
|
|
objEnvelop.setMessage(message);
|
|
|
objEnvelop.setStatus(status);
|
|
|
objEnvelop.setObj(obj);
|
|
|
return objEnvelop;
|
|
|
}
|
|
|
|
|
|
protected <T> ListEnvelop<T> success(List<T> detailModelList){
|
|
|
return success(detailModelList, "message", 200);
|
|
|
}
|
|
|
|
|
|
protected <T> ListEnvelop<T> success(List<T> detailModelList, String message){
|
|
|
return success(detailModelList, message, 200);
|
|
|
}
|
|
|
|
|
|
protected <T> ListEnvelop<T> success(List<T> detailModelList, String message, Integer status){
|
|
|
ListEnvelop<T> listEnvelop = new ListEnvelop<>();
|
|
|
listEnvelop.setMessage(message);
|
|
|
listEnvelop.setStatus(status);
|
|
|
listEnvelop.setDetailModelList(detailModelList);
|
|
|
return listEnvelop;
|
|
|
}
|
|
|
|
|
|
protected <T> MultiEnvelop success(List<T> detailModelList, int totalCount, int currPage, int rows) {
|
|
|
return success(detailModelList, "success", 200, totalCount, currPage, rows);
|
|
|
}
|
|
|
|
|
|
protected <T> MultiEnvelop success(List<T> detailModelList, String message, int totalCount, int currPage, int rows) {
|
|
|
return success(detailModelList, message, 200, totalCount, currPage, rows);
|
|
|
}
|
|
|
|
|
|
protected <T> MultiEnvelop success(List<T> detailModelList, String message, int status, int totalCount, int currPage, int rows) {
|
|
|
return success(detailModelList, null, message, status, totalCount, currPage, rows);
|
|
|
}
|
|
|
|
|
|
protected <T, J> MultiEnvelop success(List<T> detailModelList, J obj, String message, int status, int totalCount, int currPage, int rows) {
|
|
|
MultiEnvelop multiEnvelop = new MultiEnvelop();
|
|
|
multiEnvelop.setMessage(message);
|
|
|
multiEnvelop.setStatus(status);
|
|
|
multiEnvelop.setDetailModelList(detailModelList);
|
|
|
multiEnvelop.setObj(obj);
|
|
|
multiEnvelop.setTotalCount(totalCount);
|
|
|
multiEnvelop.setCurrPage(currPage);
|
|
|
multiEnvelop.setPageSize(rows);
|
|
|
if (totalCount % rows > 0) {
|
|
|
multiEnvelop.setTotalPage((totalCount / rows) + 1);
|
|
|
} else {
|
|
|
multiEnvelop.setTotalPage(totalCount / rows);
|
|
|
}
|
|
|
return multiEnvelop;
|
|
|
}
|
|
|
|
|
|
public <T> T toEntity(String json, Class<T> target) throws IOException {
|
|
|
T entity = objectMapper.readValue(json, target);
|
|
|
return entity;
|
|
|
}
|
|
|
|
|
|
public <T> T convertToModel(Object source, Class<T> target, String... properties) {
|
|
|
if (source == null) {
|
|
|
return null;
|
|
|
}
|
|
|
T _target = BeanUtils.instantiate(target);
|
|
|
BeanUtils.copyProperties(source, _target, propertyDiffer(properties, target));
|
|
|
return _target;
|
|
|
}
|
|
|
|
|
|
public <T> List<T> convertToModels(Collection sources, List<T> targets, Class<T> target){
|
|
|
if (null == sources) {
|
|
|
return null;
|
|
|
}
|
|
|
sources.forEach(item -> {
|
|
|
T _target = BeanUtils.instantiate(target);
|
|
|
BeanUtils.copyProperties(item, _target);
|
|
|
targets.add(_target);
|
|
|
});
|
|
|
return targets;
|
|
|
}
|
|
|
|
|
|
public <T> List<T> convertToModels(Collection sources, List<T> targets, Class<T> target, String properties) {
|
|
|
if (null == sources) {
|
|
|
return null;
|
|
|
}
|
|
|
sources.forEach(item -> {
|
|
|
T _target = BeanUtils.instantiate(target);
|
|
|
BeanUtils.copyProperties(item, _target, propertyDiffer(StringUtils.isEmpty(properties) ? null : properties.split(","), target));
|
|
|
targets.add(_target);
|
|
|
});
|
|
|
return targets;
|
|
|
}
|
|
|
|
|
|
protected String[] propertyDiffer(String[] properties, Class target) {
|
|
|
if (properties == null || properties.length == 0) {
|
|
|
return null;
|
|
|
}
|
|
|
PropertyDescriptor[] targetPds = BeanUtils.getPropertyDescriptors(target);
|
|
|
List<String> propertiesList = Arrays.asList(properties);
|
|
|
List<String> arrayList = new ArrayList<>();
|
|
|
for (PropertyDescriptor targetPd : targetPds) {
|
|
|
Method writeMethod = targetPd.getWriteMethod();
|
|
|
if (writeMethod != null && !propertiesList.contains(targetPd.getName())) {
|
|
|
arrayList.add(targetPd.getName());
|
|
|
}
|
|
|
}
|
|
|
return arrayList.toArray(new String[arrayList.size()]);
|
|
|
}
|
|
|
|
|
|
protected String randomString(int length) {
|
|
|
String str = "abcdefghigklmnopkrstuvwxyzABCDEFGHIGKLMNOPQRSTUVWXYZ0123456789";
|
|
|
StringBuffer buffer = new StringBuffer();
|
|
|
Random random = new Random();
|
|
|
for (int i = 0; i < length; i++) {
|
|
|
int number = random.nextInt(str.length());//0~61
|
|
|
buffer.append(str.charAt(number));
|
|
|
}
|
|
|
return buffer.toString();
|
|
|
}
|
|
|
|
|
|
}
|