若依开发笔记-3:功能详解

若依功能详解

功能详解

我们将对若依的通用功能进行详解。本章内容分为三个重点部分:

系统管理

权限系统

演示

若依提供了企业级通用权限系统,我们这里拿CRM系统先给大家演示下:

demo账号(超级管理员),可以查看所有功能菜单

zhangsan账号(市场专员),可以查看线索管理菜单。密码:123456

yueyue账号(销售专员),可以查看商机、合同等菜单。密码:123456

RBAC

lRBAC(基于角色的访问控制)是一种广泛使用的访问控制模型,通过角色来分配和管理用户的菜单权限。

表关系

案例

创建新用户小智并关联课研人员角色,仅限课程管理和统计分析菜单访问。

实现步骤:
①创建菜单
②创建角色,并分配权限
③创建用户,并关联角色

实现步骤:

①创建菜单色

因为课程管理在入门案例中已经创建过了

②创建角色,并分配权限

③创建用户,并关联角色

测试

数据字典

介绍

若依内置的数据字典,用于维护系统中常见的静态数据。例如:性别、状态…

功能包括:字典类型管理、字典数据管理

表关系

案例

将课程管理的学科字段改为数据字典维护

实现步骤:
①添加字典类型和数据

②修改代码生成信息

③下载代码,导入前端

Tip

把数据库subject改成相应的数字

参数设置

参数设置:对系统中的参数进行动态维护。

关闭登录验证码

通知公告

RuoYi的通知公告功能提供了一个方便的方式来发布和管理通知、公告和新闻等信息。管理员可以创建、编辑和删除通知(支持富文本编辑和附件上传)。
系统将信息发送给指定的用户、部门或角色。用户可以通过系统界面或电子邮件接收通知,从而确保信息及时传达(这部分需要自己开发)。
通知公告功能有助于组织内部沟通和信息传递,提高了工作效率和信息共享。

日志管理

登录日志
①记录用户的登录信息,包括登录时间和地点(IP地址)
②帮助管理员监控登录行为,及时发现任何可疑的登录尝试
③同样提供搜索和筛选功能,方便查找特定用户的登录历史

操作日志
①记录用户在系统中的所有操作,如查看、修改数据等。
②帮助管理员检查谁做了什么,以及何时做的,确保数据准确无误。
③可以快速搜索和找到特定的操作记录,便于管理和审查。

系统监控

监控相关

若依提供了一些列强大的监控工具,能够帮助开发者和运维快速了解应用程序的性能状态。

1.在线用户:

管理员可以看到当前谁在系统里,他们什么时候登录的,从哪里登录的,属于哪个部门。 如果有人没权限还赖着不走,管理员可以一键让他们下线,保证系统的安全。

2.数据监控:

管理员可以实时看到系统的各项指标,比如资源使用情况,数据库状态等。 通过图表可以直观地看出系统是否健康,如果出现问题,系统会发出警报。

3.服务监控:

管理员可以监控系统中各个服务是否正常运行,以及它们的性能指标。 如果服务出现问题,系统会立即通知管理员,并通过仪表板展示,方便管理员快速了解情况。

4.缓存监控:

管理员可以监控系统的缓存使用情况,比如缓存是否经常被用到,缓存的大小等。 系统还可以自动清理缓存,保持数据的新鲜度,如果缓存有问题,也会发出警报。

定时任务

介绍

若依为定时任务功能提供方便友好的web界面,实现动态管理任务。

案例
每间隔5秒,控制台输出系统时间。

实现步骤:
①创建任务类

②添加任务规则

-任务名称:自定义,如:定时查询任务状态
-任务分组:根据字典sys_job_group配置,可自行进行配置
-调用目标字符串:设置后台任务方法名称参数
-执行表达式:可查询官方cron表达式介绍
-执行策略:定时任务自定义执行策略
-并发执行:是否需要多个任务间同时执行
③启动任务

系统工具

表单构建

介绍

1.允许用户通过拖放等可视化操作创建表单,比如用来收集数据的表格或调查问卷。
2.可以自定义表单的各个部分,比如添加不同的输入项和设置验证规则,无需编写代码。
3.提供了导出数据、导入数据、分享表单和设置权限的功能,方便数据管理和共享。

案例

通过表单构建工具,单独制作一个添加课程的表单页面。

实现步骤:
①制作表单并导出

②复制到前端工程

③创建动态菜单

代码生成

-自动化工具,可以快速生成项目中常用的代码,如数据库操作类、后端控制器、前端页面等。
-支持根据数据库的表结构反向生成代码,减少手动编写的工作量。
-提供三种生成模板:单表、 树表、主子表(一对多),可以生成适用于Spring Boot、MyBatis等流行框架的代码,提高开发效率和代码质量。
-树表是一种展示层级数据的表格,能展开折叠,清晰呈现父子关系,便于管理。

最终完成的效果

实现步骤

代码生成配置主表实现细节:

实现步骤

系统接口

