铜陵项目后端开发规范

项目背景

项目使用JEECG框架

框架参考文档(优先查看)

开发文档 https://help.jeecg.com/java/readme.html
代码生成器 https://help.jeecg.com/java/codegen.html
系统权限控制 https://help.jeecg.com/java/system/auth.html
框架常用注解 https://help.jeecg.com/java/changyongzhujie.html
框架常用功能 https://help.jeecg.com/java/java.html
代码规范 https://help.jeecg.com/java/norm.html
SQL优化技巧 https://help.jeecg.com/java/norm/SQLTuning.html
内存溢出排查 https://help.jeecg.com/java/norm/oomAnalyze.html

数据库规范

建表规范

所有业务表前缀 mes_ 后面跟模块前缀(例如:硫酸:vitriol) 后面跟 业务表名称 最终:mes_vitriol_xxxx

模块前缀

配料渣选熔炼吹炼精炼电解硫酸
burdenburdensmeltblowrefineelectrolysisvitriol

项目规范

1.开发架构

开发采用mvc 三层架构。这里不多做赘述。
但是要求,一定要保持控制层的干净,将业务拿到服务层去处理。

2.模块创建规范

参照视频创建 https://help.jeecg.com/java/java/gen/module.html

模块名称要求 enfi-business-{模块代号} 例如:enfi-business-vitriol

要求模块创建在 enfi-module-business 模块下面

image-tljx.png
pom.xml 无需添加其他依赖示例:

image-u8uj.png

3.框架结构规范

enfi-module-business 添加了 enfi-module-common 模块

要求公共代码统一放入 enfi-module-common 模块 里面,在前缀为模块前缀的包路径下面例如:

ima5e-gkjc.png

image-xti8.png
将entity 实体类、 mapper包括xml 持久层、service 接口 放在公共模块
将controller 和 service.impl 的接口实现层放到各自的业务模块

4.代码提交规范

代码提交参照 约定式提交
提交信息包含前缀:

image-stuj.png

5.冒烟测试

每个开发都应对自己开发的功能进行自测。严谨是每个程序员的必修课。
不怕一万,就怕万一。
每个功能在开发完成后必须进行冒烟测试(自测)!!!!

6.代码准则

杜绝垃圾代码

参考垃圾代码书写准则
杜绝项目中出现的垃圾代码,例如:

  • 变量名称不规范
  • 没有代码注释
  • 变量名称函数名称混淆

等垃圾代码。

控制层规范

要求创建控制层
类名必须包含注解
@Api等注解
例如:

@Api(tags = "{}") //{} 替换为控制层业务名称
@RestController
@RequestMapping("/{}/operate") //{} 替换为当前业务模块前缀
public class XXXController {

}

接口方法必须包含注解
@AutoLog 接口日志记录
@ApiOperation 接口名称
@ApiOperationSupport 接口排序和作者
非必须包含
@ApiParam,@RequestParam GET请求参数名称 GET请求必须包含
@RequestBody POST请求必须包含
例如:

/**
     * 吹炼炉物料
     * @return
     */
    @AutoLog("吹炼主操作工作台接口_吹炼炉物料")
    @GetMapping(value = "/material")
    @ApiOperation(value="吹炼炉物料", notes="吹炼炉物料")
    @ApiOperationSupport(order = 1, author = "xuecxiang")
    public Result<?> XXXX(
            @ApiParam(value = "姓名")
            @RequestParam(name = "name") String name,
            @ApiParam(value = "年龄")
            @RequestParam(name = "age") Integer age){
        List<Map<String, Object>> list =  mainOperatingConsoleService.material();
        return Result.ok(list);
    }

开发阶段不能添加的注解

@RequiresPermissions

  • 此注解是接口请求权限认证使用的注解,在项目后期需要权限认证的时候,在添加。
  • 此注解是代码生成自带生成的包含在代码中,生成后请自行注释掉
    其他待补充。。。。。。

接口文档规范

根据不同类型功能,Controller 可以用注释进行划分分组。 比如 同一类功能增删改查
c6b9078a10c7060b882992a2cdc1aee.png
如果功能比较多,接口层代码臃肿的话 可以采用 下面区块方法进行分组。

// region {?}区块名称
代码 
//endregion 

例如:

image-umpq.png