记一次若依二开的简单流程

news2024/9/29 19:19:58

记一次若依二开的简单流程

前言: 搞Java后端的应该都知道若依框架,是一个十分强大且功能齐全的开源的快速开发平台,且毫无保留给个人及企业免费使用。很多中小型公司会直接在该系统上进行二次开发使用。本文记录一次使用若依二开零编码的简单实现(简单增删修查)

注意,本文不涉及一句代码,只做流程记录,毫无技术含量

1. 下载运行若依

从gitee上下载若依程序,我下载的是前后端分离单体版本,RuoYi v3.8.6,springboot+vue2,链接如下

https://gitee.com/y_project/RuoYi-Vue

首先下载解压,在idea中导入应用。

在这里插入图片描述

然后在找到sql文件夹,找到ry_xxxx.sql脚本,先建一个数据库,然后执行该脚本创建表及导入基本数据。注意数据库编码选择UTF-8,否则可能报错执行失败。
在这里插入图片描述

修改ruoyi-admin模块中的application-druid.yml中数据库连接参数,改为自己的数据库地址及库名,账号及密码,另外application.yml中检查redis配置是否和自己的环境一样,
在这里插入图片描述

然后启动应用
在这里插入图片描述

2. 运行若依前端vue项目

若依前端vue项目跟springboot项目在一个包中,找到ruoyi-ui文件夹,导入到编辑器即可,我用的是idea,引入项目后,ruoyi-ui路径下的Terminal执行 npm install --registry=https://registry.npmmirror.com 下载相关依赖,我已经下载过了,以下截图仅供参考

npm install --registry=https://registry.npmmirror.com
在这里插入图片描述

然后 npm run dev 运行即可,但是高版本node.js可能会报错
在这里插入图片描述

可在package.json文件中,添加 set NODE_OPTIONS=--openssl-legacy-provider 解决
在这里插入图片描述

然后执行 npm run dev,运行vue项目
在这里插入图片描述

3. 删除用不到的模块

用默认的账号密码登录进入系统,可以看到有很多模块,用户管理,角色管理,部门管理等等。根据项目需求可以适当减少相应的模块。例如我不需要定时任务模块,选择将其删除。

像用户管理,角色管理,部门管理等,耦合度比较高,涉及到较大删改,这里不描述,只做最基本实现,所以选择基本0耦合的定时任务模块
在这里插入图片描述

1. 在系统管理中找到角色管理,点击修改普通角色,然后在菜单权限中将定时任务权限去掉
在这里插入图片描述
在这里插入图片描述

2. 在菜单管理中找到定时任务菜单项,将定时任务的子菜单(按钮)一一删除,然后将定时任务菜单删除
在这里插入图片描述

刷新页面,发现定时任务菜单消失。

3. 在vue的src中,找到定时任务相关代码,删除即可,例如

/src/views/monitor/job 下两个文件,index和log
在这里插入图片描述

/src/api/monitor/job.js 定时任务的封装api

/src/api/monitor/jobLog.js 定时任务日志api

在这里插入图片描述

最后将router.js中有关定时任务的配置删除
在这里插入图片描述

4. 将springboot中定时任务模块移除
在这里插入图片描述

在ruoyi-admin模块中的maven依赖(pom.xml)中,将定时任务依赖删除
在这里插入图片描述

在父类工程的maven依赖中将定时任务有关配置删除,两个位置

其一:
在这里插入图片描述

其二:
在这里插入图片描述

5. 最后到数据库中,将有关定时任务的表删除
在这里插入图片描述

至此,定时任务模块被彻底删除。

4. 添加新模块

添加简单的新模块,若依提供了自动代码生成,只需要将其生成的代码文件复制到适合位置即可,例如我创建一个学生管理模块(仅仅为例子,不考究字段是否合理)

1. 创建数据库表

先将需要添加的模块数据库表设计出来,完成数据库表的创建

