# sourceQ-cloud **Repository Path**: yqfly/sourceQ-cloud ## Basic Information - **Project Name**: sourceQ-cloud - **Description**: springCloud脚手架,基于若依框架的微服务定制开发 - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-03-22 - **Last Updated**: 2024-07-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README
## 内置功能
1. 用户管理:用户是系统操作者,该功能主要完成系统用户配置。
2. 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。
3. 岗位管理:配置系统用户所属担任职务。
4. 菜单管理:配置系统菜单,操作权限,按钮权限标识等。
5. 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。
6. 字典管理:对系统中经常使用的一些较为固定的数据进行维护。
7. 参数管理:对系统动态配置常用参数。
8. 通知公告:系统通知公告信息发布维护。
9. 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。
10. 登录日志:系统登录日志记录查询包含登录异常。
11. 在线用户:当前系统中活跃用户状态监控。
12. 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。
13. 代码生成:前后端代码的生成(java、html、xml、sql)支持CRUD下载 。
14. 系统接口:根据业务代码自动生成相关的api接口文档。
15. 服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。
16. 在线构建器:拖动表单元素生成相应的HTML代码。
17. 连接池监视:监视当前系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。
18. 多租户管理(新增):添加多租户隔离。
19. 邮件信息,短信信息集成(新增):
## 在线体验
- admin/admin123
-
## 版本记录
V1.0.0 初始化项目
## 备忘录
@DataScope注解的使用
解释:数据权限注解
参数:
deptAlias:部门表别名
userAlias用户表别名
permission:权限字符(用于多个角色匹配符合要求的权限)默认根据权限注解@RequiresPermissions获取,多个权限用逗号分隔开来
实现:
具体事项使用了切面做切入点,具体逻辑在 com.sourceQ.common.datascope.aspect.DataScopeAspect.class 中
MQ中间件,提供了Redis和rabbitMQ两种模式,但是Redis模式还需要集成Redisson分布式锁实现,暂未提供
权限实现
采用了菜单权限表做区分,使用字段隔离的形式,标识是菜单还是按钮
### 运行环境
```
JDK >= 1.8 (推荐1.8版本)
Mysql >= 5.7.0 (推荐5.7版本)
Redis >= 3.0
Maven >= 3.0
Node >= 12
nacos >= 2.0.4 (sourceQ-cloud < 3.0 需要下载nacos >= 1.4.x版本)
sentinel >= 1.6.0
```
### 后端运行
1、创建数据库sourceQ-cloud,导入sql目录中的sql文件,创建并初始化sourceQ-config数据库
2、配置Nacos的持久化模式,改为指定数据库存储模式,例如MYSQL,修改Nacos中conf/application.properties文件。
```
# db mysql
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://localhost:3306/sourceQ-config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=root
db.password=password
```
*导入数据后需要修改各个应用的对应配置,由于采用了Nacos的配置管理模式,所以各个应用的配置都卸载数据库管理,也就是sourceQ-config库中的config_info表中。*
3、启动各个应用
应用启动前需先启动Nacos,如果是本地启动,需要调整nacos的启动方式为单机启动,nacos默认启动方式为集群
- SourceQGatewayApplication (网关模块 必须)
- SourceQAuthApplication (认证模块 必须)
- SourceQSystemApplication (系统模块 必须)
- SourceQMonitorApplication (监控中心 可选)
- SourceQGenApplication (代码生成 可选)
- SourceQJobApplication (定时任务 可选)
- SourceQFileApplication (文件服务 可选)
4、集成seata分布式事务(非必须,可选)
创建数据库`sourceQ-seata`并导入数据脚本`sourceQ_seata_2021xxxx.sql`
### 前端运行
```
# 进入项目目录
cd ruoyi-ui
# 安装依赖
npm install
# 强烈建议不要用直接使用 cnpm 安装,会有各种诡异的 bug,可以通过重新指定 registry 来解决 npm 安装速度慢的问题。
npm install --registry=https://registry.npmmirror.com
# 本地开发 启动项目
npm run dev
```
6、运行成功
打开浏览器,输入:([http://localhost:80 (opens new window)](http://localhost/)) 默认账户/密码 `admin/admin123`)
若能正确展示登录页面,并能成功登录,菜单及页面展示正常,则表明环境搭建成功
swagger
### 项目部署
### 项目二次定制开发
1、租户管理
设计实现
新增租户表,租户套餐表,由于使用的是字段隔离,所以需要再需要做数据隔离的表中都加入租户id
短信测试
key:696b5d8ead48071237e4aa5861ff08dbadb2b4ded1c688a7b7c9afc615579859
apiSecret:SEC5c4e5ff888bc8a9923ae47f59e7ccd30af1f14d93c55b4e2c9cb094e35aeed67

**按租户id字段隔离租户** 架构设计实现多租户数据隔离的。采用共享数据空间设计模式实现
在每一个表空间中都增加一个必要字段租户id做租户数据维护,可以使用mybatis-plus+AOP模式设计做隐式添加租户id
特别注意
多租户 != 权限过滤,不要乱用,租户之间是完全隔离的!!!
启用多租户后所有执行的method的sql都会进行处理.

租户中的用户拥有的角色为租户套餐的角色,角色绑定了菜单。
1、不需要做隔离的表,需要再配置文件中指明。
2、需在用户登录时做租户校验,校验是否套餐过期
3、在修改租户套餐时,需对应修改租户的用户所拥有的角色
4、在修改套餐时,应注意套餐是否已用,如果套餐已用,需要注意控制用户的权限大小是否有变化