# spring-cloud-jd **Repository Path**: JustryDeng/spring-cloud-jd ## Basic Information - **Project Name**: spring-cloud-jd - **Description**: 通用spring-cloud架构,欢迎使用 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 2 - **Created**: 2022-10-24 - **Last Updated**: 2024-09-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: 微服务架构 ## README ## 技术栈 & | 技术栈 | 版本 | since | remove | | --------------- | ------------------------------------------------------------ | ------------ | ------------ | | 微服务 & 脚手架 | DownloadsDownloadsDownloads | `2021.0.5.A` | | | 微服务 & 脚手架 | DownloadsDownloadsDownloads | `2021.0.1.A` | `2021.0.5.A` | | orm框架 | DownloadsDownloads | `2021.0.1.A` | | | 数据库 | Downloads | `2021.0.1.A` | | | 权限框架 | DownloadsDownloadsDownloads | `2021.0.1.A` | | | 对象存储 | Downloads | `2021.0.1.A` | | | 文档生成器 | Downloads | `2021.0.1.E` | | | 文档生成器 | Downloads | `2021.0.1.A` | `2021.0.1.E` | | 分布式定时任务 | Downloads | `2021.0.5.A` | | | 消息队列 | Downloads | `2021.0.5.A` | | | arthas | Downloads | `2021.0.5.B` | | | …… | …… | | | ## Feature | 序号 | 说明 | since | remove | replace | | :--: | ------------------------------------------------------------ | ------------ | ------------ | ------- | | 1 | 网关支持——`gateway` | `2021.0.1.A` | | | | 2 | 注册中心支持——`nacos`
注:nacos2.2.0 | `2021.0.5.A` | | | | 3 | 注册中心支持——`nacos`
注:nacos1.4.2 | `2021.0.1.A` | `2021.0.5.A` | NO.2 | | 4 | 配置中心支持——`nacos`
注:nacos2.2.0 | `2021.0.5.A` | | | | 5 | 配置中心支持——`nacos`
注:nacos1.4.2 | `2021.0.1.A` | `2021.0.5.A` | NO.4 | | 6 | 认证授权鉴权(网管不作统一鉴权,各微服务各自鉴权)——`oauth2 + spring-security` | `2021.0.1.A` | | | | 7 | 跨微服务调用——`feign` | `2021.0.1.A` | | | | 8 | 入参出参记录支持——`EnableParameterRecorder + RecordParameters + IgnoreRecordParameters` | `2021.0.1.A` | | | | 9 | 参数校验支持——`JSR303` | `2021.0.1.A` | | | | 10 | 全局异常处理器——`spring mvc全局异常处理器` | `2021.0.1.A` | | | | 11 | 分布式锁支持——`redisson` | `2021.0.1.A` | | | | 12 | po模型自动填充createdBy、createdAt、updatedBy、updatedAt字段——`mybatis-plus` | `2021.0.1.A` | | | | 13 | 多租户支持——`mybatis-plus自定义多租户like插件` | `2021.0.1.A` | | | | 14 | 文件存储支持——`spring-file-storage` | `2021.0.1.A` | | | | 15 | api文档支持——`knife4j` | `2021.0.1.E` | | | | 16 | api文档支持——`smart-doc` | `2021.0.1.A` | `2021.0.1.E` | NO.15 | | 17 | 通用功能选择支持——`@EnableJdFeature`
注:在不同微服务中,根据业务场景需要,通过注解`@EnableJdFeature`一键启用相关功能 | `2021.0.5.A` | | | | 18 | 租户隔离、租户内数据定向分层隔离 | `2021.0.5.B` | | | ## 编码规范 | 序号 | 规范 | 类别 | | :--: | :----------------------------------------------------------- | :----------: | | 1 | 所有api应当只支持一类方法(`POST | GET | PUT`等) | Restful接口 | | | 同微服务下,所有的api应该保证uri的唯一(,不能通过请求方法来区分) | | | | 增语义api用`POST` | | | | 删语义api用`DELETE` | | | | 改语义api用`PUT` | | | | 查列表语义api用`POST` | | | | 查详情语义api用
- `GET`:当查询参数只有一个时
- `POST`:当查询参数多于一个时
| | | 2 | 所有改语义接口的参数,只有id是必传的,其余都非必填 | 改语义接口 | | | 当修改时,若后端接收到的字段值:
- 为`null`:则不修改该字段(若有特殊需求,需要将值清空,优先选择将其置为`空字符串`,如果实在要置为`null`,需要新开一个api)
- 为`空字符串`:则视字段业务含义而定,不作修改或将改为空字符串 | | | 3 | 对controller内的api方法,应按照`增、删、改、查、其它`,这样的顺序排序 | 接口排序 | | 4 | 所有请求入参模型,应基础基类`BaseDTO` | 接口参数 | | | 所有分页请求入参模型,应基础基类`BasePageDTO` | | | 5 | 所有redis key的定义,应统一定义在`CachePrefixEnum`中,并与已有的key保持同样的命名规范
如:`AC_USER_TENANT("access-control:%s:tenant", "访问控制-用户所属租户. 占位符为userId")` | reids规范 | | 6 | common-ds包下的代码,应按照`工具属性 > 所属主体 > 工具子属性`进行归档 | 代码归档 | | | common-spring包下的代码,应按照`工具属性 > 工具子属性 `进行归档 | | | 7 | 所有接口、接口方法上应写上注释 | 注释规范 | | | 子类方法上的注释不用写(因为接口上写了),除非有特别值得说明的东西 | | | | 内部private级别的方法,若望名知义则可以不写注释 | | | | 关键逻辑代码行,需要写上说明 | | | | 涉及到比较多业务处理的代码,需要写上step说明 | | | 8 | 所有模型的维护都需要维护进`com.ideaaedi.springcloud.jd.commonds.entity`下
- 通用模型,直接放在`com.ideaaedi.springcloud.jd.commonds.entity`下即可
- 隶属于某个微服务的模型,应放在`com.ideaaedi.springcloud.jd.commonds.entity.{微服务}`下,其中:
  - po:存放与表完全对应的模型
  - vo:存放api入参出餐模型(`vo.req`:存放api入参模型;`vo.resp`:存放api出参模型)
  - bo:业务中间模型
  - dto:数据传输模型(与第三方系统、中间件等交互时,存放进dto模型,可细存放到`dto.{交互方}.{类型}`下) | entity维护 | | 9 | 所有state字典值,都需要维护进`POState` | state字典 | | 10 | 所有substate字典值,都需要维护进`POSubstate` | substate字典 | | 11 | 如果你有一套自我成熟的编码规范(评判标准是:写得好看),则按照自己的即可;无则按照阿里规范 | 其余规范 |