CREATE TABLE IF NOT EXISTS `sys_student` (
  `stu_id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '学生id',
  `stu_account` VARCHAR(30) NOT NULL COMMENT '学生账号',
  `stu_name` VARCHAR(30) NOT NULL COMMENT '学生名字',
  `stu_class` CHAR(1) DEFAULT '1' COMMENT '学生年级',
  `email` VARCHAR(50) DEFAULT '' COMMENT '学生邮箱',
  `phonenumber` VARCHAR(11) DEFAULT '' COMMENT '手机号码',
  `sex` CHAR(1) DEFAULT '0' COMMENT '学生性别(0男 1女 2未知)',
  `avatar` VARCHAR(100) DEFAULT '' COMMENT '头像地址',
  `password` VARCHAR(100) DEFAULT '' COMMENT '密码',
  `status` CHAR(1) DEFAULT '0' COMMENT '帐号状态(0正常 1停用)',
  `del_flag` CHAR(1) DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)',
  `login_ip` VARCHAR(128) DEFAULT '' COMMENT '最后登录IP',
  `login_date` DATETIME DEFAULT NULL COMMENT '最后登录时间',
  `create_by` VARCHAR(64) DEFAULT '' COMMENT '创建者',
  `create_time` DATETIME DEFAULT NULL COMMENT '创建时间',
  `update_by` VARCHAR(64) DEFAULT '' COMMENT '更新者',
  `update_time` DATETIME DEFAULT NULL COMMENT '更新时间',
  `remark` VARCHAR(500) DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (`stu_id`)
) ENGINE=INNODB AUTO_INCREMENT=101 DEFAULT CHARSET=utf8 COMMENT='学生信息表'

2. 使用若依代码生成创建代码文件

在若依管理台,进入系统工具,点击代码生成,点击导入按钮,勾选刚刚创建的sys_student表,点击确定
在这里插入图片描述

点击编辑,修改sys_student的生成配置
在这里插入图片描述

这里补充一下,若依提供了字典管理,可以通过设置字典,提供下拉框标志与值的对应关系。先到系统管理的字典管理中新增字典,例如我想设置年级的字典,1 → 一年级,2→二年级,依次类推。所以在字典管理中新建字典sys_student_class
在这里插入图片描述

然后找到新建的字典,点击字典类型
在这里插入图片描述

进入字典数据页面,点击新增,创建标志与值的对应关系
在这里插入图片描述

完成创建后回到刚刚的代码生成 - 编辑页面

在学生年级这一项上的显示类型选择下拉框,在该项右边的字典类型中选择刚刚创建的学生年级类型(如果没看到新建的项,先刷新一下页面),其他项根据需求自己设计,点击提交
在这里插入图片描述

然后点击生成代码,浏览器会将代码下载到本地
在这里插入图片描述

3. 将生成代码粘贴到若依代码中

将上面下载的压缩包解压打开,会看到两个文件夹,分别为java代码以及vue代码

建议将java代码按照若依现有规范中,拷贝到对应文件夹,例如

将SysStudentController.java文件拷贝到 /ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/ 中

将SysStudent.java文件拷贝到 /ruoyi-system/src/main/java/com/ruoyi/system/domain/

将SysStudentMapper.java文件拷贝到 /ruoyi-system/src/main/java/com/ruoyi/system/mapper/

将ISysStudentService.java文件拷贝到 /ruoyi-system/src/main/java/com/ruoyi/system/service/

将SysStudentServiceImpl.java文件拷贝到 /ruoyi-system/src/main/java/com/ruoyi/system/service/impl/中

另外

将resource下的SysStudentMapper.xml文件拷贝到 /ruoyi-system/src/main/resources/mapper/system/中

重启服务,没有报错

然后将vue中的文件也拷贝到vue文件夹中,例如

将student.js拷贝到 /src/api/system 中

将/vue/views/system/student/index.vue 拷贝到 /src/views/system/student/ 中

4. 在若依系统中添加新菜单

点击系统管理,菜单管理,点击新增,上级菜单选择系统管理,菜单类型选择菜单,如下
在这里插入图片描述

组件路径要跟student/index.vue路径保持一致,权限字符要跟controller/StudentController.java中接口上标注权限保持一致,然后点击确定。

在菜单管理中找到新建的学生管理项,在右侧点击新增
在这里插入图片描述

根据controller中的权限,仿照其他管理菜单的子项,创建按钮级菜单,例如
在这里插入图片描述

接着刷新页面,会看到系统管理中有新建的学生管理菜单

5. 测试

测试学生管理,在新建的学生管理模块中,点击新建,按要求输入对应项,确定,新建成功
在这里插入图片描述

修改,删除,搜索,导出功能均正常无误

测试权限分配,另起一个浏览器,使用若依提供的 ry 测试账号登录若依管理平台,刷新页面发现没有学生管理菜单模块,这是由于新建的学生管理菜单权限没有分配给ry用户

用admin用户点击角色管理,点击修改普通角色,在菜单权限配置中,勾选刚刚创建的学生管理菜单,完成菜单分配。
在这里插入图片描述

接着回到ry登录的页面,刷新页面,出现学生管理页面
在这里插入图片描述

测试新增,修改,删除,导出搜索均无误。

至此,添加新模块流程完毕

总结

我也是第一次接触若依,就以上描述的体验下来,真的感叹该框架的强大,能无代码实现普通模块的增删修查,能大大节省开发时间,降低开发成本。

但是,虽然看似降低了程序员使用门槛,事实上应用在正式项目上时,修改的地方还是很多的,如果对框架底层结构不理解的话,使用上来说依旧很吃力。框架只是个辅助工具,应用上还是得靠开发者扎实的基本知识和求真创新的自我价值实现精神。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1283666.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JFrog----软件的SBOM分析简介

文章目录 什么是SBOM?SBOM分析的重要性SBOM分析的过程结语 什么是SBOM? SBOM,全称是“软件物料清单”,它像是一个详尽的清单,列出了构成特定软件的所有组件,包括库、模块、包等。这就像是制造业中的物料清…

iOS ------ UICollectionView

一,UICollectionView的简介 UICollectionView是iOS6之后引入的一个新的UI控件,它和UITableView有着诸多的相似之处,其中许多代理方法都十分类似。简单来说,UICollectionView是比UITbleView更加强大的一个UI控件,有如下…

C语言中如何取一串比特中的特定位的比特

#include <iostream> #include <bitset> using namespace std; /* 向右的移位操作相当于丢掉最后的几位&#xff0c;然后剩下的位数进行“与”运算即可。 */ int main() {int a 0x2FB7; //0x2FB70010 1111 1011 0111char end3 (a >> 4) & 0x07; //取a…

Javaweb之Vue路由的详细解析

5 Vue路由 5.1 路由介绍 将资代码/vue-project(路由)/vue-project/src/views/tlias/DeptView.vue拷贝到我们当前EmpView.vue同级&#xff0c;其结构如下&#xff1a; 此时我们希望基于4.4案例中的功能&#xff0c;实现点击侧边栏的部门管理&#xff0c;显示部门管理的信息&am…

“影响力”经济:抖音为什么更值得商家、达人长期深耕?

文&#xff5c;新熔财经 作者&#xff5c;叶一城 数亿的活跃用户&#xff0c;简单而自然的切入方式&#xff0c;快速、高频的执行效率&#xff0c;让抖音对电商界的冲击无可阻挡。 这背后&#xff0c;流量玩法登峰造极&#xff0c;是很多人的直接观感。 但实际上&#xff0…

FL Studio 21.2.1.3859中文破解版及FL Studio怎么录制

FL Studio 21.2.1.3859中文破解版是一个数字音频工作站 (DAW)。该软件借助各种编辑工具、插件和效果&#xff0c;让您可以录制、混音和掌握高度复杂的音乐作品。FL Studio 21还允许您注册和编辑 MIDI 文件&#xff0c;您可以在众多可用乐器之一上演奏这些文件。FL Studio 拥有 …

【VRTK】【VR开发】【Unity】10-连续移动

课程配套学习资源下载 https://download.csdn.net/download/weixin_41697242/88485426?spm=1001.2014.3001.5503 【概述】 连续移动与瞬移有如下不同: 连续移动不容易打断沉浸对于新手或者不适应者来说更容易晕动 我对玩家的建议:连续移动前后左右可以用摇杆,转向用自己…

java常用知识点记忆

类的继承与多态 类的继承不支持多重继承非private 方法才可以被覆盖覆盖的方法要求&#xff0c;子类中的方法的名字&#xff0c;参数列表&#xff0c;返回类型与父类相同方法的重载是在一个类中定义方法名字相同&#xff0c;但是参数列表不同的方法要是在子类中定义了与父类名字…

Huawei FusionSphere FusionCompte FusionManager

什么是FusionSphere FusionSphere 解决方案不独立发布软件&#xff0c;由各配套部件发布&#xff0c;请参 《FusionSphere_V100R005C10U1_版本配套表_01》。 目前我们主要讨论FusionManager和FusionCompute两个组件。 什么是FusionCompte FusionCompute是华为提供的虚拟化软…

深度学习训练 tricks(持续更新)

妈妈&#xff0c;我的炼丹炉子炸啦&#xff08;不是&#xff09; 妈妈&#xff0c;我的深度学习模型训练好了&#xff01; 本文持续更新&#xff0c;如果有什么你知道的深度学习模型训练技巧&#xff0c;可以在评论区提出&#xff0c;我会加进来的。 文章目录 weight decaywe…

3DMM模型

目录 BFMBFM_200901_MorphableModel.matexp_pca.bintopology_info.npyexp_info.npy BFM BFM_2009 01_MorphableModel.mat from scipy.io import loadmat original_BFM loadmat("01_MorphableModel.mat") # dict_keys: [__header__, __version__, __globals__, # …

C++ 文件操作之配置文件读取

C 文件操作之配置文件读取 在项目应用时常常会涉及一些调参工作&#xff0c;如果项目封装成了.exe或者.dll&#xff0c;那么频繁调参多次编译是一件十分低效的事情&#xff0c;如果代码算法或者逻辑是一定的&#xff0c;那么参数完全可以通过读入配置文件来获取之前在用C - op…

SpringBoot药品进销存管理系统(诊所管理系统)(乡村药店管理系统)

SSM毕设分享 SpringBoot药品进销存管理系统(诊所管理系统)(乡村药店管理系统) 1 项目简介 Hi&#xff0c;各位同学好&#xff0c;这里是郑师兄&#xff01; 今天向大家分享一个毕业设计项目作品【SpringBoot药品进销存管理系统(诊所管理系统)(乡村药店管理系统)】 师兄根据实…

ROS-ROS通信机制-话题通信

文章目录 一、话题通信基础知识二、话题通信基本操作2-1 C2-2 Python2-3 C与python节点通信 三、自定义msg3-1 自定义msg3-2 C实现自定义msg调用3-3 Python实现自定义msg调用 一、话题通信基础知识 话题通信实现模型是比较复杂的&#xff0c;该模型如下图所示,该模型中涉及到三…

zxjy001-项目整体介绍

1、项目类型 全栈项目 前端&#xff1a;系统后台&#xff0c;系统前台后端&#xff1a;提供API接口 2、项目技术栈 前端 Vue,Element,Axios,NodeJs后端 Spring Boot,Spring Cloud,MybatisPlus,Spring Security,Redis,Maven,JWT,OAuth2其他技术 阿里云oss服务阿里云视频点播…

微服务实战系列之Cache(技巧篇)

前言 凡工具必带使用说明书&#xff0c;如不合理的使用&#xff0c;可能得到“意外收获”。这就好比每个人擅长的领域有所差异&#xff0c;如果放错了位置或用错了人&#xff0c;也一定会让 Leader 们陷入两难之地&#xff1a;“上无法肩负领导之重托&#xff0c;下难免失去伙伴…

设计模式之代理模式(1)

目录 概述定义应用场景主要角色类图 详述基本代码应用实例符合的设计原则 总结 概述 定义 代理模式是一种结构型设计模式&#xff0c;它允许通过一个代理对象来控制对原始对象的访问。代理对象可以在不改变原始对象的情况下&#xff0c;增加一些额外的功能&#xff0c;例如权限…

kubectl获取ConfigMap导出YAML时如何忽略某些字段

前言&#xff1a; 当我们在使用Kubernetes时&#xff0c;常常需要通过kubectl命令行工具来管理资源。有时我们也想将某个资源的配置导出为YAML文件&#xff0c;这样做有助于版本控制和资源的迁移。然而&#xff0c;默认情况下&#xff0c;使用kubectl get命令导出资源配置会包…

【IPv6】IPv6协议

一、IPv6数据报格式 这是与v4报头的对比 1.8bit的版本保留了&#xff0c;v4版本就是4&#xff0c;v6就是6。 2.v6去除了v4的首部长度字段&#xff0c;因为v6的首部长是固定的40字节。 3.服务类型&#xff08;Type of Service, ToS&#xff09;和通信类型&#xff08;Traffi…

【Linux下如何生成coredump文件】

一&#xff0c;什么是coredump 我们经常听到大家说到程序core掉了&#xff0c;需要定位解决&#xff0c;这里说的大部分是指对应程序由于各种异常或者bug导致在运行过程中异常退出或者中止&#xff0c;并且在满足一定条件下&#xff08;这里为什么说需要满足一定的条件呢&#…