数字档案管理系统
首页
操作手册
部署手册
微服务框架
首页
操作手册
部署手册
微服务框架
  • 简介
  • 快速上手
  • 项目介绍
    • 目录结构
      • 后端工程
      • so-fast-framework
      • so-fast-pl-cloud
      • 前端工程
    • 功能列表
    • 开发规范
      • Maven依赖
      • 工程结构
      • 目录结构
      • 配置文件
      • 异常处理
      • 工具集
      • 日志审计
      • 文件处理
      • API接口规范
      • 业务层
      • 数据层
      • 数据库设计规范
    • 技术选型
      • 前端工程
      • 后端工程
  • 架构设计
  • 前端开发

    • 开发规范
    • 全局配置
  • 后端开发
  • 生产部署
  • 帮助文档与常见问题
  • 测试手册
数字档案管理系统
2025-04-17
目录

项目介绍

# 目录结构

# 后端工程

SOFAST 框架采用模块化设计思想,将后端工程分为基础框架层(so-fast-framework)以及上游产品线层(目前仅提供 Cloud 产品线 so-fast-pl-cloud)。

# so-fast-framework

so-fast-framework 是 SOFAST 框架的底层核心框架,提供微服务开发的基础脚手架以及依赖统一管理,其标准目录结构如下:

so-fast-framework
├── so-fast-cloud-dependencies              // 统一依赖管理
│
├── so-fast-common                          // 共通封装(统一常数、统一异常处理、统一返回
│
├── so-fast-core                            // SOFAST框架核心包
│   ├── so-fast-cache-starter               // 一级缓存管理
│   ├── so-fast-cloud-starter               // 注册中心、配置中心客户端starter
│   ├── so-fast-ds-starter                  // 动态数据源starter
│   ├── so-fast-elastic-starter             // ES搜索引擎starter
│   ├── so-fast-excel-starter               // excel文件操作starter
│   ├── so-fast-feign-starter               // RPC starter
│   ├── so-fast-kafka-starter               // kafka依赖封装starter
│   ├── so-fast-lock-starter                // 分布式锁封装starter
│   ├── so-fast-log-starter                 // 审计日志封装starter
│   ├── so-fast-mongo-starter               // mongodb依赖封装starter
│   ├── so-fast-mybatis-starter             // mybatis-plus封装starter
│   ├── so-fast-mybatis-tenant-starter      // mybatis-plus多租户版本封装starter
│   ├── so-fast-oss-starter                 // oss对象存储封装starter
│   ├── so-fast-pay                         // 聚合支付封装starter
│   ├── so-fast-rabbitmq-starter            // rabbit依赖封装starter
│   ├── so-fast-redis-starter               // redis封装starter
│   ├── so-fast-redis-tenant-starter        // redis多租户版本封装starter
│   ├── so-fast-rocketmq-starter            // rocketmq依赖封装starter
│   ├── so-fast-seata-starter               // seata依赖封装starter
│   ├── so-fast-security-starter            // oauth2封装starter
│   ├── so-fast-security-tenant-starter     // oauth2多租户版本封装starter
│   ├── so-fast-sentinel-gateway-starter    // 网关限流封装starter
│   ├── so-fast-sentinel-starter            // 微服务限流封装starter
│   ├── so-fast-swagger-starter             // swagger api封装starter
│   ├── so-fast-tenant-starter              // 多租户上下文封装starter
│   ├── so-fast-web-starter                 // 微服务web api开发starter
│   ├── so-fast-web-tenant-starter          // 微服务web api多租户版本开发starter
│   ├── so-fast-websocket-starter           // websocket封装starter
│   ├── so-fast-xss-starter                 // xss安全starter
│
├── so-fast-sdk                             // 平台层sdk
│   └── so-fast-log-sdk                     // 审计日志sdk
│
└── so-fast-utils                           // 工具类
    ├── sf-common-utils                     // 常用工具类(非web系)
    └── sf-web-utils                        // web用工具类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42

so-fast-framework 只提供基础 jar 包,所有依赖包均发布在 maven 私服上,开发使用时只需要在 maven 中配置私服镜像即可拉取使用。

# so-fast-pl-cloud

so-fast-pl-cloud 是 Cloud 产品线的解决方案,提供企业级微服务框架。其标准目录如下:

