chenweida 8 lat temu
rodzic
commit
a4b571d4c2

+ 1 - 0
common-lib-parent-pom/pom.xml

@ -12,6 +12,7 @@
        <module>../common/common-swagger</module>
        <module>../common/common-quartz</module>
        <module>../common/common-log</module>
        <module>../common/common-rest-model</module>
    </modules>
    <properties>

+ 18 - 0
common/common-rest-model/pom.xml

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.yihu.jw</groupId>
        <artifactId>common-lib-parent-pom</artifactId>
        <version>1.0.0</version>
        <relativePath>../../common-lib-parent-pom/pom.xml</relativePath>
    </parent>
    
    <groupId>com.yihu.jw</groupId>
    <artifactId>common-rest-model</artifactId>
    <version>1.0.0</version>
</project>

+ 128 - 0
common/common-rest-model/src/main/java/com/yihu/jw/restmodel/base/Envelop.java

@ -0,0 +1,128 @@
package com.yihu.jw.restmodel.base;
import java.io.Serializable;
import java.util.List;
/**
 * 信封对象,封装REST接口的返回值内容。包括:
 * - 页码
 * - 页大小
 * - 错误消息
 * - 错误代码
 * - 对象模型
 *
 * 信封对象的返回场景:
 * - API使用者确实无法访问返回头,即一些语言库无法处理HTTP的响应消息,这时候需要以这种形式提供返回值。
 * - API需要支持交叉域请求(通过JSONP)。
 *
 * @author llh
 */
public class Envelop implements Serializable{
    private static final long serialVersionUID = 2076324875575488461L;
    private boolean successFlg;
    private int pageSize = 10;
    private int currPage;
    private int totalPage;
    private int totalCount;
    private List detailModelList;
    private Object obj;
    private String errorMsg;
    private String successMsg;
    private int errorCode;
    public Object getObj() {
        return obj;
    }
    public void setObj(Object obj) {
        this.obj = obj;
    }
    public int getTotalCount() {
        return totalCount;
    }
    public void setTotalCount(int totalCount) {
        this.totalCount = totalCount;
    }
    public boolean isSuccessFlg() {
        return successFlg;
    }
    public void setSuccessFlg(boolean successFlg) {
        this.successFlg = successFlg;
    }
    public List getDetailModelList() {
        return detailModelList;
    }
    public void setDetailModelList(List detailModelList) {
        this.detailModelList = detailModelList;
    }
    public String getErrorMsg() {
        return errorMsg;
    }
    public void setErrorMsg(String errorMsg) {
        this.errorMsg = errorMsg;
    }
    public int getErrorCode() {
        return errorCode;
    }
    public void setErrorCode(int errorCode) {
        this.errorCode = errorCode;
    }
    public int getPageSize() {
        return pageSize;
    }
    public void setPageSize(int pageSize) {
        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;
        } else {
            totalPage = totalCount / pageSize + 1;
        }
        return totalPage;
    }
    public void setTotalPage(int totalPage) {
        this.totalPage = totalPage;
    }
    public String getSuccessMsg() {
        return successMsg;
    }
    public void setSuccessMsg(String successMsg) {
        this.successMsg = successMsg;
    }
}

+ 35 - 0
common/common-rest-model/src/main/java/com/yihu/jw/restmodel/base/EnvelopRestController.java

@ -0,0 +1,35 @@
package com.yihu.jw.restmodel.base;
import java.util.List;
/**
 * REST风格控控制器基类。此控制器用于对API进行校验,并处理平台根层级的业务,如API参数校验,错误及返回码设定等。
 * <p>
 * 根层级的校验,如果是正确的,直接返回HTTP代码200,若出错,则会将HTTP返回代码设置为1X或2X,并在HTTP响应体中包含响应的信息。
 * HTTP响应体格式为JSON。
 * + 成功:会根据各业务逻辑自行决定要返回的数据,各业务模块的返回结构不同。
 * + 失败:{"code":"错误代码", "message":"错误原因"}
 *
 * @author zhiyong
 * @author Sand
 */
public class EnvelopRestController {
    /**
     * 返回一个信封对象。信封对象的返回场景参见 Envelop.
     *
     * @param modelList
     * @param totalCount
     * @return
     */
    protected Envelop getResult(List modelList, int totalCount) {
        Envelop envelop = new Envelop();
        envelop.setSuccessFlg(true);
        envelop.setDetailModelList(modelList);
        envelop.setTotalCount(totalCount);
        return envelop;
    }
}