AI+若依框架(低代码开发)

news2024/11/17 16:25:09

一、若依介绍

1.版本介绍

若依为满足多样化的开发需求,提供了多个版本

  • RuoYi-Vue(SpringBoot+Vue的单体项目)

  • RuoYi-Cloud(SpringCloud+Vue的微服务版本项目)

  • RuoYi-App(Uniapp+Vue移动版本)

    RuoYi-APP没有提供后端,可以适配RuoYi-Vue和RuoYi-Cloud

  • RuoYi-other(若依第三方版本)

2.技术选型

本次笔记选用RuoYi-Vue

技术版本
JDK1.8及以上
Mysql5.7及以上
Redis3.0及以上
Node12及以上

3.项目地址

  • 前端:https://gitee.com/zi-ning/RuoYi-Vue3
  • 后端:https://gitee.com/y_project/RuoYi-Vue

二、项目搭建

1.后端项目搭建

1.1 Git克隆项目

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

1.2 导入MySQL

  1. 创建数据库
  2. 找到后端项目中的sql文件夹,里面有两个sql脚本,执行【包含30张表】
  3. 将SpringBoot项目配置文件中的数据库配置改成自己的

1.3 启动Redis

1.4 启动后端项目

项目的启动类在ruoyi-admin模块中的RuoYiApplication中

1.5说明

后端项目自带的前端是Vue2版本,现在都是用Vue3,所以可以直接删掉了

2.前端搭建

2.1 Git克隆前端项目

https://gitee.com/zi-ning/RuoYi-Vue3

2.2 下载前端依赖

npm install

2.3 运行前端项目

npm run dev

三、入门案例

现在需要一个课程管理模块,这个模块的前端页面需要条件查询框、数据显示框、添加课程框、课程修改框。

1.准备表结构并导入数据库

