微服务基础支持
开发说明
@EnableCustomConfig
服务启动类可以通过@EnableCustomConfig
进行服务的初始化配置。该注解主要有以下几个作用:
- MappScan扫描支持
- ComponentScan扫描支持
@EnableCustomSwagger2
@EnableCustomSwagger2
对在线api文档支持,/doc.html访问swagger加强
@LoginUser
在controller参数中通过@LoginUser SysUser loginUser
获取当前登录用户
示例
@GetMapping(value = "/functions/manage", produces = {"application/json; charset=utf-8"})
public ResponseEntity queryManageFunctions(@LoginUser SysUser loginUser) {
// ...
}
@Log(title = “设计”, businessType = BusinessType.INSERT)
在controller方法上通过注解@Log
实现操作日志收集(主要针对曾、删、改操作)
示例
@PostMapping("")
@ApiOperation(value = "保存")
@Log(title = "XXX保存", businessType = BusinessType.INSERT)
public ResObject save(@Validated(ValidType.Default.class) @RequestBody BpmDefinitionDesignVO vo) {
}
@Valid
@Valid
会对被标注的controller入参类进行参数校验
被标注的类中有@Length
注解标注的字段,则该字段不能超过指定长度
被标注的类有@NotBlank
注解标注的字段,则该字段不能为空
更多参数校验注解请参考hibernate validator
当校验条件不满足的时候,会进入统一异常处理,统一异常处理会给前端返回code为0,message为指定message的消息
示例
public ResponseEntity save(@Valid @RequestBody DeptBasic dept) {}
public class DeptBasic implements Serializable {
@NotBlank(message = "部门名称不可为空")
private String jgMc;
@Length(max = 1, message = "选用标志长度最大为1")
private String xybs;
...
}
开发规范
数据格式
1.写好代码注释,统一格式
类注释:
/**
- @author 作者
- @Description 描述
- @Date 日期(年月日时分秒)
*/
方法注释:
/**
- @param formId 参数1描述
- @param instId 参数2描述
- @param taskKey 参数3描述
- @return ResObject 返回描述
*/
2.返回格式统一{“code”:“”,“message”:“”,“data”:“”}
属性 | 描述 |
---|---|
code | 200表示操作成功 |
message | 提示信息 |
data | 返回数据 |
3.做好异常处理
所有接口都必须有异常抛出,在controller里捕获所有异常并做处理
示例
@RequestMapping(value = "/getData", method = RequestMethod.GET, produces = {"application/json; charset=utf-8"})
@ApiOperation(value = "获取表单数据", httpMethod = "GET", notes = "获取表单数据")
public ResObject getData(String formId, String instId, String taskKey) {
try {
List result = formDataService.getDatas(formId, instId, taskKey);
return new ResObject(true, "获取表单数据成功", result);
} catch (BusinessException e) {//业务异常捕获
log.error(e.getMessage(), e);
return new ResObject(false, e.getMessage());
} catch (Exception e) {//程序异常捕获
log.error("获取表单数据失败", e);
return new ResObject(false, "获取表单数据失败");
}
}
4.请求路劲规范
常规请求统一路径:
1.分页列表请求 GET /modelName/list
示例:
@GetMapping("list")
@ApiOperation(value = "流程定义列表")
@Log(title = "流程设计", businessType = BusinessType.INSERT)
public ResObject list(@LoginUser SysUser sysUser, BpmDefinitionDesignVO vo) {
}
详情请求 GET /modelName/{modelId}
@GetMapping(value = {"/", "/{modelId}"})
@ApiOperation(value = "获取用户信息")
public ResObject getUser(@PathVariable(value = "modelId", required = true) String modelId)) {
}
2.保存请求 POST /modelName/
示例:
@PostMapping("")
@ApiOperation(value = "定义保存")
@Log(title = "设计", businessType = BusinessType.INSERT)
public ResObject saveDefinition(@LoginUser SysUser sysUser, @Validated(ValidType.Default.class) @RequestBody DefinitionDesignVO vo) {
}
3.更新请求 PUT /modelName/
示例:
@PutMapping("")
@ApiOperation(value = "定义更新")
@Log(title = "设计", businessType = BusinessType.UPDATE)
public ResObject updateDefinition(@LoginUser SysUser sysUser, @Validated(ValidType.Default.class) @RequestBody DefinitionDesignVO vo) {
}
4.删除请求 DELETE /modelName/
@DeleteMapping("")
@ApiOperation(value = "定义删除")
@Log(title = "设计", businessType = BusinessType.DELETE)
public ResObject deleteDefinition(@LoginUser SysUser sysUser,DefinitionDesignVO vo) {
}
5.feign
以feign形式提供接口服务,接口地址统一“/api”开头
6.mybatis-plus
mapper、dao 继承类BaseMapper,并在T实体类上添加@TableName、@TableId注解
示例
@Data
@TableName("sys_unit")
public class SysUnit implements Serializable {
// ...实体类
/**
* 机构主键
*/
@TableId
private String unitId;
}
public interface SysUnitMapper extends BaseMapper<SysUnit> {
// ...mapper || dao接口类 肠过操作可以省略代码块及自动映射
}
7.版本管理提交格式
1.git版本管理提交:
add:新增XXX功能
fix:修复XXXbug || 完善XXX功能
2.svn版本管理提交:
【提交人】XXX
【处理模块】工作流表单服务
【解决问题】新增添加表单保存接口
8.代码生成
地址:
http://192.168.6.116:8080
需要先设计数据库表,根据表结构生成controller\service\dao\entity\mapper.xml等相关代码文件
9.license存放位置
win:将license文件存放到应用所在的磁盘根路径/opt/license/文件夹下
linux:将license文件存放到/opt/license/文件夹下