-Swagger,能够自动生成 API 的同步在线文档,并提供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
com.ruoyi
├── ruoyi-admin // 后台服务模块
│ └── web // 内置功能的表现层
│ └── RuoYiApplication // 若依项目启动类
├── ruoyi-common // 通用工具模块
│ └── annotation // 自定义注解
│ └── config // 全局配置
│ └── constant // 通用常量
│ └── core // 核心控制
│ └── enums // 通用枚举
│ └── exception // 通用异常
│ └── filter // 过滤器处理
│ └── utils // 通用类处理
│ └── xss // 自定义xss校验
├── ruoyi-framework // 框架核心模块
│ └── aspectj // AOP配置
│ └── config // 系统配置
│ └── datasource // 多数据源配置
│ └── interceptor // 拦截器
│ └── manager // 异步处理
│ └── security // 权限控制
│ └── web // 前端控制
├── ruoyi-generator // 代码生成模块(可移除)
├── ruoyi-quartz // 定时任务模块(可移除)
├── ruoyi-system // 系统代码模块
│ └── domain // 系统代码的实体类
│ └── mapper // 系统代码的持久层
│ └── service // 系统代码的业务层

项目中配置

项目中的配置文件都在ruoyi-admin模块下,如下图:

-i18n:国际化处理
-META-INF:存储了项目的元信息(描述数据的数据),无需修改
-mybatis:mybatis相关的配置信息
-application.yml:项目中的核心配置
-application-druid.yml:数据库连接配置
-banner.txt:默认的banner图标信息,项目启动,控制台打印显示
-logback.xml:日志配置
最主要的两个配置文件:application.yml

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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131

# 项目相关配置
ruoyi:
# 名称
name: RuoYi
# 版本
version: 3.8.7
# 版权年份
copyrightYear: 2024
# 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)
profile: D:/ruoyi/uploadPath
# 获取ip地址开关
addressEnabled: false
# 验证码类型 math 数字计算 char 字符验证
captchaType: math

# 开发环境配置
server:
# 服务器的HTTP端口,默认为8080
port: 8080
servlet:
# 应用的访问路径
context-path: /
tomcat:
# tomcat的URI编码
uri-encoding: UTF-8
# 连接数满后的排队数,默认为100
accept-count: 1000
threads:
# tomcat最大线程数,默认为200
max: 800
# Tomcat启动初始化的线程数,默认值10
min-spare: 100

# 日志配置
logging:
level:
com.ruoyi: debug
org.springframework: warn

# 用户配置
user:
password:
# 密码最大错误次数
maxRetryCount: 5
# 密码锁定时间(默认10分钟)
lockTime: 10

# Spring配置
spring:
# 资源信息
messages:
# 国际化资源文件路径
basename: i18n/messages
profiles:
active: druid
# 文件上传
servlet:
multipart:
# 单个文件大小
max-file-size: 10MB
# 设置总上传的文件大小
max-request-size: 20MB
# 服务模块
devtools:
restart:
# 热部署开关
enabled: true
# redis 配置
redis:
# 地址
host: localhost
# 端口,默认为6379
port: 6379
# 数据库索引
database: 0
# 密码
password: 123456
# 连接超时时间
timeout: 10s
lettuce:
pool:
# 连接池中的最小空闲连接
min-idle: 0
# 连接池中的最大空闲连接
max-idle: 8
# 连接池的最大数据库连接数
max-active: 8
# #连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: -1ms

# token配置
token:
# 令牌自定义标识
header: Authorization
# 令牌密钥
secret: abcdefghijklmnopqrstuvwxyz
# 令牌有效期(默认30分钟)
expireTime: 30

# MyBatis配置
mybatis:
# 搜索指定包别名
typeAliasesPackage: com.ruoyi.**.domain
# 配置mapper的扫描,找到所有的mapper.xml映射文件
mapperLocations: classpath*:mapper/**/*Mapper.xml
# 加载全局的配置文件
configLocation: classpath:mybatis/mybatis-config.xml

# PageHelper分页插件
pagehelper:
helperDialect: mysql
supportMethodsArguments: true
params: count=countSql

# Swagger配置
swagger:
# 是否开启swagger
enabled: true
# 请求前缀
pathMapping: /dev-api

# 防止XSS攻击
xss:
# 过滤开关
enabled: true
# 排除链接(多个用逗号分隔)
excludes: /system/notice
# 匹配链接
urlPatterns: /system/*,/monitor/*,/tool/*

模块依赖关系

各个模块之间的依赖关系:

前端结构

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
ruoyi-vue3
├── bin // 执行脚本
├── html // IE低版本提示页
├── node_modules // 第三方依赖库
├── public // 公共资源
│ ├── favicon.ico // favicon图标
├── src // 源代码
│ ├── api // 所有请求
│ ├── assets // 静态资源
│ ├── components // 全局公用组件
│ ├── directive // 全局指令
│ ├── layout // 布局
│ ├── plugins // 通用插件
│ ├── router // 路由配置
│ ├── store // 状态管理
│ ├── utils // 全局公用方法
│ ├── views // 视图组件
│ ├── App.vue // 入口组件
│ ├── main.js // 入口文件
│ ├── permission.js // 权限管理
│ └── settings.js // 系统配置
├── vite // 构建工具
├── .env.development // 开发环境配置
├── .env.production // 生产环境配置
├── .env.staging // 测试环境配置
├── .gitignore // git 忽略项
├── index.html // 入口页面
├── package.json // 项目配置文件(相当于pom.xml)
└── vue.config.js // Vue项目的配置信息(相当于application.yml)

表结构介绍

ruoyi-vue数据库设计包含了多个表结构,用于支持系统的各种功能模块。
这些表可以根据它们的功能和用途进行分类,以便在后期使用时能够快速定位和理解。以下是对这些表结构的分类和简要说明: