| 
					
				 | 
			
			
				@ -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(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 |