so-fast-pl-cloud
├── db                                      // 数据库脚本
├── deploy                                  // 服务一键启停脚本
├── nacos                                   // nacos参考配置文件,可直接在nacos导入
│ 
├── so-fast-gateway                         // 网关服务
├── so-fast-pl-common                       // 产品级通用常数等
├── so-fast-pl-sdk                          // 产品级微服务sdk
│   ├── so-fast-cms-sdk                     // cms微服务sdk
│   ├── so-fast-system-sdk                  // system微服务sdk
│   ├── so-fast-uaa-sdk                     // uaa微服务sdk
│   └── so-fast-upms-sdk                    // upms微服务sdk
│
├── so-fast-platform                        // 产品线内置服务
│   ├── so-fast-cms                         // 内容管理服务
│   ├── so-fast-demo                        // demo示例服务
│   ├── so-fast-log                         // 审计日志服务
│   ├── so-fast-upms                        // UPMS服务
│   ├── so-fast-system                      // 系统设置服务
│   ├── so-fast-fs                          // 文件上传服务
│   └── so-fast-ws-server                   // websocket服务
├── so-fast-uaa                             // 统一认证中心
│ 
├── so-fast-visual                          // 可视化服务
│   ├── so-fast-deploy                      // 可视化部署(可忽略,目前使用jenkins)
│   ├── so-fast-admin                       // 监控中心
│   ├── so-fast-mpg                         // 代码生成器
│   ├── so-fast-task                        // 定时任务管理平台(集成xxl-job)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

# 前端工程

前端工程采用 vue-cli3.0 构建,其标准目录结构如下:

sofast-web
├── babel.config.js                                // Babel配置文件
├── package-lock.json
├── package.json
├── postcss.config.js                              // PostCss配置文件
├── public
│   ├── favicon.ico
│   ├── index.html
│   └── static                                     // 静态文件目录
│       └── NEditor                                // 富文本编辑器(基于UEditor)
├── src
│   ├── App.vue
│   ├── api                                        // 配置后端接口
│   ├── assets                                     // 图片
│   ├── components                                 // 共通组件目录
│   │   ├── Breadcrumb                             // 面包屑导航
│   │   ├── DateRange                              // 日期区间组件
│   │   ├── Dialog                                 // 模态框组件
│   │   ├── DictSelect                             // 字典下拉选组件
│   │   ├── Editor                                 // 富文本编辑器组件
│   │   ├── Hamburger                              // 展开/收缩左侧菜单按钮组件
│   │   ├── HeaderSearch                           // 头部菜单检索组件
│   │   ├── IconSelect                             // 图标选择器组件
│   │   ├── LangSelect                             // 语言选择组件
│   │   ├── OrganizationSelect                     // 组织机构级联下拉组件
│   │   ├── Pagination                             // 分页组件
│   │   ├── RoleSelect                             // 角色下拉组件
│   │   ├── SvgIcon                                // SVG图标
│   │   ├── Table                                  // 表格组件
│   │   └── Upload                                 // 上传组件
│   ├── filters                                    // 自定义过滤器
│   ├── icons
│   │   └── svg                                    // 存放SVG图标
│   ├── i18n                                       // 国际化目录
│   │   └── common                                 // 共通Label,Message配置
│   ├── layout                                     // 全局布局
│   │   ├── components
│   │   │   ├── AppMain.vue                        // 中间内容区
│   │   │   ├── Navbar.vue                         // 头部Header
│   │   │   ├── Sidebar                            // 左侧菜单栏
│   │   │   ├── TagsView                           // 标签页
│   │   │   └── index.js
│   │   ├── index.vue
│   │   └── mixin
│   │       └── ResizeHandler.js                   // 响应式混入(区分desktop和mobile)
│   ├── main.js                                    // Vue入口文件
│   ├── mixins                                     // 自定义混入
│   ├── permission.js                              // 权限控制
│   ├── router                                     // 路由
│   ├── settings.js                                // 启用/停用部分组件
│   ├── store                                      // Vuex
│   ├── styles                                     // 样式文件
│   ├── themes                                     // 主题
│   │   └── default                                // 主题文件夹(默认)
│   ├── utils                                      // 工具
│   │   ├── auth.js                                // token工具
│   │   ├── base64Util.js                          // base64加密解密
│   │   ├── get-page-title.js                      // 获取页面title
│   │   ├── request.js                             // axios实例
│   │   ├── scroll-to.js                           // 滚动动画
│   │   ├── treeUtils.js                           // 树形数据工具(Array2Tree)
│   │   └── validate.js                            // 校验工具
│   └── views
│   │   ├── 404.vue                                // 404页面
│   │   ├── contentMgt                             // 内容管理模块
│   │   ├── dashboard                              // 首页
│   │   ├── login                                  // 登录页
│   │   ├── system                                 // 系统管理模块
│   │   │   ├── apiMgt                             // API管理
│   │   │   ├── dictionaryMgt                      // 字典管理
│   │   │   ├── log                                // 日志
│   │   │   ├── menuMgt                            // 菜单管理
│   │   │   ├── organizationMgt                    // 组织机构管理
│   │   │   ├── permissionMgt                      // 权限管理
│   │   │   ├── roleMgt                            // 角色管理
│   │   │   └── userMgt                            // 用户管理
│   │   └── userProfile                            // 个人中心
└── vue.config.js                                  // vue-cli3配置文件
└── .env.development                               // 开发环境变量配置
└── .env.staging                                   // 测试环境变量配置
└── .env.production                                // 生产环境变量配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81

