Coverage Status Downloads Downloads

# AGT-Cloud云平台 ## 平台简介 ![架构图](/.image/common/agt-cloud-architecture.png) * Java 后端:JDK 17/21 + Spring Boot 3.4.5 * 管理后台的电脑端:Vue3 采用 [vben(ant-design-vue)](https://doc.vben.pro/guide/introduction/vben.html) 企业级管理系统框架 * 管理后台的移动端:采用 [uni-app](https://zh.uniapp.dcloud.io) 方案,一份代码多终端适配,同时支持 APP、小程序、H5! * 后端采用 Spring Cloud Alibaba 微服务架构,注册中心 + 配置中心 Nacos,定时任务 XXL-Job,服务保障 Sentinel,服务网关 Gateway,分布式事务 Seata * 数据库可使用 MySQL、Oracle、PostgreSQL、SQL Server、MariaDB、国产达梦 DM、TiDB 等,基于 MyBatis Plus、Redis + Redisson 操作 * 消息队列可使用 Event、Redis、RabbitMQ、Kafka、RocketMQ 等 * 权限认证使用 Spring Security & Token & Redis,支持多终端、多种用户的认证系统,支持 SSO 单点登录 * 支持加载动态权限菜单,按钮级别权限控制,Redis 缓存提升性能 * 支持 SaaS 多租户,可自定义每个租户的权限,提供透明化的多租户底层封装 * 工作流使用 Flowable,支持动态表单、在线设计流程、会签 / 或签、多种任务分配方式 * 高效率开发,使用代码生成器可以一键生成 Java、Vue 前后端代码、SQL 脚本、接口文档,支持单表、树表、主子表 * 实时通信,采用 Spring WebSocket 实现,内置 Token 身份校验,支持 WebSocket 集群 * 集成微信小程序、微信公众号、企业微信、钉钉等三方登陆,集成支付宝、微信等支付与退款 * 集成阿里云、腾讯云等短信渠道,集成 MinIO、阿里云、腾讯云、七牛云等云存储服务 * 集成报表设计器、大屏设计器,通过拖拽即可生成酷炫的报表与大屏 ## 内置功能 系统内置多种多种业务功能,可以用于快速你的业务系统: ![功能分层](/.image/common/agt-cloud-biz.png) * 通用模块(必选):系统功能、基础设施 * 通用模块(可选):工作流程、支付系统、数据报表、会员中心 * 业务系统(按需):ERP 系统、CRM 系统、商城系统、微信公众号、AI 大模型 ### 系统功能 | 功能 | 描述 | |------|-----------------------| | 用户管理 | 用户是系统操作者,该功能主要完成系统用户配置 | | 在线用户 | 当前系统中活跃用户状态监控,支持手动踢下线 | | 角色管理 | 角色菜单权限分配、设置角色按机构进行数据范围权限划分 | | 菜单管理 | 配置系统菜单、操作权限、按钮权限标识等,本地缓存提供性能 | | 部门管理 | 配置系统组织机构(公司、部门、小组),树结构展现支持数据权限 | | 岗位管理 | 配置系统用户所属担任职务 | | 租户管理 | 配置系统租户,支持 SaaS 场景下的多租户功能 | | 租户套餐 | 配置租户套餐,自定每个租户的菜单、操作、按钮的权限 | | 字典管理 | 对系统中经常使用的一些较为固定的数据进行维护 | | 短信管理 | 短信渠道、短息模板、短信日志,对接阿里云、腾讯云等主流短信平台 | | 邮件管理 | 邮箱账号、邮件模版、邮件发送日志,支持所有邮件平台 | | 站内信 | 系统内的消息通知,提供站内信模版、站内信消息 | | 操作日志 | 系统正常操作日志记录和查询,集成 Swagger 生成日志内容 | | 登录日志 | 系统登录日志记录查询,包含登录异常 | | 通知公告 | 系统通知公告信息发布维护 | | 敏感词 | 配置系统敏感词,支持标签分组 | | 应用管理 | 管理 SSO 单点登录的应用,支持多种 OAuth2 授权方式 | | 地区管理 | 展示省份、城市、区镇等城市信息,支持 IP 对应城市 | ![功能图](/.image/common/system-feature.png) ### 基础设施 | 功能 | 描述 | |-----|----------------------------------------------| | 代码生成 | 前后端代码的生成(Java、Vue、SQL、单元测试),支持 CRUD 下载 | | 系统接口 | 基于 Swagger 自动生成相关的 RESTful API 接口文档 | | 数据库文档 | 基于 Screw 自动生成数据库文档,支持导出 Word、HTML、MD 格式 | | 表单构建 | 拖动表单元素生成相应的 HTML 代码,支持导出 JSON、Vue 文件 | | 配置管理 | 对系统动态配置常用参数,支持 SpringBoot 加载 | | 定时任务 | 在线(添加、修改、删除)任务调度包含执行结果日志 | | 文件服务 | 支持将文件存储到 S3(MinIO、阿里云、腾讯云、七牛云)、本地、FTP、数据库等 | | WebSocket | 提供 WebSocket 接入示例,支持一对一、一对多发送方式 | | API 日志 | 包括 RESTful API 访问日志、异常日志两部分,方便排查 API 相关的问题 | | MySQL 监控 | 监视当前系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈 | | Redis 监控 | 监控 Redis 数据库的使用情况,使用的 Redis Key 管理 | | 消息队列 | 基于 Redis 实现消息队列,Stream 提供集群消费,Pub/Sub 提供广播消费 | | Java 监控 | 基于 Spring Boot Admin 实现 Java 应用的监控 | | 链路追踪 | 接入 SkyWalking 组件,实现链路追踪 | | 日志中心 | 接入 SkyWalking 组件,实现日志中心 | | 服务保障 | 基于 Redis 实现分布式锁、幂等、限流功能,满足高并发场景 | | 日志服务 | 轻量级日志中心,查看远程服务器的日志 | | 单元测试 | 基于 JUnit + Mockito 实现单元测试,保证功能的正确性、代码的质量等 | ![功能图](/.image/common/infra-feature.png) ## 技术栈 ### 微服务 | 项目 | 说明 | |-----------------------|--------------------| | `agt-dependencies` | Maven 依赖版本管理 | | `agt-framework` | Java 框架拓展 | | `agt-server` | 管理后台 + 用户 APP 的服务端 | | `agt-module-system` | 系统功能的 Module 模块 | | `agt-module-member` | 会员中心的 Module 模块 | | `agt-module-infra` | 基础设施的 Module 模块 | | `agt-module-bpm` | 工作流程的 Module 模块 | | `agt-module-pay` | 支付系统的 Module 模块 | | `agt-module-mall` | 商城系统的 Module 模块 | | `agt-module-erp` | ERP 系统的 Module 模块 | | `agt-module-crm` | CRM 系统的 Module 模块 | | `agt-module-ai` | AI 大模型的 Module 模块 | | `agt-module-mp` | 微信公众号的 Module 模块 | | `agt-module-report` | 大屏报表 Module 模块 | ### 框架 | 框架 | 说明 | 版本 | |---------------------------------------------------------------------------------------------|------------------|------------| | [Spring Cloud Alibaba](https://github.com/alibaba/spring-cloud-alibaba) | 微服务框架 | 2023.0.1 | | [Nacos](https://github.com/alibaba/nacos) | 配置中心 & 注册中心 | 2.3.2 | | [RocketMQ](https://github.com/apache/rocketmq) | 消息队列 | 5.2.0 | | [Sentinel](https://github.com/alibaba/sentinel) | 服务保障 | 1.8.6 | | [XXL Job](https://github.com/xuxueli/xxl-job) | 定时任务 | 2.4.0 | | [Spring Cloud Gateway](https://github.com/spring-cloud/spring-cloud-gateway) | 服务网关 | 4.1.0 | | [Seata](https://github.com/seata/seata) | 分布式事务 | 1.6.1 | | [MySQL](https://www.mysql.com/cn/) | 数据库服务器 | 5.7 / 8.0+ | | [Druid](https://github.com/alibaba/druid) | JDBC 连接池、监控组件 | 1.2.23 | | [MyBatis Plus](https://mp.baomidou.com/) | MyBatis 增强工具包 | 3.5.7 | | [Dynamic Datasource](https://dynamic-datasource.com/) | 动态数据源 | 4.3.1 | | [Redis](https://redis.io/) | key-value 数据库 | 5.0 / 6.0 | | [Redisson](https://github.com/redisson/redisson) | Redis 客户端 | 3.32.0 | | [Spring MVC](https://github.com/spring-projects/spring-framework/tree/master/spring-webmvc) | MVC 框架 | 6.1.10 | | [Spring Security](https://github.com/spring-projects/spring-security) | Spring 安全框架 | 6.3.1 | | [Hibernate Validator](https://github.com/hibernate/hibernate-validator) | 参数校验组件 | 8.0.1 | | [Flowable](https://github.com/flowable/flowable-engine) | 工作流引擎 | 7.0.0 | | [Knife4j](https://gitee.com/xiaoym/knife4j) | Swagger 增强 UI 实现 | 4.5.0 | | [SkyWalking](https://skywalking.apache.org/) | 分布式应用追踪系统 | 9.0.0 | | [Spring Boot Admin](https://github.com/codecentric/spring-boot-admin) | Spring Boot 监控平台 | 3.6.1 | | [Jackson](https://github.com/FasterXML/jackson) | JSON 工具库 | 2.17.1 | | [MapStruct](https://mapstruct.org/) | Java Bean 转换 | 1.6.3 | | [Lombok](https://projectlombok.org/) | 消除冗长的 Java 代码 | 1.18.34 | | [JUnit](https://junit.org/junit5/) | Java 单元测试框架 | 5.10.1 | | [Mockito](https://github.com/mockito/mockito) | Java Mock 框架 | 5.7.0 | ## 快速启动 ### 1. 基础设施(必选) #### 1.1 安装JDK 安装JDK 17/21,最低版本要求JDK 17 #### 1.2 初始化数据库 项目使用 MySQL 存储数据,所以需要启动一个 MySQL 服务,如果是 PostgreSQL、Oracle、SQL Server、DM、大金 等其它数据库,也是可以的。 ① 创建一个名字为 agt-cloud 数据库,【只要】 执行对应数据库类型的 sql 目录下的 agt-cloud.sql SQL 文件,进行初始化。 ② 默认配置下,MySQL 需要启动在 3306 端口,并且账号是 root,密码是 123456。如果不一致,需要修改 application-local.yaml 配置文件。 #### 1.3 初始化 Redis 项目使用 Redis 缓存数据,所以需要启动一个 Redis 服务。 默认配置下,Redis 启动在 6379 端口,不设置账号密码。如果不一致,需要修改 application-local.yaml 配置文件。 #### 1.4 初始化 Nacos(微服务必选) 项目使用 Nacos 作为注册中心和配置中心,所以需要启动一个 Nacos 服务。 启动完成之后,需要创建 dev 命名空间。 > 注意!新建命名空间时,它的“命名空间ID”、“命名空间名”都要是 dev ### 2. 基础设施(可选) * RocketMQ(消息队列) * XXL-Job(分布式定时任务) * Seata(分布式事务) * Sentinel(分布式服务保障) * Elasticsearch(搜索引擎) ### 3. 启动后端项目 #### 3.1 编译项目 直接执行 mvn clean install package '-Dmaven.test.skip=true' 命令 或者使用 IDEA 自带的 Maven 插件,进行项目的编译。 #### 3.2 微服务启动 依次启动各个微服务 ##### 3.2.1 启动 gateway 服务 执行 AgtGatewayApplication 类,进行启动。 ##### 3.2.2 启动 system 服务 执行 AgtSystemApplication 类,进行启动。 ##### 3.2.3 启动 infra 服务 执行 AgtInfraApplication 类,进行启动。 #### 3.3 单体启动模式 在 agt-cloud 微服务项目的根目录,有一个 agt-server 模块 没错,它就是 agt-cloud 微服务项目的【单体启动模式】!主要解决三个好处: * 后悔药:项目一开始采用了 agt-cloud 微服务架构,结果后续上线发现资源不足,或者实际业务量不大,则可以改成使用 agt-server 单体启动模式部署。 * 开发提速:本地启动 agt-cloud 多个微服务很麻烦,而 agt-server 则可以直接启动一个 agt-server 项目,即可启动所有的微服务,方便开发。 * 架构升级:技术选型时,不确定使用微服务架构还是单体架构,则可以直接使用 agt-cloud 项目,最终按需部署微服务还是单体。 agt-server 的启动非常简单,只需要运行 AgtServerApplication 类即可!默认只开启 system 和 infra 模块。其它模块的开启,参考对应模块的“功能开启”即可!