【ruoyi-vue】前后端分离项目分析

【ruoyi-vue】前后端分离项目分析

  • 【一】介绍
    • 【1】简介
    • 【2】主要特性
    • 【3】内置功能
    • 【4】后端文件结构
  • 【二】基础功能
    • 【1】上传下载
    • 【2】事务管理
    • 【3】异常处理
    • 【4】自定义注解校验:Xxs注解
    • 【5】数据脱敏
  • 【三】后台扩展

【一】介绍

【1】简介

RuoYi-Vue 是一个 Java EE 企业级快速开发平台,基于经典技术组合(Spring Boot、Spring Security、MyBatis、Jwt、Vue),内置模块如:部门管理、角色用户、菜单及按钮授权、数据权限、系统参数、日志管理、代码生成等。在线定时任务配置;支持集群,支持多数据源,支持分布式事务。

【2】主要特性

(1)支持多数据源,简单配置即可实现切换。
(2)支持按钮及数据权限,可自定义部门数据权限。
(3)完善的XSS防范及脚本过滤,彻底杜绝XSS攻击
(4)Maven多项目依赖,模块及插件分项目,尽量松耦合,方便模块升级、增减模块。
(5)国际化支持,服务端及客户端支持
(6)完善的日志记录体系简单注解即可实现
(7)支持服务监控,数据监控,缓存监控功能。

【3】内置功能

(1)用户管理:用户是系统操作者,该功能主要完成系统用户配置。
(2)部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。
(3)岗位管理:配置系统用户所属担任职务。
(4)菜单管理:配置系统菜单,操作权限,按钮权限标识等。
(5)角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。
(6)字典管理:对系统中经常使用的一些较为固定的数据进行维护。
(7)参数管理:对系统动态配置常用参数。
(8)通知公告:系统通知公告信息发布维护。
(9)操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。
(10)登录日志:系统登录日志记录查询包含登录异常。
(11)在线用户:当前系统中活跃用户状态监控。
(12)定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。
(13)代码生成:前后端代码的生成(java、html、xml、sql)支持CRUD下载 。
(14)系统接口:根据业务代码自动生成相关的api接口文档。
(15)服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。
(16)缓存监控:对系统的缓存信息查询,命令统计等。
(17)在线构建器:拖动表单元素生成相应的Vue代码。
(18)连接池监视:监视当期系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。

【4】后端文件结构

com.ruoyi
├── common // 工具类
│ └── annotation // 自定义注解
│ └── config // 全局配置
│ └── constant // 通用常量
│ └── core // 核心控制
│ └── enums // 通用枚举
│ └── exception // 通用异常
│ └── filter // 过滤器处理
│ └── utils // 通用类处理
├── framework // 框架核心
│ └── aspectj // 注解实现
│ └── config // 系统配置
│ └── datasource // 数据权限
│ └── interceptor // 拦截器
│ └── manager // 异步处理
│ └── security // 权限控制
│ └── web // 前端控制
├── ruoyi-generator // 代码生成(可移除)
├── ruoyi-quartz // 定时任务(可移除)
├── ruoyi-system // 系统代码
├── ruoyi-admin // 后台服务
├── ruoyi-xxxxxx // 其他模块

【二】基础功能

【1】上传下载

(1)首先创建一张上传文件的表

drop table if exists sys_file_info;
create table sys_file_info (
  file_id           int(11)          not null auto_increment       comment '文件id',
  file_name         varchar(50)      default ''                    comment '文件名称',
  file_path         varchar(255)     default ''                    comment '文件路径',
  primary key (file_id)
) engine=innodb auto_increment=1 default charset=utf8 comment = '文件信息表';

(2)上传文件后端接口
获取配置信息里的文件存储路径,将文件存到对应路径,并存储文件信息到表

@PostMapping("/add")
@ResponseBody
public AjaxResult addSave(@RequestParam("file") MultipartFile file, SysFileInfo fileInfo) throws IOException
{
   
   
	// 上传文件路径
	String filePath = RuoYiConfig.getUploadPath();
	// 上传并返回新文件名称
	String fileName = FileUploadUtils.upload(filePath, file);
	fileInfo.setFilePath(fileName);
	return toAjax(sysFileInfoService.insertSysFileInfo(fileInfo));
}

(3)下载文件后端接口

/**
 * 本地资源通用下载
 */
@GetMapping("/common/download/resource")
public void resourceDownload(String resource, HttpServletRequest request, HttpServletResponse response)
		throws Exception
{
   
   
	// 本地资源路径
	String localPath = Global.getProfile();
	// 数据库资源地址
	String downloadPath = localPath + StringUtils.substringAfter(resource, Constants.RESO

你可能感兴趣的:(【ruoyi-vue】前后端分离项目分析)