# 功能列表

  • ✅ 登录验证码:支持图形验证码登录,验证码功能可通过配置启用或关闭。
  • ✅ 用户管理:系统用户的增删改查,可启用或禁用用户。
  • ✅ 组织机构:组织架构的增删改查,支持多层级组织机构。
  • ✅ 权限管理:支持前端菜单,页面,按钮级权限配置;支持后端 API 粒度权限配置。
  • ✅ 角色管理:灵活定义用户角色,绑定权限进行控制。
  • ✅ 菜单管理:多级菜单动态配置。
  • ✅ 接口管理:支持所有 API 资源管理。
  • ✅ 字典管理:常量数据动态化配置管理,字段数据缓存管理。
  • ✅ 日志管理:登录日志,操作日志多维度可视化查询。
  • ✅ 内容管理:支持通用的文章内容管理,富文本模板编辑。
  • ✅ 公告管理:支持多类型业务公告发布管理。
  • ✅ 上传下载:框架提供通用的文件上传、下载功能。
  • ✅ 国际化:系统内置中英文两种语言,支持多语言。
  • ✅ 多主题:系统内置三种常用主题,支持画板自定义主题色。
  • ✅ 代码生成:前后端可视化代码生成器。
  • ✅ 数据库监控:支持 Druid 在线实时监控,支持慢 sql 分析。
  • ✅ Swagger:支持 API 文档可视化,支持在线调试。
  • ✅ 防御 XSS 攻击:提供 xss 过滤器防止 xss 攻击。
  • ✅ 缓存功能:提供基于 Redis 的缓存能力。
  • ✅ 搜索引擎:基于 ElasticSearch7.x 的搜索引擎
  • ✅ 审计日志:基于注解的审计日志记录功能
  • ✅ 多端适配:前端响应式布局
  • ✅ 登录切换:支持单设备 / 多设备登录切换
  • ✅ 统一异常:统一的异常处理机制
  • ✅ 统一响应体:统一的响应体规范
  • ✅ 统一工具:统一的工具类使用规范
  • ✅ 注册中心:基于 Nacos 的注册 / 配置中心管理
  • ✅ 事务管理:基于 Seata 的分布式事务管理
  • ✅ Maven 私服:Nexus Maven 私服
  • ✅ Docker 私服:Docker Registry2
  • ✅ 微服务监控:Admin 微服务监控大盘

# 开发规范

基于本框架进行开发时,请遵循以下开发规范,有助于快速、规范性的编码。

# Maven 依赖

sofast 框架对底层依赖已经做了封装,对于我们新建的微服务工程,只需要依赖 so-fast-web-starter 即可。该 starter 中对常用的依赖已经做好了管理,例如:redis、mybatis、log、springmvc、security 等;如果当前微服务需要提供 feign 接口供其他微服务调用,或者调用其他微服务的 feign 接口,则需要按需引入 sdk 依赖即可。

插件部分:只需引入 spring-boot-maven-plugin 即可,如果有 docker 需求,则引入 docker-maven-plugin 。