#SQL示例
CREATE TABLE courses(
    id              INT AUTO_INCREMENT PRIMARY KEY,
    code            VARCHAR(50)    NOT NULL,
    discipline      VARCHAR(100)   NOT NULL,
    course_name     VARCHAR(255)   NOT NULL,
    price           DECIMAL(10, 2) NOT NULL,
    target_audience VARCHAR(255),
    description     TEXT,
    created_at      TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at      TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

2.配置代码生成信息【重要】

这一步是通过手动配置,从而生成对应的代码
  1. 启动前后端项目,进入前端页面

  2. 选择系统工具——代码生成——导入

    image-20240703143917551

  3. 选择刚才创建的表,点击确定【这样就把表单交由代码生成器管理了】

    image-20240703144032676

    image-20240703144047729

  4. 点击对应表单后面的编辑按钮【可以查看基本信息、字段信息、生成信息等】

    image-20240703144140807

    image-20240703144421684

  5. 点击基本信息:这里修改实体类名称、作者名称

    这里设置的实体类名称就是后面他自动生成的实体类名
    

    image-20240703144732399

  6. 点击字段信息:这里需要修改字段描述、java类型、java属性、增删改勾选框、查询框、查询方式、显示类型

    1.字段描述:就用于将来展示的列名
    2.java类型:一般不用修改,检查一遍即可
    3.java属性:就是用来生成后面的实体类,注意驼峰命名
    4.增删改勾选框:一般是结合页面原型,如果页面中需要增删改某个字段,就勾上
    5.查询框:就是将来的条件查询,勾了就会在上面显示一个选择框
    6.查询方式:如果是等值就用=,如果是模糊就用like
    7.必填框:如果是必须输入就勾上
    8.显示类型:默认是文本框由用户输入,后面可以改成下拉框等
    
  7. 点击生成信息:修改相关信息

    1.包路径
    2.生成模块名
    3.生成业务名
    4.生成功能名
    5.生成方式
    6.上级菜单:生成的页面在哪个模块下,默认在系统工具下
    

    image-20240703150129942

  8. 点击提交

3.下载代码并导入项目

上一步配置完成之后,会生成三部分信息:前后端代码以及动态菜单【前端根据动态菜单动态显示页面】,导入项目就可以了
  1. 点击右侧的下载按钮

    image-20240703150422081

  2. 导入下载下来的动态菜单SQL

    这一步不会新生成一个表,而是插入数据到sys_menu表中
    
  3. 导入前端的代码【包括api以及views页面】

  4. 导入java代码到admin模块中【三层架构代码和mybatis的映射文件】

4.重启项目

四、功能详解

1.权限控制管理

什么是权限控制:不同权限的用户登录相同的系统,可以访问的页面不同
若依提供的权限管理模块:用户管理、角色管理、菜单管理、部门管理、岗位管理

1.1 RBAC

RBAC是一种广泛使用的访问控制模型,通过角色来管理用户菜单权限

image-20240703153321716

实现上述的关系,需要使用五张表:用户表、角色表、菜单表、用户角色表、角色菜单表

同时若依提供了岗位、部门模块,实现了更加精细的权限管理

image-20240703153757466

表关系如下:

image-20240703153839336

1.2 菜单分类

  • 目录:一个模块的大类,点击后可以展开,不用于页面跳转
  • 菜单:点击后可以进入对应的页面
  • 按钮:点击对应的按钮之后,会有对应的操作

2.数据字典

为什么要有数据字典?
前端页面中的一些表单选项可能在不同表单中都会出现,而单独编写后,后期如果要修改会很麻烦,因此使用数据字典统一管理这些字段

若依内置的数据字典包括:性别、状态等
功能包括:字典类型管理、字典数据管理

2.1 表关系说明

image-20240703160713611

说明:
字典类型用于存储一类字典的统称,例如我有一个下拉框供用户选择城市,那么这类就可以命名为城市,然后字典数据表中存储具体的城市名,由外键指定属于哪一类字典

2.2 使用案例

将入门案例中学科管理字段改为数据字典维护

  1. 添加字典类型

    image-20240703161457271

  2. 点击字典类型添加数据

    image-20240703161549616

    image-20240703161604641

    image-20240703161741657
  3. 修改对应的代码生成信息

    image-20240703161916731

    image-20240703162011295

  4. 下载代码,导入前端【如果后端的基本字段没有动那么就直接导入前端代码就可以】

3.参数设置

对系统中的参数进行动态维护,而不需要修改代码。例如直接管理是否开启验证码

image-20240703163040771

阅读备注中的信息,根据备注修改参数键值即可

image-20240703163133593

4.通知公告

若依提供了通知公告的发布,但是由于查看的实现方法很多,因此他没有实现,我们后续可以自己通过二次开发的方式实现发送邮件、以及弹窗的方式显示通知

5.日志管理

若依提供了日志管理功能,包括登录日志和操作日志,这些日志被记录到数据库

登录日志:包含当前登录用户、IP地址、登录状态、访问时间等

操作日志:包括操作类型、操作人员等,同时还可以清空日志

6.系统监控

若依提供了用户监控、缓存监控、数据监控、服务监控等

7.定时任务

我们自己之前设置定时任务的时候都是硬编码的格式,直接写死到代码中,如果需要修改定时任务的时间得去修改代码。

而若依提供了更好的方式,我们只需要在项目中设置好执行的任务,然后可以在前端项目中动态修改项目执行时间

  1. 后端创建一个类,加入容器,创建一个方法,用来执行任务

    image-20240703185154566

  2. 在前端项目中新增定时任务,设置需要定时执行的任务和时间表达式

    image-20240703185417014

  3. 前端开启任务

    image-20240703185430855

8.构建表单

通过表单构建工具,开发者只需要简单的图形化拖拽操作,就能构建复杂的表单

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

image-20240703190049093

  1. 制作表单

    image-20240703192249893

  2. 导出【可以选择页面或者弹窗】

    image-20240703192314306

    image-20240703192323641

  3. 将导出的文件复制到前端工程中

  4. 在菜单管理中创建路由地址,根据动态路由展示页面

    image-20240703192449576

9.代码生成

入门案例中已经使用了基本的代码生成器,进行单表操作。若依还提供了树表、主子表(一对多)操作

  • 树表:数据存在层级关系【例如:省/市/县】
  • 主子表:数据存在一对多的关系

案例:树表关系的使用

image-20240703193011322

10.系统接口

若依集成了Swagger提供了在线接口文档,可以进行测试

五、项目结构

https://www.bilibili.com/video/BV1pf421B71v?p=12&spm_id_from=pageDriver&vd_source=b246a40ef435cdf32c518bf3f296775d

1.前端部分

2.后端部分

3.表结构

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

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

相关文章

14-14 商业领域的人工智能革命

在商业技术领域,对话式人工智能已获得广泛认可和使用,产生了重大而直接的影响。GPT-2 和 GPT-3 等大型语言模型一直是该领域的基础,但它们的高级继任者将对话界面推向了新的高度。这些较新的模型不仅仅是处理输入;它们旨在完美地集…

OpenLayers使用

初学ol,实现了高德地图不同图层的切换、交互性地图飞行以及加载本地JSON数据。 说一下不同图层切换的想法: 1.对于标准地图和卫星地图:二者最初便挂载到map上,两个图层是叠加显示的;当点击按钮时,其实是使…

帮公司搭了个Nuxt3项目框架

theme: smartblue 最近公司立项了一个新项目,因为是to C 的,所以对SEO是有较高需求的,由于公司前端技术栈统一用的VUE,顺理成章的就选择了nuxt这个全栈框架。项目立项之后我就被安排了负责前端项目框架的搭建,从搭建过…

探寻IT的道路,从现在开始!

IT专业入门,高考假期预习指南 七月来临,各省高考分数已揭榜完成。而高考的完结并不意味着学习的结束,而是新旅程的开始。对于有志于踏入IT领域的高考少年们,这个假期是开启探索IT世界的绝佳时机。作为该领域的前行者和经验前辈&a…

Java [ 基础 ] 数组、ArrayList和LinkedList✨

目录 ✨探索Java基础 数组、ArrayList和LinkedList✨ 一、总体介绍 二、分别介绍 1. 数组(Array) 2. ArrayList 3. LinkedList 三、区别总结 四、常见面试题 如何选择使用数组、ArrayList和LinkedList? 如何实现线程安全的ArrayL…

stm32cubeide的undefined reference难解之谜

stm32cubeide 的 undefined reference 难解之谜 今天使用意法半导体公司的STM32CubeIDE 1.15.0编码器 遇到了一个熟悉,却令我绞尽脑汁的问题 这个问题大家应该都挺常见的 有以下几种要注意的地方 1、路径是否包含 2、函数是否在C文件定义 3、函数是否在头文件中定…

美国拟立法评估:极端网络攻击下关基设施能否切换手动操作

文章目录 前言一、评估关基设施快速切换手动操作的可行性1、评估需包括如下内容:2、政策保障关键基础设施运行二、保障关基设施安全迫不容缓前言 随着来自俄罗斯、伊朗和朝鲜等敌对国家以及国家关联团体的威胁不断增加,网络攻击对电网、水务系统和管道等关键基础设施的潜在破…

Python绘制动态树形:实现分形树动画

文章目录 引言准备工作前置条件 代码实现与解析导入必要的库初始化Turtle绘制分形树函数动态绘制函数主函数 完整代码 引言 分形树是一种通过递归生成的美丽图案,在数学和计算机图形学中有着重要的地位。在这篇博客中,我们将使用Python创建一个动态的分…

【C语言】union 关键字

在C语言中,union关键字用于定义联合体。联合体是一种特殊的数据结构,它允许不同的数据类型共享同一段内存。所有联合体成员共享同一个内存位置,因此联合体的大小取决于其最大成员的大小。 定义和使用联合体 基本定义 定义一个联合体类型时…

【NOI-题解】1372. 活动选择1456. 淘淘捡西瓜1485. 接水问题

文章目录 一、前言二、问题问题:1372. 活动选择问题:1456. 淘淘捡西瓜问题:1485. 接水问题 三、感谢 一、前言 本章节主要对贪心问题进行讲解,包括《1372. 活动选择》《1456. 淘淘捡西瓜》《1485. 接水问题》题目。 二、问题 问…

Pandas函数详解:案例解析(第25天)

系列文章目录 Pandas函数详解排序函数聚合函数缺失值处理日期函数 文章目录 系列文章目录前言1 索引和列名操作1.1 查看索引和列名1.2 修改索引和列名 2 常用计算函数2.1 排序函数2.2 聚合函数2.3 练习 3 缺失值处理3.1 缺失值概念3.2 加载包含缺失值数据3.3 查看缺失值3.4 缺失…

无人机集群协同搜索研究综述

源自:指挥控制与仿真 作者:刘圣洋, 宋婷, 冯浩龙, 孙玥, 韩飞 注:若出现无法显示完全的情况,可 V 搜索“人工智能技术与咨询”查看完整文章 摘要 无人机集群协同区域搜索能够有效地获取任务区域地面信息,降低环境不确定度。基…

【操作系统】操作系统运行环境——处理器的运行模式

处理器的运行模式 导读一、内核程序和应用程序二、特权指令与非特权指令三、用户态与核心态四、内核4.1 时钟管理4.2 中断机制4.3 原语4.4 系统控制的数据结构及处理 结语 导读 大家好,很高兴又和大家见面啦!!! 在上一篇内容中我…

高校教师教学质量评估系统-计算机毕业设计源码03344

摘要 在高等教育中,教学质量是培养优秀人才的关键。为了提高教学质量,高校需要建立一套科学、有效的教师教学质量评估系统。本研究采用 SSM技术框架,旨在开发一款高校教师教学质量评估系统。 SSM框架作为一种成熟的Java开发框架,具…

echarts--Tree的label上添加图片

使用echarts的rich富文本,配合lable的formatter去实现 主要代码:label里 rich: {img1: {backgroundColor: {image: Cloudy,},height: 40}},formatter: function (param) {var res "";res {img1|} param.name;return res;}, 如果想要哪一节…

基于贝叶斯优化的卷积神经网络-循环神经网络混合模型的的模拟股票时间序列预测(MATLAB R2021B)

将机器学习和深度学习方法运用到股市分析中, 不仅具有一定的理论价值, 也具有一定的实践价值。从理论价值上讲, 中国的量化投资技术(投资观念、方法与决策等)还不够成熟, 尚处在起步阶段, 能够将量化投资技术运用到投资决策中的公司寥寥无几。目前, 国内…

程序员学CFA——经济学(五)

经济学(五) 货币政策与财政政策基本术语货币政策货币货币的功能货币的定义货币的创造过程货币的供给和需求费雪效应 中央银行中央银行的职能中央银行的目标与通货膨胀的成本中央银行的有效性 货币政策工具货币传导机制货币政策的目标与形式货币政策的目标…

AIGC时代算法工程师的面试秘籍(2024.6.10-6.23第十六式) |【三年面试五年模拟】

写在前面 【三年面试五年模拟】旨在整理&挖掘AI算法工程师在实习/校招/社招时所需的干货知识点与面试方法,力求让读者在获得心仪offer的同时,增强技术基本面。也欢迎大家提出宝贵的优化建议,一起交流学习💪 欢迎大家关注Rocky…

还以网站建设为主营?赶紧转!除非你的网站做比他们还漂亮

案例一:某上市公司2019年找A公司做了一个官网,网站做了三年多,到现在没有上线,该公司业务没受任何影响,一直蒸蒸高日上。案例二:我公司也有自己官网,这么多年页面啥流量,一样不影响我…

001:开源交易系统开发实战开篇

本专栏采用融入【主力思维】的方法学,包含数据抓取、特征模型开发、历史验证回归测试、每日动态风险评估管理等技术,较大的增强股票投资胜率,让IT开发者拥有一套实用的属于自己思路的专用交易软件。 先简要介绍下系统运行的成果和项目架构&a…