Skip to content

二次开发

概述

天源云提供了最基础的功能框架和基本实现,具体的业务功能开发和扩展基础功能,需要进行二次开发。

常见低级问题解决

  • 出现SQL拼接出错,数据源只找Defaults库。
  • 这个问题首先核对接口DsConstant中的常量,是否正确
  • 查看配置文件,数据库的配置是否有错
  • 注解是否正确添加了
  • 清除缓存,重新编译一下
  • 前端env 核对一下

项目结构

  • 微服务项目结构 img
  • 单体项目结构 img

结构说明

区别

微服务项目结构: 每个模块对应一个具体的微服务,都是单独编译运行。 单体项目结构: 整个项目只有一个可运行的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等模块

      说明

      主要存放一些服务所需的启动类、配置类、配置文件、消息队列消费方监听入口等

  • 模块

    模块和层理论上是一样的。

    • 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层独立,用于其他服务依赖。

img

编译顺序

依赖关系为: 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

调用流程

img

欢迎使用天源云Saas快速开发系统