Appearance
二次开发
概述
天源云提供了最基础的功能框架和基本实现,具体的业务功能开发和扩展基础功能,需要进行二次开发。
常见低级问题解决
- 出现SQL拼接出错,数据源只找Defaults库。
- 这个问题首先核对接口DsConstant中的常量,是否正确
- 查看配置文件,数据库的配置是否有错
- 注解是否正确添加了
- 清除缓存,重新编译一下
- 前端env 核对一下
项目结构
- 微服务项目结构
- 单体项目结构
结构说明
区别
微服务项目结构: 每个模块对应一个具体的微服务,都是单独编译运行。 单体项目结构: 整个项目只有一个可运行的BootApplication。所有的模块均为业务模块,不能单独运行。 没有网关,所有的拦截器都在启动模块中。
部分概念
概念声明
层及分层说明
- API层:包含acuity-base-api、acuity-system-api 、acuity-oauth-api 等模块
说明
服务于服务之间互相访问时,通过api模块来调用。api 模块实际上就是通过声明式FeignClient实现的接口,B服务调用A服务的UserApi接口时,FeignClient将该次调用封装成Http请求, 最后访问的是A服务的 Contoller层接口。
- 业务层:包含acuity-base-biz、acuity-system-biz、acuity-oauth-biz等模块
说明
主要存放Service接口及实现,Redis操作类、Mapper接口以及Xml(resources目录下)。 约定如下:
- AService 能注入BService,但禁止直接或间接循环注入。如AService -> BService ,BService->AService
- 在Service 层封装业务逻辑
- 在Manager操作缓存
- 在Mapper操作DB
- 控制层:包含acuity-base-controller、acuity-system-controller 、acuity-oauth-controller等模块
说明
主要存放一些服务的 Contrller 接口, 用于对外访问。 约定如下:
- Controller 不能互相注入调用(我不说,真有人这么干!)
- Controller 只能调用Service,禁止调用Mapper(Dao)
- Controller 主要负责参数验证、转换等操作,尽量别写业务代码
- 实体层:包含acuity-base-entity、acuity-system-entity、acuity-oauth-entity等模块
说明
存放实体po、文件传输对象DTO、VO、枚举类型等,不涉及逻辑的一些类。
- 启动层:包含acuity-base-server、acuity-system-server、acuity-oauth-server等模块
说明
主要存放一些服务所需的启动类、配置类、配置文件、消息队列消费方监听入口等
- API层:包含acuity-base-api、acuity-system-api 、acuity-oauth-api 等模块
模块
模块和层理论上是一样的。
- acuity-util 项目下的每个包. 如 acuity-core、 acuity-cloud-starter
- acuity-cloud 项目下的每个包. 如acuity-base-api、acuity-common等
- acuity-boot 项目下的每个包. 如acuity-base-server、acuity-common等
服务
- 认证服务:acuity-oauth下的所有模块组成认证服务
- 系统服务:acuity-system下的所有模块组成系统服务
- 基础服务:acuity-base下的所有模块组成基础服务
- 网关服务:acuity-gateway下的所有模块组成网关服务
- 监控服务:acuity-monitor
acuity-public 目录下存放 业务服务公共模块和收费的插件 :
- acuity-common: 模块用于存放跟大多数服务有关的常量类和工具类等
- acuity-common-api: 模块用于存放常用的API层接口, 如用户、字典等
- acuity-data-scope-sdk: 数据权限实现插件
- acuity-database-mode: 租户模式配置插件 (不同的模式,该模块内代码不一样)
- acuity-file-sdk: 文件回显查询公共接口
- acuity-model: 模块用于存放跟 常用的实体类、枚举、VO等
- acuity-tenant-datasource-init : 启动时加载数据源 (仅DATASOURCE和DATASOURCE_COLUMN模式拥有)
总结
一个服务可以包含多个模块,一个模块可以包含多个层。 比如:基础服务包含 系统模块和基础模块, 基础模块包含api层、业务层、控制层、实体层、启动层。
项目依赖关系
说明
每个服务一般情况下都包含5个层: server、controller、biz、entity、api (特殊情况可以删减一些),他们的依赖依赖关系为: server -> controller -> biz -> entity ,api层独立,用于其他服务依赖。
编译顺序
依赖关系为: acuity-oauth -> acuity-generator -> acuity-base -> acuity-system 若想将acuity-cloud项目按模块独立编译,编译顺序为:
- acuity-dependencies-parent
- acuity-public
- acuity-system
- acuity-base
- acuity-generator
- acuity-oauth
- acuity-gateway
- acuity-support