Good:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>so-fast-platform</artifactId>
        <groupId>com.sofast.cloud</groupId>
        <version>${so.fast.version}</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>so-fast-system</artifactId>
    <description>平台内置服务-系统管理</description>

    <dependencies>
        <dependency>
            <groupId>com.sofast.cloud</groupId>
            <artifactId>so-fast-web-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>com.sofast.cloud</groupId>
            <artifactId>so-fast-system-sdk</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39

# 工程结构

so-fast 规定了严格的工程目录结构(可参考「目录结构」章节),对于业务开发团队,原则上创建独立的业务服务工程进行开发,不推荐直接在 so-fast-pl-cloud 工程中直接开发。so-fast-pl-cloud 仅用于内置服务的维护。

例如:

xxx-biz-parent
  |--xxx-common
  |--xxx-backend
  |  |----xxx-order
  |  |----xxx-product
  |--xxx-sdk
1
2
3
4
5
6
1
2
3
4
5
6

# 目录结构

在 biz 下构建业务模块时,尽量设计、拆分合理,不允许直接在 biz 直接创建 controller 之类的 package,推荐先构建业务模块 package,如 biz.bills,然后在其下创建基础的 controller、domain、entity 等 package,便于按照业务模块进行拆分,便于进行领域抽象。

Good

system
    ├── dict
    │   ├── controller
    │   │   ├── DictDataController.java
    │   │   └── DictTypeController.java
    │   ├── domain
    │   │   └── vo
    │   │       ├── DictDataQueryVo.java
    │   │       └── DictTypeQueryVo.java
    │   ├── entity
    │   │   ├── DictData.java
    │   │   └── DictType.java
    │   ├── mapper
    │   │   ├── DictDataMapper.java
    │   │   └── DictTypeMapper.java
    │   └── service
    │       ├── IDictDataService.java
    │       ├── IDictTypeService.java
    │       └── impl
    │           ├── DictDataServiceImpl.java
    │           └── DictTypeServiceImpl.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

# 配置文件

so-fast 内置了三套配置文件(dev,test,prod),并通过 maven 打包工具管理环境的区分。在业务开发进行时,原则上开发人员只允许修改 dev 配置,对于 test 和 prod 应该有专人维护。

对于配置文件中的内容,除数据库、redis、安全配置、文件存储之外配置内容请慎重修改。

配置文件统一交由 nacos 配置中心进行维护。

# 异常处理

so-fast 框架有统一的异常处理,其中框架内应内置如下通用异常:

SystemException            // 自定义异常-内置System模块异常
CommonException            // 自定义异常-非模块异常(例如:工具类异常等)
FileException                // 自定义异常-文件操作通用异常
BizException                // 自定义异常-业务模块通用异常
LockException                // 自定义异常-分布式锁用异常
ThirdPartyException    // 自定义异常-调用第三方接口异常
1
2
3
4
5
6
1
2
3
4
5
6

由于 so-fast 内置了统一的异常拦截,在业务开发中需要处理异常的情况下,请使用 so-fast 内置异常进行异常封装,业务代码中禁止抛出其他异常。如需其他异常定制,请架构师统一处理,禁止开发人员私自乱定义异常。

# 工具集

so-fast 框架内置了通用的工具类,框架内引入了 hutool、apache、bouncycastle、okhttp3 等依赖,并对外提供统一出口。

utils
├── aop
│   └── SolAopUtils.java                                    // AOP注解操作工具类
├── common
│   ├── SolBase64.java                                        // Base64编码解码
│   ├── SolDateUtils.java                                    // 日期工具类
│   ├── SolObjUtils.java                                    // 对象操作工具类
│   ├── SolStringUtils.java                                // 字符串工具类
├── context
│   └── SpringUtils.java                                    // Spring容器操作辅助类
├── crypto
│   ├── SolSMUtils.java                                        // 国密算法加解密
│   └── SolSecureUtils.java                                // 通用加密工具类
├── es
│   └── SolEsUtils.java                                        // ES工具类
├── file
│   ├── SolFileUtils.java                                    // 文件操作工具类
│   └── SolImgUtils.java                                    // 图像处理工具类
├── http
│   └── SolHttpUtils.java                                    // 基于okhttp3的封装
├── i18n
│   └── I18nUtils.java                                        // i18n信息国际化
├── mail
│   └── SolMailUtils.java                                    // 邮件发送工具类
├── network
│   └── NetworkUtils.java                                    // request、response网络操作工具类
├── thread
│   └── ThreadUtils.java                                    // 线程池操作工具类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

# 日志审计

审计日志分为登录日志和操作日志两大块。so-fast 框架中对于登录日志和操作日志有专门的表用于记录日志数据,并可通过前端页面进行日志查看登录操作。对于更详细的业务代码执行日志,使用 logback 进行日志文件的记录。

# 登录日志

登录日志已经在框架中进行了统一处理,无需关注。前端可通过日志管理菜单进行查看。

# 操作日志

操作日志,基于 spring 的 AOP 原理进行织入拦截。so-fast 定义的了 LogOperator 注解并通过 LogAspect 实现日志的输出。在需要记录操作记录的接口上添加 LogOperator 即可实现日志的输出。so-fast 内置的输出信息较为简单,包含:操作内容、操作人、URL、操作类型、操作结果、客户端信息、操作时间、操作时长、以及相应的 class 信息。往往业务开发会有更多的需求,比如记录被操作的数据信息、数据的变化信息等更为详细的操作记录,但基于 so-fast 通用框架的特点,这些功能没有实现,业务开发团队可依据自身的业务需求定制更为详尽的操作日志。

操作日志使用方式如下:

对需要记录日志的 api 添加注解 @LogOperator,其中两个属性:

title:标题。推荐使用 业务模块-操作标题 的形式

type:操作类型。系统内置:增删改查、上传和下载 6 个固定分类。

@LogOperator(title = "字典管理-根据ID查询", type = Constants.SELECT_OPERATOR)
@LogOperator(title = "字典管理-更新字典数据", type = Constants.UPDATE_OPERATOR)
@LogOperator(title = "字典管理-根据字典ID删除", type = Constants.DELETE_OPERATOR)
@LogOperator(title = "字典管理-新增字典数据", type = Constants.INSERT_OPERATOR)
1
2
3
4
1
2
3
4
# 代码执行日志

对于代码执行日志,so-fast 并无明确约束,框架中内置 logback,可根据不同业务需求,配置 logback 进行日志分隔,并通过使用 lombok 的 Slf4j 注解创建 log 对象,不推荐自定义 logger 对象。

Bad

protected Logger logger = LoggerFactory.getLogger(getClass());
1
1

Good

// 使用Slf4j注解,并指定topic,topic对应logback.xml文件中的logger节点的name属性
@Slf4j(topic = "utils-log")

log.info(...)
1
2
3
4
1
2
3
4

# 文件处理

so-fast 内置了通用的文件上传下载功能,支持头像、图片、普通文件等多种类型。在使用时,请务必做好文件的存储规划。文件下载尽量通过 nginx 代理进行处理,不推荐使用 API 下载文件。对于超大文件的处理,业务组自行斟酌,如有问题请联系国内开发技术委员会。

文件处理相关配置参考:

sofast:
  file:
    # 头像存储路径
    avatarPath: /mnt/sofast/avatar/
    # 图片文件上传路径
    imagePath: /mnt/sofast/images/
    # 文件上传路径
    filePath: /mnt/sofast/files/
    # nginx代理文件下载地址
    proxyPath: /download
1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10

# API 接口规范

推荐使用框架自带的代码生成器进行接口的生成。

# API 文档

基于前后台分离的开发模式,API 文档至关重要。进行接口程开发时,请务必详尽的编写 swagger 文档。

# URL

URL 的命名有多种规范,如遵循 RESTful 的严格要求,可能会给设计开发带来一定的难度和局限,因此 so-fast 推荐:所有的查询请求尽可能的使用 get 请求,所有的修改请求均使用 post 请求。

对于 URI 的命名请参考如下,此外的情况酌情表达语义。

  • 基于 id 的单条数据查询使用【/{id}】
  • 分页查询使用【/page】
  • 不分页查询使用【/all】
  • 创建数据使用【/create】
  • 删除数据使用【/delete】
  • 更新数据使用【/update】
  • 启用数据使用【/enable】
  • 禁用数据使用【/disable】
  • 上传文件使用【/upload】
  • 下载文件使用【/download】

