Преглед на файлове

公共方法,异常处理类

Progr1mmer преди 6 години
родител
ревизия
11d98e003e

+ 57 - 39
common/common-web/src/main/java/com/yihu/jw/web/endpoint/EnvelopRestEndpoint.java

@ -22,78 +22,96 @@ public abstract class EnvelopRestEndpoint {
    @Autowired
    protected ObjectMapper objectMapper;
    protected Envelop success(String message) {
        return success(message, 200);
    protected Envelop success(String desc) {
        return success(desc, 200);
    }
    protected Envelop success(String message, int status) {
    protected Envelop success(String desc, int code) {
        Envelop envelop = new Envelop();
        envelop.setMessage(message);
        envelop.setStatus(status);
        envelop.setDesc(desc);
        envelop.setCode(code);
        return envelop;
    }
    protected <J> ObjEnvelop<J> success(J obj){
        return success(obj, "success", 200);
    protected <J> ObjEnvelop<J> success(J data){
        return success(data, "success");
    }
    protected <J> ObjEnvelop<J> success(J obj, String message){
        return success(obj, message, 200);
    protected <J> ObjEnvelop<J> success(J data, String desc){
        return success(data, desc, 200);
    }
    protected <J> ObjEnvelop<J> success(J obj, String message, Integer status){
    protected <J> ObjEnvelop<J> success(J data, String desc, int code){
        ObjEnvelop<J> objEnvelop = new ObjEnvelop<>();
        objEnvelop.setMessage(message);
        objEnvelop.setStatus(status);
        objEnvelop.setObj(obj);
        objEnvelop.setDesc(desc);
        objEnvelop.setCode(code);
        objEnvelop.setData(data);
        return objEnvelop;
    }
    protected <T> ListEnvelop<T> success(List<T> detailModelList){
        return success(detailModelList, "message", 200);
    protected <T> ListEnvelop<T> success(List<T> contents){
        return success(contents, "success");
    }
    protected <T> ListEnvelop<T> success(List<T> detailModelList, String message){
        return success(detailModelList, message, 200);
    protected <T> ListEnvelop<T> success(List<T> contents, String desc){
        return success(contents, desc, 200);
    }
    protected <T> ListEnvelop<T> success(List<T> detailModelList, String message, Integer status){
    protected <T> ListEnvelop<T> success(List<T> contents, String desc, int code){
        ListEnvelop<T> listEnvelop = new ListEnvelop<>();
        listEnvelop.setMessage(message);
        listEnvelop.setStatus(status);
        listEnvelop.setDetailModelList(detailModelList);
        listEnvelop.setDesc(desc);
        listEnvelop.setCode(code);
        listEnvelop.setContents(contents);
        return listEnvelop;
    }
    protected <T> MixEnvelop success(List<T> detailModelList, int totalCount, int currPage, int rows) {
        return success(detailModelList, "success", 200, totalCount, currPage, rows);
    protected <T> MixEnvelop success(List<T> contents, int totalCount, int currPage, int pageSize) {
        return success(contents, "success", totalCount, currPage, pageSize);
    }
    protected <T> MixEnvelop success(List<T> detailModelList, String message, int totalCount, int currPage, int rows) {
        return success(detailModelList, message, 200, totalCount, currPage, rows);
    protected <T> MixEnvelop success(List<T> contents, String desc, int totalCount, int currPage, int pageSize) {
        return success(contents, desc, 200, totalCount, currPage, pageSize);
    }
    protected <T> MixEnvelop 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> MixEnvelop success(List<T> contents, String desc, int code, int totalCount, int currPage, int pageSize) {
        return success(contents, null, desc, code, totalCount, currPage, pageSize);
    }
    protected <T, J> MixEnvelop success(List<T> detailModelList, J obj, String message, int status, int totalCount, int currPage, int rows) {
    protected <T, J> MixEnvelop success(List<T> contents, J obj) {
        return success(contents, obj, "success");
    }
    protected <T, J> MixEnvelop success(List<T> contents, J obj, String desc) {
        return success(contents, obj, desc, 200);
    }
    protected <T, J> MixEnvelop 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 success(List<T> contents, J data, String desc, int code, int totalCount, int currPage, int pageSize) {
        MixEnvelop<T, J> mixEnvelop = new MixEnvelop();
        mixEnvelop.setMessage(message);
        mixEnvelop.setStatus(status);
        mixEnvelop.setDetailModelList(detailModelList);
        mixEnvelop.setObj(obj);
        mixEnvelop.setTotalCount(totalCount);
        mixEnvelop.setDesc(desc);
        mixEnvelop.setCode(code);
        mixEnvelop.setCurrPage(currPage);
        mixEnvelop.setPageSize(rows);
        if (totalCount % rows > 0) {
            mixEnvelop.setTotalPage((totalCount / rows) + 1);
        } else {
            mixEnvelop.setTotalPage(totalCount / rows);
        }
        mixEnvelop.setPageSize(pageSize);
        mixEnvelop.setTotalCount(totalCount);
        mixEnvelop.setContents(contents);
        mixEnvelop.setData(data);
        return mixEnvelop;
    }
    protected Envelop failed(String desc) {
        return failed(desc, 500);
    }
    protected Envelop failed(String desc, int code) {
        Envelop envelop = new Envelop();
        envelop.setDesc(desc);
        envelop.setCode(code);
        return envelop;
    }
    protected <T> T toEntity(String json, Class<T> target) throws IOException {
        T entity = objectMapper.readValue(json, target);
        return entity;

+ 13 - 13
common/common-web/src/main/java/com/yihu/jw/web/handler/GlobalExceptionHandler.java

@ -18,7 +18,7 @@ import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
 * Handler - WLYY2.0全局错误
 * Handler - wlyy2.0全局错误
 * Created by progr1mmer on 2018/1/25.
 */
@ControllerAdvice
@ -35,30 +35,30 @@ public class GlobalExceptionHandler {
        Envelop envelop = new Envelop();
        if (e instanceof NoHandlerFoundException) {
            //response.setStatus(HttpStatus.NOT_FOUND.value());
            envelop.setStatus(HttpStatus.NOT_FOUND.value());
            envelop.setMessage(e.getMessage());
            envelop.setDesc(e.getMessage());
            envelop.setCode(HttpStatus.NOT_FOUND.value());
        } else if (e instanceof HttpRequestMethodNotSupportedException){
            //response.setStatus(HttpStatus.METHOD_NOT_ALLOWED.value());
            envelop.setStatus(HttpStatus.METHOD_NOT_ALLOWED.value());
            envelop.setMessage(e.getMessage());
            envelop.setDesc(e.getMessage());
            envelop.setCode(HttpStatus.METHOD_NOT_ALLOWED.value());
        } else if (e instanceof MissingServletRequestParameterException) {
            //response.setStatus(HttpStatus.BAD_REQUEST.value());
            envelop.setStatus(HttpStatus.BAD_REQUEST.value());
            envelop.setMessage(e.getMessage());
            envelop.setDesc(e.getMessage());
            envelop.setCode(HttpStatus.BAD_REQUEST.value());
        } else if (e instanceof FeignException) { //执行Feign失败的时候默认当前服务做为网关执行请求的时候,从上游服务器接收到无效的响应
            //response.setStatus(HttpStatus.BAD_GATEWAY.value());
            envelop.setStatus(HttpStatus.BAD_GATEWAY.value());
            envelop.setMessage("Execute Feign: " + e.getMessage());
            envelop.setDesc("Execute Feign: " + e.getMessage());
            envelop.setCode(HttpStatus.BAD_GATEWAY.value());
        } else if (e instanceof ApiException) { //业务逻辑的异常默认为请求成功,但是前端需要判断成功标识
            ApiException apiException = (ApiException) e;
            //response.setStatus(apiException.httpStatus().value());
            envelop.setStatus(apiException.errorCode());
            envelop.setMessage(e.getMessage());
            envelop.setDesc(e.getMessage());
            envelop.setCode(apiException.errorCode());
            return envelop; //此异常不进行日志记录
        } else {
            //response.setStatus(HttpStatus.INTERNAL_SERVER_ERROR.value());
            envelop.setStatus(HttpStatus.INTERNAL_SERVER_ERROR.value());
            envelop.setMessage(e.getMessage());
            envelop.setDesc(e.getMessage());
            envelop.setCode(HttpStatus.INTERNAL_SERVER_ERROR.value());
        }
        logger.error(e.getMessage(), e);
        return envelop;

+ 12 - 11
common/common-web/src/main/java/com/yihu/jw/web/model/Envelop.java

@ -13,25 +13,26 @@ import java.io.Serializable;
@ApiModel(description = "基础实体")
public class Envelop implements Serializable {
    protected static final long serialVersionUID = -67188388306700736L;
    @ApiModelProperty("信息")
    protected String message;
    protected String desc;
    @ApiModelProperty("状态(200成功,-1是失败)")
    protected Integer status;
    protected int code;
    public String getMessage() {
        return message;
    public String getDesc() {
        return desc;
    }
    public void setMessage(String message) {
        this.message = message;
    public void setDesc(String desc) {
        this.desc = desc;
    }
    public Integer getStatus() {
        return status;
    public int getCode() {
        return code;
    }
    public void setStatus(Integer status) {
        this.status = status;
    public void setCode(int code) {
        this.code = code;
    }
}

+ 6 - 6
common/common-web/src/main/java/com/yihu/jw/web/model/ListEnvelop.java

@ -1,5 +1,6 @@
package com.yihu.jw.web.model;
import java.util.ArrayList;
import java.util.List;
/**
@ -7,14 +8,13 @@ import java.util.List;
 */
public class ListEnvelop<T> extends Envelop {
    private List<T> detailModelList;
    private List<T> contents = new ArrayList<>(0);
    public List<T> getDetailModelList() {
        return detailModelList;
    public List<T> getContents() {
        return contents;
    }
    public void setDetailModelList(List<T> detailModelList) {
        this.detailModelList = detailModelList;
    public void setContents(List<T> contents) {
        this.contents = contents;
    }
}

+ 36 - 34
common/common-web/src/main/java/com/yihu/jw/web/model/MixEnvelop.java

@ -5,6 +5,8 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
/**
@ -25,12 +27,11 @@ import java.util.List;
@ApiModel(value = "ListResult", description = "通用的实体")
public class MixEnvelop<T, J> extends Envelop {
    private static final long serialVersionUID = 2076324875575488461L;
    @ApiModelProperty("每页大小 默认10")
    private int pageSize = 10;
    @ApiModelProperty("当前页")
    private int currPage;
    private int currPage = 1;
    @ApiModelProperty("每页大小 默认10")
    private int pageSize = 15;
    @ApiModelProperty("总共多少页")
    private int totalPage;
@ -39,33 +40,18 @@ public class MixEnvelop<T, J> extends Envelop {
    private int totalCount;
    @ApiModelProperty("列表内容")
    private List<T> detailModelList;
    private List<T> contents = new ArrayList<>(0);
    @ApiModelProperty("内容")
    private J obj;
    public J getObj() {
        return obj;
    }
    public void setObj(J obj) {
        this.obj = obj;
    }
    public int getTotalCount() {
        return totalCount;
    }
    private J data = (J) new HashMap<String, Object>(0);
    public void setTotalCount(int totalCount) {
        this.totalCount = totalCount;
    }
    public List<T> getDetailModelList() {
        return detailModelList;
    public int getCurrPage() {
        return currPage;
    }
    public void setDetailModelList(List<T> detailModelList) {
        this.detailModelList = detailModelList;
    public void setCurrPage(int currPage) {
        this.currPage = currPage;
    }
    public int getPageSize() {
@ -76,14 +62,6 @@ public class MixEnvelop<T, J> extends Envelop {
        this.pageSize = pageSize;
    }
    public int getCurrPage() {
        return currPage;
    }
    public void setCurrPage(int currPage) {
        this.currPage = currPage;
    }
    public int getTotalPage() {
        if (totalCount % pageSize == 0) {
            totalPage = totalCount / pageSize;
@ -96,4 +74,28 @@ public class MixEnvelop<T, J> extends Envelop {
    public void setTotalPage(int totalPage) {
        this.totalPage = totalPage;
    }
    public int getTotalCount() {
        return totalCount;
    }
    public void setTotalCount(int totalCount) {
        this.totalCount = totalCount;
    }
    public List<T> getContents() {
        return contents;
    }
    public void setContents(List<T> contents) {
        this.contents = contents;
    }
    public J getData() {
        return data;
    }
    public void setData(J data) {
        this.data = data;
    }
}

+ 7 - 5
common/common-web/src/main/java/com/yihu/jw/web/model/ObjEnvelop.java

@ -1,17 +1,19 @@
package com.yihu.jw.web.model;
import java.util.HashMap;
/**
 * Created by progr1mmer on 2018/8/15.
 */
public class ObjEnvelop<J> extends Envelop {
    private J obj;
    private J data = (J) new HashMap<String, Object>(0);
    public J getObj() {
        return obj;
    public J getData() {
        return data;
    }
    public void setObj(J obj) {
        this.obj = obj;
    public void setData(J data) {
        this.data = data;
    }
}

+ 7 - 7
svr/svr-base/src/main/java/com/yihu/jw/base/saas/controller/SaasController.java

@ -6,6 +6,8 @@ import com.yihu.jw.exception.ApiException;
import com.yihu.jw.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.web.model.Envelop;
import com.yihu.jw.rm.base.BaseRequestMapping;
import com.yihu.jw.web.model.ListEnvelop;
import com.yihu.jw.web.model.ObjEnvelop;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
@ -28,12 +30,12 @@ public class SaasController extends EnvelopRestEndpoint {
    @PostMapping(value = BaseRequestMapping.Saas.api_create, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @ApiOperation(value = "创建Saas配置", notes = "创建单个Saas配置")
    public Envelop create (
    public ObjEnvelop<SaasDO> create (
            @ApiParam(name = "json_data", value = "Json数据")
            @RequestBody String jsonData) throws Exception {
        SaasDO saas = toEntity(jsonData, SaasDO.class);
        saasService.save(saas);
        return success("创建成功");
        saas = saasService.save(saas);
        return success(saas);
    }
//    @PutMapping(value = BaseRequestMapping.Saas.api_update, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
@ -107,7 +109,7 @@ public class SaasController extends EnvelopRestEndpoint {
    @GetMapping(value = BaseRequestMapping.Saas.api_getSaassNoPage)
    @ApiOperation(value = "获取Saas配置列表,不分页")
    public com.yihu.jw.restmodel.common.Envelop getAppsNoPage(
    public ListEnvelop<SaasDO> getAppsNoPage(
            @ApiParam(name = "fields", value = "返回的字段,为空返回全部字段", defaultValue = "code,name,id,remark")
            @RequestParam(value = "fields", required = false) String fields,
            @ApiParam(name = "filters", value = "过滤器,为空检索所有条件")
@ -116,8 +118,6 @@ public class SaasController extends EnvelopRestEndpoint {
            @RequestParam(value = "sorts", required = false) String sorts) throws Exception {
        //得到list数据
        List<SaasDO> list = saasService.search(filters, sorts);
        //封装返回格式
        List<SaasDO> mSaass = convertToModels(list, new ArrayList<>(list.size()), SaasDO.class, fields);
        return com.yihu.jw.restmodel.common.Envelop.getSuccessList(BaseRequestMapping.Saas.message_success_find_saass, mSaass);
        return success(list);
    }
}