若依(前后端分离版)
企业老师讲解
什么是若依?
开源项目,学习开源项目的目标:
1.用,减少自己工作量
2.学习优秀的开源项目底层的编程思想,设计思路,提高自己的编程能力
官网:https://www.ruoyi.vip/
基础:Spring Boot + Vue
环境要求:
- JDK 1.8+
- MySQL
- Redis
- Maven
- Vue
使用若依
使用开源项目的步骤:
- 下载并运行
- 看懂业务流程
- 进行二次开发
- 下载:16:45
- 配置数据库MySQL,Redis
本地执行SQL脚本
在工程中配置数据库(20:20)
Redis配置(21:00)
启动前端:
- 安装依赖npm install
- 启动 npm run dev
登录
生成验证码
基本思路
后端生成一个表达式,1+1=2
1+1=?@2
1+1=?转成图片传到前端进行展示
2存入Redis
登录的具体流程
后端:
1.校验验证码
2.校验用户名和密码
3.生成Token
使用异步任务管理器,结合线程池,实现了异步的操作日志记录,和业务逻辑实现异步解耦合。
若依结构
前端结构
需要关注api和view文件夹
api负责对后台端进行访问
view负责页面显示内容
创建表
用sql语句在Datatrip执行
模块建立
1 2 3 4
| <dependency> <groupId>com.ruoyi</groupId> <artifactId>ruoyi-common</artifactId> </dependency>
|
1 2 3 4
| <dependency> <groupId>org.projectlombol</groupId> <artifactId>lombok</artifactId> </dependency>
|
- 在ruoyi-admin中添加自己的模块(在pom.xml中)
1 2 3 4 5
| <dependency> <groupId>com.ruoyi</groupId> <artifactId>ruoyi-strawberry</artifactId> <version>3.8.7</version> </dependency>
|
- 在自己的模块中删除根包,test包也删除
- 启动服务端和客户端
- 在java下创建包,包名com.ruoyi.strawberry
在图形化界面写代码(7:33)
更改服务器端
- 生成代码后,将这三个文件夹放入com.ruoyi.strawberry
- 引入三个lombok的方法,让其自己生成getset方法(前提要确保lombok依赖项没有问题)
1 2 3
| @Data @AllArgsConstructor @NoArgsConstructor
|
更改为以下图示:
解决方法:
在ruiyi-admin下的controller建立根包,位置如下:
回退到main文件夹下,打开resource,拷贝下面的mapper:
直接将resources整个拷进以下位置,并标记为资源文件:
更改客户端
效果如下:
将XXXMapper.xml文件中的delete改为update
黑马程序员(AI+若依)
02入门案例
- 准备SQL并导入数据库
- 配置代码生成信息
- 下载代码并导入项目
03功能详解
系统管理
权限控制
- RBAC基于角色的访问控制,通过角色来分配和管理用户的菜单权限。
步骤:
- 创建菜单
- 创建角色,并分配权限
- 创建用户,并关联角色
数据字典
步骤:
- 添加字典类型和数据
- 修改代码生成信息
- 下载代码导入前端
其他功能
系统监控
若依提供了一些强大的监控工具,能够帮助开发者和运维快速了解应用程序的性能状态
若依为定时任务功能提供了方便友好的web界面,实现动态管理任务
案例:定时任务
- 创建任务类
在以下目录下:
MyTask类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| package com.ruoyi.quartz.task;
import org.springframework.stereotype.Component;
import java.util.Date;
@Component public class MyTask { public void showTime() { System.out.println("定时任务开始执行"+new Date()); } }
|
- 添加任务规则
- 启动任务
实现效果如下:
系统工具
- 制作表单并导出
- 复制前端工程
- 创建动态菜单
去若依化
新增自定义主题风格
图标文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| <g id="配置面板" width="48" height="40" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> <g id="setting-copy-2" width="48" height="40" transform="translate(-1190.000000, -136.000000)"> <g id="Group-8" width="48" height="40" transform="translate(1167.000000, 0.000000)"> <g id="Group-5-Copy-5" filter="url(#filter-1)" transform="translate(25.000000, 137.000000)"> <mask id="mask-3" fill="#409eff"> <use xlink:href="#path-2"></use> </mask> <g id="Rectangle-18"> <use fill="black" fill-opacity="1" filter="url(#filter-4)" xlink:href="#path-2"></use> <use fill="#F0F2F5" fill-rule="evenodd" xlink:href="#path-2"></use> </g> <rect id="Rectangle-11" fill="#409eff" mask="url(#mask-3)" x="0" y="0" width="48" height="10"></rect> <rect id="Rectangle-18" fill="#FFFFFF" mask="url(#mask-3)" x="0" y="0" width="16" height="40"></rect> </g> </g> </g> </g>
|
Settings目录下
- 新增一个主题风格选项,主要注意的是handleTheme里面的传参(后面会用到)和img的src图片,例如实例中的blue.svg
1 2 3 4 5 6 7 8 9 10
| <div class="setting-drawer-block-checbox-item" @click="handleTheme('theme-blue')"> <img src="@/assets/images/blue.svg" alt="dark"> <div v-if="sideTheme === 'theme-blue'" class="setting-drawer-block-checbox-selectIcon" style="display: block;"> <i aria-label="图标: check" class="anticon anticon-check"> <svg viewBox="64 64 896 896" data-icon="check" width="1em" height="1em" :fill="theme" aria-hidden="true" focusable="false" class=""> <path d="M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 0 0-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z"/> </svg> </i> </div> </div>
|
variables.scss
- 这里的变量名可以自定义,但还是要注意和后面的一一对应
1 2 3 4 5 6 7
| $base-menu-blue-background:#0043B2; $blue-sub-menu-background:#003793; $blue-sub-menu-hover:#023281;
menuBlueBackground:$base-menu-blue-background;
|
1 2 3 4 5 6 7 8 9 10
| & .theme-blue .nest-menu .el-submenu>.el-submenu__title, & .theme-blue .el-submenu .el-menu-item { background-color: $blue-sub-menu-background !important;
&:hover { background-color: $blue-sub-menu-hover !important; } }
|
Logo.vue
ruoyi-ui/src/layout/components/Sidebar/Logo.vue
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| <template> <div class="sidebar-logo-container" :class="{'collapse':collapse}" :style="{ backgroundColor: sideTheme === 'theme-dark' ? variables.menuBackground : sideTheme === 'theme-blue' ? variables.menuBlueBackground : variables.menuLightBackground }"> <transition name="sidebarLogoFade"> <router-link v-if="collapse" key="collapse" class="sidebar-logo-link" to="/"> <img v-if="logo" :src="logo" class="sidebar-logo" /> <h1 v-else class="sidebar-title" :style="{color:(sideTheme === 'theme-dark' || sideTheme === 'theme-blue') ? variables.logoTitleColor : variables.logoLightTitleColor }">{{ title }} </h1> </router-link> <router-link v-else key="expand" class="sidebar-logo-link" to="/"> <img v-if="logo" :src="logo" class="sidebar-logo" /> <h1 class="sidebar-title" :style="{ color: (sideTheme === 'theme-dark' || sideTheme === 'theme-blue') ? variables.logoTitleColor : variables.logoLightTitleColor }">{{ title }} </h1> </router-link> </transition> </div> </template>
|
Siderbar目录下的index.vue
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| //主要修改el-menu的background-color和text-color两个属性 <el-menu :default-active="activeMenu" :collapse="isCollapse" :background-color="settings.sideTheme === 'theme-dark' ? variables.menuBackground : settings.sideTheme === 'theme-blue' ? variables.menuBlueBackground : variables.menuLightBackground" :text-color="settings.sideTheme === 'theme-dark' ? variables.menuColor : settings.sideTheme === 'theme-blue' ? variables.menuColor : variables.menuLightColor" :unique-opened="true" :active-text-color="settings.theme" :collapse-transition="false" mode="vertical" > <sidebar-item v-for="(route, index) in sidebarRouters" :key="route.path + index" :item="route" :base-path="route.path" /> </el-menu>
|
界面样式更改
参考链接:若依ruoyi——手把手教你制作自己的管理系统【二、修改样式】_若依首页 样式修改-CSDN博客
网页logo修改
参考链接:若依(ruoyi)管理系统标题和logo修改_若依管理系统上面的标题怎么改-CSDN博客
修改文件名
参考链接:基础篇-17.二次开发-新建业务模块_哔哩哔哩_bilibili
修改器链接:RuoYi-MT 发行版 - Gitee.com
去除源码&文档
参考视频:基础篇-21.二次开发-页面调整_哔哩哔哩_bilibili