Bad

/**
 * 根据组织名称查询组织信息
 **/
@GetMapping("/getbyname")
1
2
3
4
1
2
3
4

Good

/**
 * 根据组织名称查询组织信息
 **/
@GetMapping("/organization/{name}")
1
2
3
4
1
2
3
4

在整个系统中,接口层要有清晰的定位,不推荐在接口层处理复杂逻辑,接口层应尽量的轻量优雅:只负责接口数据格式的定义、底层业务的调度、返回值的封装。

# 基类

so-fast 为 controller 提供了如下基类,其中 BaseController 封装的 token 的通用操作,在需要获取 token 内置信息时,请继承 BaseController;BaseFileController 封装了基础的文件操作,如需文件上传下载功能请继承 BaseFileController。

com.sofast.core.framework.web.controller.BaseController
com.sofast.core.framework.web.controller.BaseFileController
1
2
1
2

# 业务层

推荐使用框架自带的代码生成器进行接口的生成。

Service 使用接口抽象方式,其中接口命名为 IXxxxService,实现类命名为 XxxServiceImpl

接口必须集成 IService,例:

public interface IDictDataService extends IService<DictData> {
1
1

实现类必须集成 ServiceImpl,并实现父接口,例:

public class DictDataServiceImpl extends ServiceImpl<DictDataMapper, DictData> implements IDictDataService {
1
1

# 数据层

# Domain

domain 含有两种对象 DTO 和 VO。

DTO 主要针对数据层面和业务处理层面的数据组装,VO 主要针对接口层面的的数据格式。业务开发团队进行实际开发时请酌情使用。

# Entity

推荐使用框架自带的代码生成器进行接口的生成。

Entity 定义数据实体,so-fast 集成了 Mybatis-plus,并且在 test 包下面内置了代码生成器,因此 entity 无需编写,使用代码生成器生成即可,生成之后注意检查 swagger 注解的有无以及妥当性,对于通用处理(如:更新时间的更新、创建时间的插入),可通过 Mybatis-plus 提供的 MetaObjectHandler 的统一实现,详细请参考:com.sofast.core.framework.handler.SolMetaObjectHandler。

# Mapper

推荐使用框架自带的代码生成器进行接口的生成。

略

# Mapper.xml

推荐使用框架自带的代码生成器进行接口的生成。

对于简单的条件处理,推荐使用 Mybatis-plus 内置的 Wrapper 进行处理,对于复杂的条件查询等,可以书写 SQL 文。

# 数据库设计规范

通用数据库设计规范不在记述范围,只约定 so-fast 框架规定的规范:

  • 表设计时,如下为通用字段,理论上各表均需添加。
创建用户ID                 create_user     bigint
创建时间                   create_time     datetime
更新用户ID                 update_user     bigint
更新时间                   update_time     datetime
逻辑删除Flag               delete_flg      int
1
2
3
4
5
1
2
3
4
5
  • 状态类字段统一使用 char 类型,逻辑删除 Flag 除外;
  • 尽量避免出现以【is】开头的字段;
  • 字符集使用 utf8mb4
  • 不允许使用联合主键
  • 主键统一为 bigint(20)id

# 技术选型

# 前端工程

  • Vue 2.6.10
  • Vuex 3.1.0
  • Vue-router 3.0.6
  • Axios 0.181
  • Element UI 2.13.2

# 后端工程

  • SpringBoot 2.3.5.RELEASE
  • SpringCloud Hoxton.SR8
  • SpringCloud Alibaba 2.2.3.RELEASE
  • Nacos 1.2.0
  • Sentinel 1.8.0
  • Spring-framework 5.2.10.RELEASE
  • Spring-security 5.3.5.RELEASE
  • Mybatis-plus 3.3.2
  • Mybatis-plus-generator-ui 1.3.0
  • Jedis 3.3.0
  • Druid 1.1.14
  • Fastjson 1.2.74
  • Jjwt 0.10.7
  • ElasticSearch 6.0
  • okhttps 2.4.3
  • Hutool 5.5.0
  • Swagger2 2.9.2
  • Swagger-bootstrap-ui 1.9.6
  • Lombok 1.18.16
上次更新: 2025/04/23, 09:03:53

← 快速上手 架构设计→

Theme by | Copyright © -2025
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式