服务层规范
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 {
....
}