|
@ -1,8 +1,8 @@
|
|
|
package com.yihu.jw.restmodel.web.endpoint;
|
|
|
|
|
|
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
import com.yihu.jw.restmodel.web.ListEnvelop;
|
|
|
import com.yihu.jw.restmodel.web.MixEnvelop;
|
|
|
import com.yihu.jw.restmodel.web.ObjEnvelop;
|
|
@ -20,76 +20,74 @@ import java.lang.reflect.Method;
|
|
|
import java.util.*;
|
|
|
|
|
|
/**
|
|
|
* REST风格控控制器基类。此控制器用于对API进行校验,并处理平台根层级的业务,如API参数校验,错误及返回码设定等。
|
|
|
* <p>
|
|
|
* 根层级的校验,如果是正确的,直接返回HTTP代码200,若出错,则会将HTTP返回代码设置为1X或2X,并在HTTP响应体中包含响应的信息。
|
|
|
* REST风格控控制器基类。
|
|
|
* 基于Envelop的返回结果封装
|
|
|
* HTTP响应体格式为JSON。
|
|
|
* + 成功:会根据各业务逻辑自行决定要返回的数据,各业务模块的返回结构不同。
|
|
|
* + 失败:{"code":"错误代码", "message":"错误原因"}
|
|
|
* + 成功:根据各业务逻辑自行决定要返回的数据,各业务模块的返回结构不尽相同。
|
|
|
* + 失败:{"status":错误码, "message":"错误原因"}
|
|
|
*
|
|
|
* @author zhiyong
|
|
|
* @author Sand
|
|
|
* @author Progr1mmer
|
|
|
*/
|
|
|
public abstract class EnvelopRestEndpoint {
|
|
|
|
|
|
@Autowired
|
|
|
protected ObjectMapper objectMapper;
|
|
|
|
|
|
protected Envelop success(String desc) {
|
|
|
return success(desc, 200);
|
|
|
protected Envelop success(String message) {
|
|
|
return success(message, 200);
|
|
|
}
|
|
|
|
|
|
protected Envelop success(String desc, int code) {
|
|
|
protected Envelop success(String message, int status) {
|
|
|
Envelop envelop = new Envelop();
|
|
|
envelop.setMessage(desc);
|
|
|
envelop.setStatus(code);
|
|
|
envelop.setMessage(message);
|
|
|
envelop.setStatus(status);
|
|
|
return envelop;
|
|
|
}
|
|
|
|
|
|
protected <J> ObjEnvelop<J> success(J data){
|
|
|
return success(data, "success");
|
|
|
protected <J> ObjEnvelop<J> success(J obj){
|
|
|
return success("success", obj);
|
|
|
}
|
|
|
|
|
|
protected <J> ObjEnvelop<J> success(J data, String desc){
|
|
|
return success(data, desc, 200);
|
|
|
protected <J> ObjEnvelop<J> success(String message, J obj){
|
|
|
return success(message, 200, obj);
|
|
|
}
|
|
|
|
|
|
protected <J> ObjEnvelop<J> success(J data, String desc, int code){
|
|
|
protected <J> ObjEnvelop<J> success(String message, int status, J obj){
|
|
|
ObjEnvelop<J> objEnvelop = new ObjEnvelop<>();
|
|
|
objEnvelop.setMessage(desc);
|
|
|
objEnvelop.setStatus(code);
|
|
|
objEnvelop.setObj(data);
|
|
|
objEnvelop.setMessage(message);
|
|
|
objEnvelop.setStatus(status);
|
|
|
objEnvelop.setObj(obj);
|
|
|
return objEnvelop;
|
|
|
}
|
|
|
|
|
|
protected <T> ListEnvelop<T> success(List<T> contents){
|
|
|
return success(contents, "success");
|
|
|
return success("success", contents);
|
|
|
}
|
|
|
|
|
|
protected <T> ListEnvelop<T> success(List<T> contents, String desc){
|
|
|
return success(contents, desc, 200);
|
|
|
protected <T> ListEnvelop<T> success(String message, List<T> contents){
|
|
|
return success(message, 200, contents);
|
|
|
}
|
|
|
|
|
|
protected <T> ListEnvelop<T> success(List<T> contents, String desc, int code){
|
|
|
protected <T> ListEnvelop<T> success(String message, int status, List<T> contents){
|
|
|
ListEnvelop<T> listEnvelop = new ListEnvelop<>();
|
|
|
listEnvelop.setMessage(desc);
|
|
|
listEnvelop.setStatus(code);
|
|
|
listEnvelop.setMessage(message);
|
|
|
listEnvelop.setStatus(status);
|
|
|
listEnvelop.setDetailModelList(contents);
|
|
|
return listEnvelop;
|
|
|
}
|
|
|
|
|
|
protected <T> PageEnvelop<T> success(List<T> contents, int totalCount, int currPage, int pageSize) {
|
|
|
return success(contents, "success", totalCount, currPage, pageSize);
|
|
|
return success("success", contents, totalCount, currPage, pageSize);
|
|
|
}
|
|
|
|
|
|
protected <T> PageEnvelop<T> success(List<T> contents, String desc, int totalCount, int currPage, int pageSize) {
|
|
|
return success(contents, desc, 200, totalCount, currPage, pageSize);
|
|
|
protected <T> PageEnvelop<T> success(String message, List<T> contents, int totalCount, int currPage, int pageSize) {
|
|
|
return success(message, 200, contents, totalCount, currPage, pageSize);
|
|
|
}
|
|
|
|
|
|
protected <T> PageEnvelop<T> success(List<T> contents, String desc, int code, int totalCount, int currPage, int pageSize) {
|
|
|
protected <T> PageEnvelop<T> success(String message, int status, List<T> contents, int totalCount, int currPage, int pageSize) {
|
|
|
PageEnvelop<T> pageEnvelop = new PageEnvelop();
|
|
|
pageEnvelop.setMessage(desc);
|
|
|
pageEnvelop.setStatus(code);
|
|
|
pageEnvelop.setMessage(message);
|
|
|
pageEnvelop.setStatus(status);
|
|
|
pageEnvelop.setCurrPage(currPage);
|
|
|
pageEnvelop.setPageSize(pageSize);
|
|
|
pageEnvelop.setTotalCount(totalCount);
|
|
@ -98,38 +96,35 @@ public abstract class EnvelopRestEndpoint {
|
|
|
}
|
|
|
|
|
|
protected <T, J> MixEnvelop<T, J> success(List<T> contents, J obj) {
|
|
|
return success(contents, obj, "success");
|
|
|
return success("success", contents, obj);
|
|
|
}
|
|
|
|
|
|
protected <T, J> MixEnvelop<T, J> success(List<T> contents, J obj, String desc) {
|
|
|
return success(contents, obj, desc, 200);
|
|
|
protected <T, J> MixEnvelop<T, J> success(String message, List<T> contents, J obj) {
|
|
|
return success(message, 200, contents, obj);
|
|
|
}
|
|
|
|
|
|
protected <T, J> MixEnvelop<T, J> success(List<T> contents, J data, String desc, int code) {
|
|
|
return success(contents, data, desc, code, contents.size(), 1, contents.size());
|
|
|
protected <T, J> MixEnvelop<T, J> success(String message, int status, List<T> contents, J obj) {
|
|
|
return success(message, status, contents, obj, contents.size(), 1, contents.size());
|
|
|
}
|
|
|
|
|
|
protected <T, J> MixEnvelop<T, J> success(List<T> contents, J data, String desc, int code, int totalCount, int currPage, int pageSize) {
|
|
|
protected <T, J> MixEnvelop<T, J> success(String message, int status, List<T> contents, J obj, int totalCount, int currPage, int pageSize) {
|
|
|
MixEnvelop<T, J> mixEnvelop = new MixEnvelop();
|
|
|
mixEnvelop.setMessage(desc);
|
|
|
mixEnvelop.setStatus(code);
|
|
|
mixEnvelop.setMessage(message);
|
|
|
mixEnvelop.setStatus(status);
|
|
|
mixEnvelop.setCurrPage(currPage);
|
|
|
mixEnvelop.setPageSize(pageSize);
|
|
|
mixEnvelop.setTotalCount(totalCount);
|
|
|
mixEnvelop.setDetailModelList(contents);
|
|
|
mixEnvelop.setObj(data);
|
|
|
mixEnvelop.setObj(obj);
|
|
|
return mixEnvelop;
|
|
|
}
|
|
|
|
|
|
protected Envelop failed(String desc) {
|
|
|
return failed(desc, 500);
|
|
|
protected Envelop failed(String message) {
|
|
|
return failed(message, -10000);
|
|
|
}
|
|
|
|
|
|
protected Envelop failed(String desc, int code) {
|
|
|
Envelop envelop = new Envelop();
|
|
|
envelop.setMessage(desc);
|
|
|
envelop.setStatus(code);
|
|
|
return envelop;
|
|
|
protected Envelop failed(String message, int status) {
|
|
|
return success(message, status);
|
|
|
}
|
|
|
|
|
|
protected <T> T toEntity(String json, Class<T> target) throws IOException {
|
|
@ -188,13 +183,13 @@ public abstract class EnvelopRestEndpoint {
|
|
|
|
|
|
protected String randomString(int length) {
|
|
|
String str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
|
|
|
StringBuffer buffer = new StringBuffer();
|
|
|
StringBuilder builder = new StringBuilder();
|
|
|
Random random = new Random();
|
|
|
for (int i = 0; i < length; i++) {
|
|
|
int pos = random.nextInt(str.length());
|
|
|
buffer.append(str.charAt(pos));
|
|
|
builder.append(str.charAt(pos));
|
|
|
}
|
|
|
return buffer.toString();
|
|
|
return builder.toString();
|
|
|
}
|
|
|
|
|
|
/**
|