GoFramework框架开发规范

服务层规范

java文件分类
枚举:目前枚举多由工具生成,如果需要进行数据库操作,则需要实现org.go.api.core.enums.BaseEnum接口。
dto:目前同时做为请求及响应参数,与数据模型关联密切
request:对应渠道侧的页面级请求,当dto模型不能满足页面请求时,需要新增request类型
response:对应接口的最终返回结果,该类型代表接口的最终结果,一般不能做为集合中的元素返回。
item:对应集合中的元素,当dto模型不能直接做元素使用时,可以使用通过定义item类型来解决
facade:分为直接操作数据库的简单服务,以及进行服务组合或复杂运算的高级服务。高级服务需要在名称中增加Prof关键字来区分。
bo:对应数据库表或视图的实体,在mybatis中做为请求或响应参数来使用。目前要求除非数据返回的是基础类型如Integer,Long,String等,则必须使用bo类来承载返回结果。
dao:定义mybatis接口及xml文件
facade实现类:含义如同其名。

错误码:
1、要求每个接口都需要指定错误码及信息(可以共用)。为了避免抛出未知异常,接口中必须要做异常处理。如下:

   @Override
    public List<FormElement> getFormElementList(FormElementListGetRequest request) throws PendingException {
        try {
            // 对请求参数进行校验
            AbstractBaseRequestDto.validateThrow(request);
            // 查询缓存用户信息
            User user = userCache.get(request.getUserId());
            // 查询表单元素列表
            ....
            return formElementList;
        } catch (Exception ex) {
            // 对异常进行处理
            throw transferException(ex, ResCode.formElementListGetFailed);
        }
    }
        

如果使用1.0.1框架及以上,也可以使用注解方式,减少代码量

    @Override
    @RpcMethod("部门下的文书及风险项选项列表查询")
    public List<FormElementOptionItem> queryDeptDocRiskOptionList(DepartmentIdRequest request) throws PendingException {
        // 对请求参数进行校验
        validateThrow(request);
        // 从缓存中进行查询
        return deptDocRiskOptionCache.get(request.getDepartmentId());
    }

上述前提需要给接口所在服务类配置全局错误码,如下

@Service(version = "1.0.0")
@RpcClass(R.departmentInfoProfFacade)
public class DepartmentInfoProfFacadeImpl extends AbstractDubboIntegrationService implements DepartmentInfoProfFacade {
    ....
}

猜你喜欢

转载自www.cnblogs.com/wuyuhuanzhen/p/9098600.html