123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 |
- package com.yihu.ehr.controller;
- import com.yihu.ehr.util.id.BizObject;
- import com.yihu.ehr.util.id.ObjectId;
- import com.yihu.ehr.util.rest.Envelop;
- import org.springframework.beans.factory.annotation.Value;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Random;
- /**
- * REST风格控控制器基类。此控制器用于对API进行校验,并处理平台根层级的业务,如API参数校验,错误及返回码设定等。
- * <p>
- * 根层级的校验,如果是正确的,直接返回HTTP代码200,若出错,则会将HTTP返回代码设置为1X或2X,并在HTTP响应体中包含响应的信息。
- * HTTP响应体格式为JSON。
- * + 成功:会根据各业务逻辑自行决定要返回的数据,各业务模块的返回结构不同。
- * + 失败:{"code":"错误代码", "message":"错误原因"}
- * </p>
- * @author zhiyong
- * @author Sand
- */
- public class EnvelopRestEndPoint extends BaseRestEndPoint {
- @Value("${deploy.region}")
- protected Short deployRegion = 3502;
- protected <T, J> Envelop<T, J> success(List<T> contents) {
- return success(contents, (J)new HashMap<>(0));
- }
- protected <T, J, _T> Envelop<_T, J> success(List<T> contents, Class<_T> targetContents) {
- List<_T> _contents = (List)convertToModels(contents, new ArrayList<>(contents.size()), targetContents, null);
- return success(_contents);
- }
- protected <T, J> Envelop<T, J> success(J obj) {
- return success(new ArrayList<T>(0), obj);
- }
- protected <T, J, _J> Envelop<T, _J> success(J obj, Class<_J> targetObj) {
- _J _obj = convertToModel(obj, targetObj);
- return success(_obj);
- }
- protected <T, J> Envelop<T, J> success(List<T> contents, J obj) {
- return success(contents, obj, contents.size(), 1, 15);
- }
- protected <T, J, _T, _J> Envelop<_T, _J> success(List<T> contents, J obj, Class<_T> targetContents, Class<_J> targetObj) {
- List<_T> _contents = (List)convertToModels(contents, new ArrayList<>(contents.size()), targetContents, null);
- _J _obj = convertToModel(obj, targetObj);
- return success(_contents, _obj);
- }
- protected <T, J> Envelop<T, J> success(List<T> contents, int totalCount, int currPage, int rows) {
- return success(contents, (J)new HashMap<>(0), totalCount, currPage, rows);
- }
- protected <T, J, _T> Envelop<_T, J> success(List<T> contents, int totalCount, int currPage, int rows, Class<_T> targetContents) {
- List<_T> _contents = (List)convertToModels(contents, new ArrayList<>(contents.size()), targetContents, null);
- return success(_contents, totalCount, currPage, rows);
- }
- protected <T, J> Envelop<T, J> success(List<T> contents, J obj, int totalCount, int currPage, int rows) {
- Envelop<T, J> envelop = new Envelop<>();
- envelop.setSuccessFlg(true);
- envelop.setTotalCount(totalCount);
- envelop.setCurrPage(currPage);
- envelop.setPageSize(rows);
- envelop.setDetailModelList(contents);
- envelop.setObj(obj);
- return envelop;
- }
- protected <T, J, _T, _J> Envelop<_T, _J> success(List<T> contents, J obj, int totalCount, int currPage, int pageSize, Class<_T> targetContents, Class<_J> targetObj) {
- List<_T> _contents = (List)convertToModels(contents, new ArrayList<>(contents.size()), targetContents, null);
- _J _obj = convertToModel(obj, targetObj);
- return success(_contents, _obj, totalCount, currPage, pageSize);
- }
- @Deprecated
- protected Envelop success(Object object, List list){
- Envelop envelop = new Envelop();
- envelop.setSuccessFlg(true);
- envelop.setObj(object);
- envelop.setDetailModelList(list);
- return envelop;
- }
- /**
- * 返回一个信封对象。信封对象的返回场景参见 Envelop.
- *
- * @param modelList
- * @param totalCount
- * @return
- */
- @Deprecated
- protected Envelop getResult(List modelList, int totalCount) {
- Envelop envelop = new Envelop();
- envelop.setSuccessFlg(true);
- envelop.setDetailModelList(modelList);
- envelop.setTotalCount(totalCount);
- return envelop;
- }
- @Deprecated
- protected Envelop getPageResult(List detailModelList, int totalCount, int currPage, int rows) {
- Envelop result = new Envelop();
- result.setSuccessFlg(true);
- result.setDetailModelList(detailModelList);
- result.setTotalCount(totalCount);
- result.setCurrPage(currPage);
- result.setPageSize(rows);
- if (result.getTotalCount() % result.getPageSize() > 0) {
- result.setTotalPage((result.getTotalCount() / result.getPageSize()) + 1);
- } else {
- result.setTotalPage(result.getTotalCount() / result.getPageSize());
- }
- return result;
- }
- protected <T, J> Envelop<T, J> failed(String errMsg){
- return failed(errMsg, -1);
- }
- protected <T, J> Envelop<T, J> failed(String errMsg, int errorCode){
- return failed(errMsg, errorCode, (J)new HashMap<>(0));
- }
- protected <T, J> Envelop<T, J> failed(String errMsg, J obj){
- return failed(errMsg, -1, obj);
- }
- protected <T, J> Envelop<T, J> failed(String errMsg, int errorCode, J obj){
- Envelop<T, J> envelop = new Envelop<>();
- envelop.setErrorMsg(errMsg);
- envelop.setErrorCode(errorCode);
- envelop.setObj(obj);
- return envelop;
- }
- /**
- * 获取obj ID
- * @param bizObject
- * @return
- */
- protected String getObjectId(BizObject bizObject){
- return new ObjectId(deployRegion, bizObject).toString();
- }
- /**
- * 获取指定长度的随机字符串
- * @param length
- * @return
- */
- protected String getRandomString(int length) {
- String str = "abcdefghijklmnopkrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
- StringBuilder builder = new StringBuilder();
- Random random = new Random();
- for (int i = 0; i < length; i++) {
- int number = random.nextInt(str.length());
- builder.append(str.charAt(number));
- }
- return builder.toString();
- }
- }
|