组织介绍

开发规约

一、数据库

  • 主键【id】bigint类型,自动递增
  • 字符类型,统一varchar,默认长度255,较长字段再自行定义长度
  • 时间/日期字段类型datetime
  • 每张表须包含created_at,updated_at,默认值均为CURRENT_TIMESTAMP,update_time勾选【根据当前时间戳更新】
  • 每张表须包含created_by,updated_by,varchar类型,存储当前登录用户的username
  • 相同业务下同一字段命名保持一致
  • 尽量使用生成的mapper,避免写自定义sql,如需要写,尽量写简单sql,复杂逻辑在java代码中处理
  • 自定义mapper类固定带上Ext后缀,不要继承或实现任何接口(包括BaseMapper)
  • 生成的xxxMapper对象中,注意方法后缀Selective 与 无此后缀的区别(深刻理解后,在不同场景中合理使用)

二、服务端

运行

各子模块调用关系

web -> service(common)
service -> manager(dao,common)
manager -> dao(common)
dao -> common
注意事项
controller层对外提供http接口(给前端页面调用),service层对内提供dubbo服务(给其它业务模块微服务调用)
controller层不要处理业务逻辑,直接对service层进行封装,底层切面对service进行统一异常处理
在service层中实现主要业务逻辑
service层之间不要相互调用(共通的逻辑封装到manager层,再由service层调用)
多业务模块之间调用,由被调用模块在manager层封装相应方法,再由其它模块在service层进行调用

启动

直接运行web层下面App入口类

dao层mybatis-flex生成mapper和实体类

1. dao层test下的目录com.satd.cloud.demo.dao,其中Config为配置、CodeGenerator为dao代码生成
2. 运行CodeGenerator中main方法即可生成到层代码(运行时注意指定workspace为当前dao层module,不是跟目录)
mybatis-flex文档地址【https://mybatis-flex.com/zh/intro/what-is-mybatisflex.html】

开发规范

后端规范

接口入参使用对象封装,入参对象只能有一个或0个,接口方法入参需添加@RequestBody注解(Controller中添加),如有字段校验则需添加@Valid注解(可在service-api中添加,或service实现中添加,推荐在前者添加)
接口出参使用Result<T>,PageResult<T>等泛型封装,无出参返回Result<Void>
PageResult中的data,无结果返回空list,尽量不要返回null,容易让前端报错
不同接口的参数实体类、同接口的入参和出参实体类,尽量不要共用(除非业务场景完全一致),实体类需完美体现接口入参和出参
接口使用实体统一包含以下lombok注解【@Data】【@FieldDefaults(level = AccessLevel.PRIVATE)】
安装alibaba java代码检查插件,实时提示代码规范问题
接口的结构全部在service层中定义,web层只做controller封装
业务接口请求统一为POST类型
接口请求路径尽量简要明了,如下
  列表: /api/xxx/list
  新增: /api/xxx/add
  更新: /api/xxx/update
  保存(兼容新增和更新): /api/xxx/save
  获取单个信息: /api/xxx/get
数据多个状态变更,不要笼统使用更新接口,单独封装成多个接口,方便权限控制,更新接口只变更基本信息
出参中日期时间字段,统一用Date或Long时间戳,不要提供格式化日期时间字符串,格式化展示由前端处理

service-api开发规范

采用master、develop分支维护
1. 开发阶段,使用develop分支,版本指定【x.y.z-SNAPSHOT】,开发过程中可重复deploy到阿里云snapshot仓库
2. 开发调试结束,将版本改为【x.y.z】,并将代码合并到master分支,通过aliyun云效或者jenkins将master代码deploy到阿里云release仓库
3. 新需求开发,develop分支,将版本升级,并加上SNAPSHOT【x.y.z2-SNAPSHOT】进行开发,重复步骤1、2
tips:
【x.y.z-SNAPSHOT】snapshot版本可以重复推送,方便开发调试
【x.y.z】release版本不能重复推送,保证调用方稳定,有变动必须升级版本

接口文档

无需接口文档,直接参考对应业务模块的api,如cloud-demo-service-api

代码上传

调试类代码或者配置不要上传,如config下配置文件临时调试修改,mybatis-flex代码生成本地配置等
尽量按功能分批次提交代码,每次提交信息写明修改内容,不要填写无意义注释
保证每次提交代码的完整性(保证每一位协同开发者更新你上传的代码后都不会出现冲突或者运行问题)
修改通用代码前先更新代码,修改并测试完成后尽快单独提交一次(防止冲突)
分页,入参包含字段pageNum(页码)、pageSize(每页条数),返回必须用common组件中的PageResult封装

工具类

使用hutool中现有的工具类,尽量不要重复造轮子
文档地址【https://www.hutool.cn/docs/】

三、前端

开发规范

ajax请求
loading控制,在调用前设置loading=true,在finally中loading=false
异常提示,接口result.success为false时,$message.error提示result.message信息
分页字段固定为,pageNum、pageSize,前端全局配置统一指定
新增页面【https://doc.vvbin.cn/guide/router.html#新增路由】
下拉框初始值设置成undefined,不要设置成null,注意区别

代码提交

待完善

命名

常用业务字段命名

  • 基地 base
  • 库房 store
  • 架位 bin
  • 件号 partNo(part_no)
  • 序号/批次号 serialNo(serial_no)
  • 条形码 barCode(bar_code)
成就
0
Star
0
Fork
成员(5)
666898 wadynone 1578930369
wady
5500780 li kui l 1687921425
likui
小黑
丛章瑶
王艺焜

搜索帮助