diff --git a/README.md b/README.md
index c5a8b14f3a98eb076e4d037e7c216b84d597f4ec..b13b64d1b57e28c11a7273cc03a138db6ed13bcd 100644
--- a/README.md
+++ b/README.md
@@ -38,7 +38,6 @@ RuoYi-Geek不仅仅是一个简单的升级版本,更是对于RuoYi生态的
RuoYi-Geek-Electron旨在为RuoYi-Geek-SpringBoot3与RuoYi-Geek-Vue3搭建一个舒适的窗口应用环境,并用装饰器简化开发。目前正在完善中。。。。。。。
-
# 联系我们:
### 技术交流群 QQ:744785891
diff --git "a/RuoYi-Geek-App/1.\347\256\200\344\273\213.md" "b/RuoYi-Geek-App/1.\347\256\200\344\273\213.md"
new file mode 100644
index 0000000000000000000000000000000000000000..339e5c1976dd0e8b2539ebe87868c77398fcbce5
--- /dev/null
+++ "b/RuoYi-Geek-App/1.\347\256\200\344\273\213.md"
@@ -0,0 +1,16 @@
+## 简介
+
+若依极客生态App版本是 RuoYi-App 框架的基础上进行了二次开发,采用了 Uniapp 结合 Vue3 的技术栈。它同时支持 JavaScript 和 TypeScript 开发,并且兼容 CSS、SCSS 以及 Less 样式语言。为了优化性能,我们已经对代码进行了初步的分包处理。此外,我们集成了 uview-plus、uchart和相关的模板供大家参考和使用。
+
+# 功能演示
+
+
diff --git "a/RuoYi-Geek-App/2.\345\277\253\351\200\237\345\220\257\345\212\250.md" "b/RuoYi-Geek-App/2.\345\277\253\351\200\237\345\220\257\345\212\250.md"
new file mode 100644
index 0000000000000000000000000000000000000000..76b09bc3456224f1313f6f1dcb90be0191f7841e
--- /dev/null
+++ "b/RuoYi-Geek-App/2.\345\277\253\351\200\237\345\220\257\345\212\250.md"
@@ -0,0 +1,48 @@
+# 快速开始
+
+**注意:** node 版本需要 16+
+
+## 迁移到Hbuilder(不依赖Hbuilder的项目不需要迁移)
+
+1. src路径作为项目根路径
+2. 将index.html、package.json、vite.config.js、tsconfig.json、.gitignore粘贴到src目录下
+3. 在src目录下运行npm install
+4. 修改index.html中的./src/main.js为./main.js
+5. 在HBuilderX中运行时注意观察是否使用的是Vue3的编译器(若不是请自行查找方法解决,本人对HbuilderX使用不多)
+
+## 安装
+
+一下三种方式均可,感觉速度 pnpm > yarn > cnpm > npm
+
+**_Vue3/Vite 版要求 node 版本^14.18.0 || >=16.0.0_**
+
+```shell
+npm install
+cnpm install
+yarn
+pnpm install
+```
+
+# 启动
+
+1. 将项目下载到本地
+2. 初始化项目---进入项目根路径运行指令初始化项目
+ `npm install`
+3. 运行项目---进入项目根路径运行指令(在 package.json 能找到所有指令):
+ 以微信小程序为例:`npm run dev:mp-weixin`
+ 以 H5 为例 ` npm run dev:h5`
+4. 查看项目 以微信小程序为例:
+ 打开微信开发者工具,导入项目路径 dist\dev\mp-weixin
+ 以 H5 为例:打开浏览器,输入控制台输出的地址
+ 注:公众号属于 H5,以微信公众号为例,打开微信开发者工具,输入控制台输出的地址
+5. 打包项目---进入项目根路径运行指令(在 package.json 能找到所有指令):
+ 以微信小程序为例:`npm run build:mp-weixin`
+ 以 H5 为例: `npm run build:h5`
+
+### 代码压缩
+
+默认是启动代码压缩的,
+
+如果需要关闭代码压缩,可以将 vite.config.js 中的 build.minify 赋值为 false。
+
+如果需要打开代码压缩,可以将 vite.config.js 中的 build.minify 赋值为 true。
diff --git "a/RuoYi-Geek-App/3.\351\241\271\347\233\256\347\273\223\346\236\204.md" "b/RuoYi-Geek-App/3.\351\241\271\347\233\256\347\273\223\346\236\204.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ad3c0d1e35478b1102135f5919552c38d15fdaee
--- /dev/null
+++ "b/RuoYi-Geek-App/3.\351\241\271\347\233\256\347\273\223\346\236\204.md"
@@ -0,0 +1,133 @@
+├── dist/dev/mp-weixin // 生成的构建文件目录,通常用于微信小程序等平台
+│ ├── api
+│ │ ├── system // 存放系统相关的 Java 后端源代码
+│ │ │ └── dict // 存放 Web 相关的 Java 类文件
+│ │ ├── login.js // 登录相关的前端 API
+│ │ ├── oauth.js // OAuth 相关的前端 API
+│ └── common
+│ │ ├── assets.js // 存放项目的静态资源,如图片、字体等
+│ │ │── vendor.js // 第三方库或工具文件,通常是构建产物
+│ └── components
+│ │ ├── geek-xd
+│ │ │ ├── geek-color-picker // 颜色选择器组件
+│ │ │ ├── geek-commodity // 商品组件
+│ │ │ ├── geek-menu // 菜单组件
+│ │ │ ├── geek-order // 订单组件
+│ │ │ ├── geek-qrcode // 二维码组件
+│ │ │ ├── geek-statistic // 统计组件
+│ │ ├── qiun-data-charts
+│ │ │ ├── components // 数据图表相关组件
+│ │ │ ├── js_sdk // JavaScript SDK,可能是集成外部 API 的代码
+│ │ ├── u-city-select // 城市选择组件
+│ │ │ ├── area.js // 区域数据脚本
+│ │ │ ├── city.js // 城市数据脚本
+│ │ │ ├── province.js // 省份数据脚本
+│ │ │ ├── u-city-select.js // 城市选择功能实现脚本
+│ │ │ ├── u-city-select.json // 城市选择的配置文件
+│ │ │ ├── u-city-select.wxml // 微信小程序的 WXML 文件
+│ │ │ ├── u-city-select.wxss // 微信小程序的 WXSS 文件
+│ │ ├── uni-section // uni-app 中的通用选择器组件
+│ │ │ ├── uni-select.js // 选择器组件的脚本
+│ │ │ ├── uni-select.json // 选择器组件的配置
+│ │ │ ├── uni-select.wxml // uni-app 选择器组件的 WXML 文件
+│ │ │ ├── uni-select.wxss // uni-app 选择器组件的 WXSS 文件
+│ └── directive // 存放自定义指令
+│ │ ├── common // 常用指令
+│ │ ├── permission // 权限相关的自定义指令
+│ │ ├── index.js // 指令的入口脚本
+│ └── node-models // 存放节点相关模型或第三方模块
+│ └── pages // 存放各个页面文件
+│ └── pages_geek // 存放 Geek 相关页面文件
+│ └── pages_mine // 存放用户中心相关页面文件
+│ └── pages_qiun // 存放 Qiun 相关页面文件
+│ └── pages_template // 存放模板页面文件
+│ └── plugins // 插件目录,存放项目所依赖的插件
+│ └── static // 存放静态资源文件,如图片、字体等
+│ └── store // Vuex 或其他状态管理相关的文件
+│ └── uni_modules // 存放 uni-app 模块
+│ └── utils // 存放工具函数或模块
+│ └── app.js // 项目的主入口文件
+│ └── app.json // 项目的配置文件,包含页面路径、窗口设置等
+│ └── app.wxss // 项目的全局样式文件
+│ └── config.js // 配置文件,可能是用于开发环境与生产环境的不同设置
+│ └── project.config.json // 项目配置文件,uni-app 的专有配置
+│ └── project.private.config.json // 项目的私密配置文件,通常用于保存敏感信息
+├── doc // 项目的文档目录,包含项目说明、API 文档等
+├── node_modules // 存放项目依赖的第三方库文件
+├── src // 项目的源代码目录
+│ ├── api // 存放 API 请求相关代码
+│ │ ├── system // 系统相关的源代码
+│ │ │ └── dict // 系统字典相关的源代码
+│ │ ├── login.js // 登录相关的 API
+│ │ ├── oauth.js // OAuth 认证相关的 API
+│ └── components // 存放可复用的 UI 组件
+│ │ ├── geek-xd
+│ │ │ ├── components // Geek 相关组件
+│ │ │ ├── types // Geek 组件的类型定义
+│ │ ├── qiun-data-charts
+│ │ │ ├── components // 数据图表组件
+│ │ │ ├── js_sdk // 数据图表 SDK
+│ │ │ ├── static // 静态资源文件
+│ │ │ ├── changelog.md // 变更日志
+│ │ │ ├── license.md // 许可协议
+│ │ │ ├── package.json // 组件的 npm 包管理文件
+│ │ │ ├── readme.md // 组件的说明文件
+│ │ ├── ruoyi
+│ │ │ ├── index.vue // ruoyi 相关的 Vue 组件
+│ │ ├── u-city-select
+│ │ │ ├── area.js // 区域数据脚本
+│ │ │ ├── city.js // 城市数据脚本
+│ │ │ ├── province.js // 省份数据脚本
+│ │ │ ├── u-city-select.vue // 城市选择组件的 Vue 文件
+│ │ ├── uni-section // 通用选择组件
+│ │ │ ├── uni-section.vue // Vue 文件
+│ └── directive // 存放指令相关代码
+│ │ ├── common // 常用指令
+│ │ ├── permission // 权限控制相关指令
+│ │ ├── index.ts // 指令入口
+│ └── pages // 存放各个页面的 Vue 文件
+│ │ ├── common // 常用页面
+│ │ ├── index.vue // 首页组件
+│ │ ├── login.vue // 登录页组件
+│ │ ├── mine.vue // 个人中心页组件
+│ │ ├── template.config.js // 模板页面的配置
+│ │ ├── template.vue // 模板页面组件
+│ │ ├── work.vue // 工作相关页面组件
+│ └── pages_geek // Geek 相关页面
+│ │ ├── code // 代码页面
+│ │ ├── index // 首页页面
+│ └── pages_mine // 个人中心页面
+│ │ ├── about // 关于页面
+│ │ ├── avatar // 头像管理页面
+│ │ ├── help // 帮助页面
+│ │ ├── info // 信息页面
+│ │ ├── pwd // 密码修改页面
+│ │ ├── setting // 设置页面
+│ └── pages_qiun // Qiun 相关页面
+│ │ ├── components // 组件目录
+│ │ ├── pages // 页面目录
+│ │ ├── static // 静态资源目录
+│ └── pages_template // 模板页面
+│ │ ├── components // 模板组件
+│ │ ├── pages // 模板页面
+│ └── plugins // 插件目录
+│ └── static // 存放静态文件,如图片等
+│ └── store // 存放全局状态管理(例如 Vuex 或 Redux)
+│ └── uni_modules // uni-app 模块
+│ └── utils // 工具类文件,存放通用函数
+│ └── App.vue // Vue.js 应用入口文件
+│ └── config.js // 配置文件
+│ └── env.d.ts // TypeScript 的环境类型定义
+│ └── main.js // 应用的主入口脚本
+│ └── manifest.json // 项目的 manifest 配置文件
+│ └── pages.json // 配置所有页面的路径和窗口等信息
+│ └── shime-uni.d.ts // uni-app 的 TypeScript 类型定义文件
+│ └── uin.scss // 样式文件
+├── index.html // 项目的 HTML 入口文件
+├── LICENSE // 项目许可协议文件
+├── package-lock.json // npm 包管理锁定文件
+├── package.json // 项目的 npm 配置文件
+├── pnpm-lock.yaml // pnpm 包管理锁定文件
+├── tsconfig.js // TypeScript 配置文件
+├── vite.config.js // Vite 构建工具的配置文件
+├── yarn.lock // yarn 包管理锁定文件
diff --git "a/RuoYi-Geek-App/4.\345\216\213\347\274\251\345\206\205\345\255\230.md" "b/RuoYi-Geek-App/4.\345\216\213\347\274\251\345\206\205\345\255\230.md"
new file mode 100644
index 0000000000000000000000000000000000000000..5aaf30497a1f97d23025abbb96627bdbd80ce8ce
--- /dev/null
+++ "b/RuoYi-Geek-App/4.\345\216\213\347\274\251\345\206\205\345\255\230.md"
@@ -0,0 +1,44 @@
+# 压缩内存
+
+(主包最低 809kb 左右)
+
+### 删除 geek 组件
+
+1. 删除 pages_geek 和 components/geek-xd 文件夹
+2. 删除 pages.json 中 subPackages 的 root 值为“pages_geek/pages”的配置
+3. 删除 pages/template.config.js 中 geek 组件
+
+### 去除模板
+
+(占用主包 582kb 左右)
+
+1. 删除 pages_template、pages_qiun 两个文件夹
+2. 删除 pages.json 中 subPackages 的 root 值为“pages_qiun/pages”、“pages_template/pages”的两个配置
+3. 删除 pages/template.config.js 和 pages/template.vue
+4. 删除 pages.json 中 subPackages 的“tabBar”中的模板一项和“pages”中模板的一项
+5. 删除 static 中的 uview,里面都是示例图片。
+6. 删除 plugins 中的 config.js 和 common.js,并在 plugins/index.js 中删除相关配置
+
+### 删除 uchart
+
+(占用主包 175kb 左右,不建议删除,以防以后会用)
+
+1. 删除 components/qiun-data-charts 文件夹
+2. 删除 pages.json 中的 easycom 下的 custom 中的"qiun-(.\*)"的那一行
+3. 删除 pages/index 中使用 “qiun-data-charts” 的部分
+
+### 删除 uview
+
+(按需引入,没必要删除)
+
+1. main.js 或者 main.ts 中删除
+
+```js
+import uviewPlus from "uview-plus";
+// ......
+app.use(uviewPlus);
+```
+
+2. uni.scss 中删除 @import 'uview-plus/theme.scss';
+3. App.vue 中删除 @import '@/static/scss/index.scss';
+4. package.json 中删除 "clipboard": "^2.0.11","dayjs": "^1.11.9","uview-plus": "^3.1.36",
diff --git "a/RuoYi-Geek-App/RuoYi-Geek-App\345\277\253\351\200\237\345\220\257\345\212\250.md" "b/RuoYi-Geek-App/5.\346\217\222\344\273\266\344\275\277\347\224\250.md"
similarity index 60%
rename from "RuoYi-Geek-App/RuoYi-Geek-App\345\277\253\351\200\237\345\220\257\345\212\250.md"
rename to "RuoYi-Geek-App/5.\346\217\222\344\273\266\344\275\277\347\224\250.md"
index 01295ac28a578ec7f23ff813979377ab93b73c7f..f6d19733dbe36b2f10c8e81ffe30d6acc82bf706 100644
--- "a/RuoYi-Geek-App/RuoYi-Geek-App\345\277\253\351\200\237\345\220\257\345\212\250.md"
+++ "b/RuoYi-Geek-App/5.\346\217\222\344\273\266\344\275\277\347\224\250.md"
@@ -1,52 +1,3 @@
-# 快速开始
-
-**注意:** node 版本需要 16+
-
-## 迁移到Hbuilder(不依赖Hbuilder的项目不需要迁移)
-
-1. src路径作为项目根路径
-2. 将index.html、package.json、vite.config.js、tsconfig.json、.gitignore粘贴到src目录下
-3. 在src目录下运行npm install
-4. 修改index.html中的./src/main.js为./main.js
-5. 在HBuilderX中运行时注意观察是否使用的是Vue3的编译器(若不是请自行查找方法解决,本人对HbuilderX使用不多)
-
-## 安装
-
-一下三种方式均可,感觉速度 pnpm > yarn > cnpm > npm
-
-**_Vue3/Vite 版要求 node 版本^14.18.0 || >=16.0.0_**
-
-```shell
-npm install
-cnpm install
-yarn
-pnpm install
-```
-
-# 启动
-
-1. 将项目下载到本地
-2. 初始化项目---进入项目根路径运行指令初始化项目
- `npm install`
-3. 运行项目---进入项目根路径运行指令(在 package.json 能找到所有指令):
- 以微信小程序为例:`npm run dev:mp-weixin`
- 以 H5 为例 ` npm run dev:h5`
-4. 查看项目 以微信小程序为例:
- 打开微信开发者工具,导入项目路径 dist\dev\mp-weixin
- 以 H5 为例:打开浏览器,输入控制台输出的地址
- 注:公众号属于 H5,以微信公众号为例,打开微信开发者工具,输入控制台输出的地址
-5. 打包项目---进入项目根路径运行指令(在 package.json 能找到所有指令):
- 以微信小程序为例:`npm run build:mp-weixin`
- 以 H5 为例: `npm run build:h5`
-
-### 代码压缩
-
-默认是启动代码压缩的,
-
-如果需要关闭代码压缩,可以将 vite.config.js 中的 build.minify 赋值为 false。
-
-如果需要打开代码压缩,可以将 vite.config.js 中的 build.minify 赋值为 true。
-
# 内置组件(geek-xd)
1. 颜色选择器组件
@@ -126,9 +77,8 @@ eventName 是事件名称,eventFun 是事件处理函数,请尽量避免事
| onError | 定义异常事件 | callback 默认异常事件的处理函数 |
| onClose | 定义关闭事件 | callback 默认关闭事件的处理函数 |
-# 作者建议
-### 对于选项式
+## 对于选项式
```js
this.$tab; // 建议使用this.$tab进行页面跳转,理由:便于在跳转前处理其他事务
@@ -136,7 +86,7 @@ this.$auth; // 建议使用this.$auth进行鉴权操作
this.$modal; // 建议使用this.$modal打开弹窗,理由:便于以后想要使用自定义弹窗
```
-### 对于组合式
+## 对于组合式
```js
import tab from "@/plugins/tab"; // 建议使用tab进行页面跳转,理由:便于在跳转前处理其他事务
@@ -147,100 +97,6 @@ import modal from "@/plugins/modal"; // 建议使用modal打开弹窗,理由
import { tab, auth, modal } from "@/plugins";
```
-### 对于 ucharts
+## 对于 ucharts
建议即便暂时不使用图表也不要删除它,以后可能会用到。
-
-# 压缩内存
-
-(主包最低 809kb 左右)
-
-### 删除 geek 组件
-
-1. 删除 pages_geek 和 components/geek-xd 文件夹
-2. 删除 pages.json 中 subPackages 的 root 值为“pages_geek/pages”的配置
-3. 删除 pages/template.config.js 中 geek 组件
-
-### 去除模板
-
-(占用主包 582kb 左右)
-
-1. 删除 pages_template、pages_qiun 两个文件夹
-2. 删除 pages.json 中 subPackages 的 root 值为“pages_qiun/pages”、“pages_template/pages”的两个配置
-3. 删除 pages/template.config.js 和 pages/template.vue
-4. 删除 pages.json 中 subPackages 的“tabBar”中的模板一项和“pages”中模板的一项
-5. 删除 static 中的 uview,里面都是示例图片。
-6. 删除 plugins 中的 config.js 和 common.js,并在 plugins/index.js 中删除相关配置
-
-### 删除 uchart
-
-(占用主包 175kb 左右,不建议删除,以防以后会用)
-
-1. 删除 components/qiun-data-charts 文件夹
-2. 删除 pages.json 中的 easycom 下的 custom 中的"qiun-(.\*)"的那一行
-3. 删除 pages/index 中使用 “qiun-data-charts” 的部分
-
-### 删除 uview
-
-(按需引入,没必要删除)
-
-1. main.js 或者 main.ts 中删除
-
-```js
-import uviewPlus from "uview-plus";
-// ......
-app.use(uviewPlus);
-```
-
-2. uni.scss 中删除 @import 'uview-plus/theme.scss';
-3. App.vue 中删除 @import '@/static/scss/index.scss';
-4. package.json 中删除 "clipboard": "^2.0.11","dayjs": "^1.11.9","uview-plus": "^3.1.36",
-
-# 功能演示
-
-
-
-# 联系我们:
-
-### 技术交流群 QQ:744785891
-
-欢迎所有对 RuoYi-Geek 感兴趣的开发者加入我们的社区😆!
-
-
-
-### 商业合作😆
-
-我们欢迎各类商业合作机会,无论是技术咨询、项目合作还是其他形式的合作,都期待与您携手共创未来。
-如果您有兴趣,请通过以下方式联系我们:
-
-
-
-
- QQ
- QQ号:2086232477
- |
-
- 微信
- 微信号:tantianming000
- |
-
-
-
-
- |
-
-
- |
-
-
-
-我们期待着与您建立长期稳定的合作关系,并共同探索更多的可能性。
diff --git "a/RuoYi-Geek-Electron/1.\347\256\200\344\273\213.md" "b/RuoYi-Geek-Electron/1.\347\256\200\344\273\213.md"
new file mode 100644
index 0000000000000000000000000000000000000000..c89686b138b30a9bf12ad53b7fccc6599c5aa028
--- /dev/null
+++ "b/RuoYi-Geek-Electron/1.\347\256\200\344\273\213.md"
@@ -0,0 +1,3 @@
+# 简介
+
+RuoYi-Geek-Electron 是一个专为现代化开发设计的桌面应用框架,它致力于将流行的 RuoYi-Geek-SpringBoot3 后端与 RuoYi-Geek-Vue3 前端无缝集成到一个易于使用的窗口应用程序环境中。通过使用 Electron 技术,RuoYi-Geek-Electron 为开发者提供了一套完整的解决方案,使得基于 RuoYi 框架构建的项目能够轻松地跨平台运行于 Windows、macOS 和 Linux 操作系统之上。
diff --git "a/RuoYi-Geek-Electron/RuoYi-Geek-Electron\345\277\253\351\200\237\345\220\257\345\212\250.md" "b/RuoYi-Geek-Electron/2.\345\277\253\351\200\237\345\220\257\345\212\250.md"
similarity index 60%
rename from "RuoYi-Geek-Electron/RuoYi-Geek-Electron\345\277\253\351\200\237\345\220\257\345\212\250.md"
rename to "RuoYi-Geek-Electron/2.\345\277\253\351\200\237\345\220\257\345\212\250.md"
index 482737985d7a5e37a4c78fb61b255243d91ca651..14f3abaa2e2080ddf653b5af267938016faae875 100644
--- "a/RuoYi-Geek-Electron/RuoYi-Geek-Electron\345\277\253\351\200\237\345\220\257\345\212\250.md"
+++ "b/RuoYi-Geek-Electron/2.\345\277\253\351\200\237\345\220\257\345\212\250.md"
@@ -98,39 +98,3 @@ function test3(){}
xxWorkerRunner.bind('test3', test3)
```
-
-# 联系我们:
-
-### 技术交流群 QQ:744785891
-
-欢迎所有对 RuoYi-Geek 感兴趣的开发者加入我们的社区😆!
-
-
-
-### 商业合作😆
-
-我们欢迎各类商业合作机会,无论是技术咨询、项目合作还是其他形式的合作,都期待与您携手共创未来。
-如果您有兴趣,请通过以下方式联系我们:
-
-
-
-
- QQ
- QQ号:2086232477
- |
-
- 微信
- 微信号:tantianming000
- |
-
-
-
-
- |
-
-
- |
-
-
-
-我们期待着与您建立长期稳定的合作关系,并共同探索更多的可能性。
diff --git "a/RuoYi-Geek-Electron/3.\351\241\271\347\233\256\347\273\223\346\236\204.md" "b/RuoYi-Geek-Electron/3.\351\241\271\347\233\256\347\273\223\346\236\204.md"
new file mode 100644
index 0000000000000000000000000000000000000000..40e7690e511120c7ae9365d16dbec97fcfd0b790
--- /dev/null
+++ "b/RuoYi-Geek-Electron/3.\351\241\271\347\233\256\347\273\223\346\236\204.md"
@@ -0,0 +1,27 @@
+
+# RuoYi-Geek-Electron项目结构
+
+```bash
+├── build //编译后的文件
+├── dist //发布版本
+├── node_modules //Node.js 依赖包
+├── out //编译输出
+│ ├── main //主进程
+│ ├── preload //预加载
+│ └── renderer //渲染进程
+├── resources //资源
+├── src //源代码(ts)
+│ ├── main //主进程
+│ │ ├── annotation // 注解
+│ │ │ ├── BindMapping.ts //绑定映射
+│ │ │ └── WorkerRunner.ts //工作线程运行器
+│ │ └── utils //工具函数
+│ │ └── window //窗口相关
+│ │ │ ├── BaseWindow.ts //基础窗口
+│ │ │ └── IndexWindow.ts //主窗口
+│ │ └── index.ts // 入口
+│ ├── preload //预加载
+│ └── renderer //渲染进程
+
+
+```
diff --git "a/RuoYi-Geek-Electron/electron\345\260\217\347\231\275\345\255\246\344\271\240\342\200\224js\346\226\207\344\273\266\347\220\206\350\247\243.md" "b/RuoYi-Geek-Electron/4.js\346\226\207\344\273\266\347\220\206\350\247\243.md"
similarity index 96%
rename from "RuoYi-Geek-Electron/electron\345\260\217\347\231\275\345\255\246\344\271\240\342\200\224js\346\226\207\344\273\266\347\220\206\350\247\243.md"
rename to "RuoYi-Geek-Electron/4.js\346\226\207\344\273\266\347\220\206\350\247\243.md"
index 48b9219bd8171c83575837e7944e8fdb42d1c02e..1dc775155bad39bc4aac5cb41f3861f772bebd04 100644
--- "a/RuoYi-Geek-Electron/electron\345\260\217\347\231\275\345\255\246\344\271\240\342\200\224js\346\226\207\344\273\266\347\220\206\350\247\243.md"
+++ "b/RuoYi-Geek-Electron/4.js\346\226\207\344\273\266\347\220\206\350\247\243.md"
@@ -1,182 +1,182 @@
-# Electron学习笔记
-
---基于框架学习
-
-# 主进程index.js
-
-### getwindow()
-
-```bash
- static getWindow() {
- if (!this.browserWindow) {
- this.browserWindow = new electron.BrowserWindow(this.browserWindowOptions);
- this.onCreate(this.browserWindow);
- return this.browserWindow;
- } else {
- return this.browserWindow;
- }
- }
-}
-```
-
-定义了一个静态方法 getWindow,用于获取或创建一个 Electron 的浏览器窗口。具体功能如下:
-
-1. 检查 this.browserWindow 是否存在。
-2. 如果不存在,则创建一个新的 BrowserWindow 实例,并调用 onCreate 方法进行初始化,最后返回该实例。
-3. 如果已存在,则直接返回现有的 browserWindow。
-
-
-
-### 配置应用主窗口
-
-```bash
-class IndexWindow extends BaseWindow {
- static browserWindowOptions = {
- width: 900,
- height: 670,
- show: false,
- autoHideMenuBar: true,
- ...process.platform === "linux" ? { icon } : {},
- webPreferences: {
- preload: path.join(__dirname, "../preload/index.js"),
- sandbox: false,
- nodeIntegration: true,
- // 开启自带node环境
- webviewTag: true,
- // 开启webview
- contextIsolation: true,
- // 开启context上下文
- webSecurity: false,
- // 开启网络安全
- allowRunningInsecureContent: true
- // 允许运行不安全内容
- }
- };
-```
-
-配置 Electron 应用的主窗口,包括窗口大小、初始状态、菜单栏设置以及 WebPreferences 的详细配置,确保应用在启动时能够按照预期的行为进行渲染和交互。
-
-### onCreate
-
-```bash
-static onCreate(context) {
- context.on("ready-to-show", () => {
- context.show();
- });
- context.webContents.setWindowOpenHandler((details) => {
- electron.shell.openExternal(details.url);
- return { action: "deny" };
- });
- if (utils.is.dev && process.env["ELECTRON_RENDERER_URL"]) {
- context.webContents.openDevTools();
- context.loadURL(process.env["ELECTRON_RENDERER_URL"]);
- } else {
- context.loadFile(path.join(__dirname, "../renderer/index.html"));
- }
- }
-}
-
-```
-
-创建和初始化一个Electron应用窗口的静态方法onCreate。主要功能如下:
-
-1. 监听窗口准备就绪事件(44-46):当窗口准备好显示时,调用context.show()显示窗口。
-2. 处理新窗口打开请求(47-50):拦截新窗口打开请求,使用默认浏览器打开链接,并拒绝创建新窗口。
-3. 加载开发或生产环境资源(51-56):
- o 如果是开发环境且设置了环境变量ELECTRON_RENDERER_URL,则打开开发者工具并加载指定URL。
- o 否则,加载本地HTML文件。
-
-# 应用主进程
-
-```ts
-electron.app.whenReady().then(() => {
- utils.electronApp.setAppUserModelId("com.electron");
- electron.app.on("browser-window-created", (_, window) => {
- utils.optimizer.watchWindowShortcuts(window);
- });
- electron.ipcMain.on("ping", () => console.log("pong"));
- createWindow();
- electron.app.on("activate", function() {
- if (electron.BrowserWindow.getAllWindows().length === 0) createWindow();
- });
-});
-electron.app.on("window-all-closed", () => {
- if (process.platform !== "darwin") {
- electron.app.quit();
- }
-});
-Electron应用的主进程(main process)部分,主要负责在应用启动时执行一系列初始化操作,并处理窗口管理和应用关闭事件。具体功能如下:
-1. 应用准备就绪时:
-o 设置应用程序模型ID为com.electron。
-o 监听browser-window-created事件,在创建浏览器窗口时调用utils.optimizer.watchWindowShortcuts(window)方法来监控窗口快捷键。
-o 监听ping IPC消息,并在收到消息时打印pong。
-o 调用createWindow()函数创建主窗口。
-o 监听activate事件,当应用被激活且没有打开的窗口时,重新创建主窗口。
-2. 所有窗口关闭时:
-o 如果操作系统不是macOS(darwin),则退出应用。(苹果系统特点)
-
-```
-
-# 预处理进程:
-
-```ts
-"use strict";
-const electron = require("electron");
-const preload = require("@electron-toolkit/preload");
-const api = {};
-if (process.contextIsolated) {
- try {
- electron.contextBridge.exposeInMainWorld("electron", preload.electronAPI);
- electron.contextBridge.exposeInMainWorld("api", api);
- } catch (error) {
- console.error(error);
- }
-} else {
- window.electron = preload.electronAPI;
- window.api = api;
-}
-```
-
-用于在渲染进程(renderer process)中安全地暴露API给网页内容。具体功能如下:
-
-1. 严格模式:
- o 使用"use strict"确保代码运行在严格模式下,避免一些常见的编程错误。
-2. 引入依赖:
- o 引入electron模块和@electron-toolkit/preload模块。
- o 定义一个空对象api,用于自定义API。
-3. 上下文隔离检查:
- o 检查process.contextIsolated是否为true,以确定是否启用了上下文隔离(context isolation)。
-4. 上下文隔离启用时:
- o 使用electron.contextBridge.exposeInMainWorld方法将preload.electronAPI和自定义的api暴露给主世界(main world),即网页内容可以访问这些API。
- o 如果暴露过程中发生错误,捕获并打印错误信息。
-5. 上下文隔离未启用时:
- o 直接将preload.electronAPI和api挂载到全局window对象上,使网页内容可以直接访问这些API。
-
-#API解释与作用:
-• API 是一种接口,允许不同软件组件之间进行通信。
-• 在Electron应用中,API通过预加载脚本安全地暴露给渲染进程,以便前端代码可以调用这些API与主进程或其他部分进行交互。
-• api对象可以包含自定义的方法和属性,根据需求进行扩展。
-
-# 渲染进程
-
-```ts
-
-
-
- Electron
-
-
-
-
-
-
-
-
-
-
-```
-
-配置了内容安全策略,引入了必要的JavaScript模块和CSS样式文件。页面主体中有一个 ``元素,用于作为前端框架的挂载点或放置主要内容。
+# Electron学习笔记
+
+--基于框架学习
+
+# 主进程index.js
+
+### getwindow()
+
+```bash
+ static getWindow() {
+ if (!this.browserWindow) {
+ this.browserWindow = new electron.BrowserWindow(this.browserWindowOptions);
+ this.onCreate(this.browserWindow);
+ return this.browserWindow;
+ } else {
+ return this.browserWindow;
+ }
+ }
+}
+```
+
+定义了一个静态方法 getWindow,用于获取或创建一个 Electron 的浏览器窗口。具体功能如下:
+
+1. 检查 this.browserWindow 是否存在。
+2. 如果不存在,则创建一个新的 BrowserWindow 实例,并调用 onCreate 方法进行初始化,最后返回该实例。
+3. 如果已存在,则直接返回现有的 browserWindow。
+
+
+
+### 配置应用主窗口
+
+```bash
+class IndexWindow extends BaseWindow {
+ static browserWindowOptions = {
+ width: 900,
+ height: 670,
+ show: false,
+ autoHideMenuBar: true,
+ ...process.platform === "linux" ? { icon } : {},
+ webPreferences: {
+ preload: path.join(__dirname, "../preload/index.js"),
+ sandbox: false,
+ nodeIntegration: true,
+ // 开启自带node环境
+ webviewTag: true,
+ // 开启webview
+ contextIsolation: true,
+ // 开启context上下文
+ webSecurity: false,
+ // 开启网络安全
+ allowRunningInsecureContent: true
+ // 允许运行不安全内容
+ }
+ };
+```
+
+配置 Electron 应用的主窗口,包括窗口大小、初始状态、菜单栏设置以及 WebPreferences 的详细配置,确保应用在启动时能够按照预期的行为进行渲染和交互。
+
+### onCreate
+
+```bash
+static onCreate(context) {
+ context.on("ready-to-show", () => {
+ context.show();
+ });
+ context.webContents.setWindowOpenHandler((details) => {
+ electron.shell.openExternal(details.url);
+ return { action: "deny" };
+ });
+ if (utils.is.dev && process.env["ELECTRON_RENDERER_URL"]) {
+ context.webContents.openDevTools();
+ context.loadURL(process.env["ELECTRON_RENDERER_URL"]);
+ } else {
+ context.loadFile(path.join(__dirname, "../renderer/index.html"));
+ }
+ }
+}
+
+```
+
+创建和初始化一个Electron应用窗口的静态方法onCreate。主要功能如下:
+
+1. 监听窗口准备就绪事件(44-46):当窗口准备好显示时,调用context.show()显示窗口。
+2. 处理新窗口打开请求(47-50):拦截新窗口打开请求,使用默认浏览器打开链接,并拒绝创建新窗口。
+3. 加载开发或生产环境资源(51-56):
+ o 如果是开发环境且设置了环境变量ELECTRON_RENDERER_URL,则打开开发者工具并加载指定URL。
+ o 否则,加载本地HTML文件。
+
+# 应用主进程
+
+```ts
+electron.app.whenReady().then(() => {
+ utils.electronApp.setAppUserModelId("com.electron");
+ electron.app.on("browser-window-created", (_, window) => {
+ utils.optimizer.watchWindowShortcuts(window);
+ });
+ electron.ipcMain.on("ping", () => console.log("pong"));
+ createWindow();
+ electron.app.on("activate", function() {
+ if (electron.BrowserWindow.getAllWindows().length === 0) createWindow();
+ });
+});
+electron.app.on("window-all-closed", () => {
+ if (process.platform !== "darwin") {
+ electron.app.quit();
+ }
+});
+Electron应用的主进程(main process)部分,主要负责在应用启动时执行一系列初始化操作,并处理窗口管理和应用关闭事件。具体功能如下:
+1. 应用准备就绪时:
+o 设置应用程序模型ID为com.electron。
+o 监听browser-window-created事件,在创建浏览器窗口时调用utils.optimizer.watchWindowShortcuts(window)方法来监控窗口快捷键。
+o 监听ping IPC消息,并在收到消息时打印pong。
+o 调用createWindow()函数创建主窗口。
+o 监听activate事件,当应用被激活且没有打开的窗口时,重新创建主窗口。
+2. 所有窗口关闭时:
+o 如果操作系统不是macOS(darwin),则退出应用。(苹果系统特点)
+
+```
+
+# 预处理进程:
+
+```ts
+"use strict";
+const electron = require("electron");
+const preload = require("@electron-toolkit/preload");
+const api = {};
+if (process.contextIsolated) {
+ try {
+ electron.contextBridge.exposeInMainWorld("electron", preload.electronAPI);
+ electron.contextBridge.exposeInMainWorld("api", api);
+ } catch (error) {
+ console.error(error);
+ }
+} else {
+ window.electron = preload.electronAPI;
+ window.api = api;
+}
+```
+
+用于在渲染进程(renderer process)中安全地暴露API给网页内容。具体功能如下:
+
+1. 严格模式:
+ o 使用"use strict"确保代码运行在严格模式下,避免一些常见的编程错误。
+2. 引入依赖:
+ o 引入electron模块和@electron-toolkit/preload模块。
+ o 定义一个空对象api,用于自定义API。
+3. 上下文隔离检查:
+ o 检查process.contextIsolated是否为true,以确定是否启用了上下文隔离(context isolation)。
+4. 上下文隔离启用时:
+ o 使用electron.contextBridge.exposeInMainWorld方法将preload.electronAPI和自定义的api暴露给主世界(main world),即网页内容可以访问这些API。
+ o 如果暴露过程中发生错误,捕获并打印错误信息。
+5. 上下文隔离未启用时:
+ o 直接将preload.electronAPI和api挂载到全局window对象上,使网页内容可以直接访问这些API。
+
+#API解释与作用:
+• API 是一种接口,允许不同软件组件之间进行通信。
+• 在Electron应用中,API通过预加载脚本安全地暴露给渲染进程,以便前端代码可以调用这些API与主进程或其他部分进行交互。
+• api对象可以包含自定义的方法和属性,根据需求进行扩展。
+
+# 渲染进程
+
+```ts
+
+
+
+ Electron
+
+
+
+
+
+
+
+
+
+
+```
+
+配置了内容安全策略,引入了必要的JavaScript模块和CSS样式文件。页面主体中有一个 ``元素,用于作为前端框架的挂载点或放置主要内容。
diff --git "a/RuoYi-Geek-SpringBoot3/1.\347\256\200\344\273\213.md" "b/RuoYi-Geek-SpringBoot3/1.\347\256\200\344\273\213.md"
new file mode 100644
index 0000000000000000000000000000000000000000..55c0cefb67f09f318684bb5f01984662a4bd3a3d
--- /dev/null
+++ "b/RuoYi-Geek-SpringBoot3/1.\347\256\200\344\273\213.md"
@@ -0,0 +1,56 @@
+# 简介
+
+RuoYi-Geek-SpringBoot3 是基于Spring Boot 3 和 RuoYi-Geek 框架开发的开源项目,旨在提供一个高效、灵活、易用的后台管理系统解决方案。它结合了 RuoYi 的优秀特性和 Spring Boot 3 的新功能,适合快速开发企业级应用。
+
+# 平台简介
+
+本平台是一套全部开源的快速开发平台,毫无保留给个人及企业免费使用。
+
+* 前端采用Vue3、Element Plus。
+* 后端采用Spring Boot3、Spring Security、Redis & Jwt。
+* 权限认证使用Jwt,支持多终端认证系统。
+* 支持加载动态权限菜单,多方式轻松权限控制。
+* 高效率开发,使用代码生成器可以一键生成前后端代码。
+* 多数据源与分库分表默认集成
+* 所有非基本模块可随意插拔,让开发更加简单高效
+* 提供了多个工具模块助力开发,如:在线接口模块、mybatis-jpa模块
+* 提供了多个常见业务模块简化开发,如:第三方认证模块、支付模块
+* 提供了多个常见的服务模块集成开发,如:websocket模块、minio模块
+
+# 主要特性
+
+**核心:模块化架构设计,支持各个模块的快速安拆,对第三方认证、第三方支付模块设计了基础的规范和基础模块。**
+
+1. **Spring Boot 3 支持** :
+
+* 基于 Spring Boot 3 开发,充分利用其新特性和性能优化。
+* 支持 Java 17 及以上版本。
+* 改用SpringBoot3+java17的更新的技术栈并改掉所有的弃用的方法。
+
+2. **RuoYi-Geek 框架** :
+
+* 继承了 RuoYi 的模块化设计,便于扩展和维护。
+* 提供丰富的后台管理功能,如用户管理、角色管理、权限管理等。
+
+3. **前后端分离** :
+* 前端采用 Vue、Element Plus,后端提供 Spring Boot3、Spring Security、Redis & Jwt,便于前后端独立开发和部署。
+
+4. **安全性** :
+
+* 集成 Spring Security,提供完善的权限控制和认证机制。
+* 支持 JWT 等现代认证方式。
+
+5. **数据库支持** :
+
+* 支持多种数据库,如 MySQL、Oracle 等。
+* 集成 MyBatis-Plus,简化数据库操作。
+
+6. **代码生成器** :
+
+* 升级了代码生成器(配合本项目的vue3版本才可用),使关联表生成更加简单。
+
+# 适用场景
+
+* **企业级后台管理系统** :适用于需要复杂权限管理和多模块集成的企业应用。
+* **快速开发平台** :适合需要快速搭建原型的项目,减少开发周期。
+* **学习与教学** :适合学习和研究 Spring Boot 3 和 RuoYi 框架的开发者。
diff --git "a/RuoYi-Geek-SpringBoot3/RuoYi-Geek-SpringBoot3\345\277\253\351\200\237\345\220\257\345\212\250.md" "b/RuoYi-Geek-SpringBoot3/2.\345\277\253\351\200\237\345\220\257\345\212\250.md"
similarity index 41%
rename from "RuoYi-Geek-SpringBoot3/RuoYi-Geek-SpringBoot3\345\277\253\351\200\237\345\220\257\345\212\250.md"
rename to "RuoYi-Geek-SpringBoot3/2.\345\277\253\351\200\237\345\220\257\345\212\250.md"
index a2da8e74900b411e82d8ad8f081dfbe1d439657b..51ba612cc855d43def5ecd6466fba3301846a3d4 100644
--- "a/RuoYi-Geek-SpringBoot3/RuoYi-Geek-SpringBoot3\345\277\253\351\200\237\345\220\257\345\212\250.md"
+++ "b/RuoYi-Geek-SpringBoot3/2.\345\277\253\351\200\237\345\220\257\345\212\250.md"
@@ -25,39 +25,3 @@ rouyi-geek-springboot3 —— rouyi-admin —— src ——resources —— appl
## 运行项目
VSCode中运行,出现RYGeek表示成功
-
-# 联系我们:
-
-### 技术交流群 QQ:744785891
-
-欢迎所有对 RuoYi-Geek 感兴趣的开发者加入我们的社区😆!
-
-
-
-### 商业合作😆
-
-我们欢迎各类商业合作机会,无论是技术咨询、项目合作还是其他形式的合作,都期待与您携手共创未来。
-如果您有兴趣,请通过以下方式联系我们:
-
-
-
-
- QQ
- QQ号:2086232477
- |
-
- 微信
- 微信号:tantianming000
- |
-
-
-
-
- |
-
-
- |
-
-
-
-我们期待着与您建立长期稳定的合作关系,并共同探索更多的可能性。
diff --git "a/RuoYi-Geek-SpringBoot3/RuoYi-Geek-SpringBoot3\351\241\271\347\233\256\347\273\223\346\236\204-x.md" "b/RuoYi-Geek-SpringBoot3/3.\351\241\271\347\233\256\347\273\223\346\236\204.md"
similarity index 91%
rename from "RuoYi-Geek-SpringBoot3/RuoYi-Geek-SpringBoot3\351\241\271\347\233\256\347\273\223\346\236\204-x.md"
rename to "RuoYi-Geek-SpringBoot3/3.\351\241\271\347\233\256\347\273\223\346\236\204.md"
index d84840c1138ea4838e392a77c7437a27e59caadd..872e87f7ff386de13298ee5a836a5d8e38b7a3e0 100644
--- "a/RuoYi-Geek-SpringBoot3/RuoYi-Geek-SpringBoot3\351\241\271\347\233\256\347\273\223\346\236\204-x.md"
+++ "b/RuoYi-Geek-SpringBoot3/3.\351\241\271\347\233\256\347\273\223\346\236\204.md"
@@ -1,80 +1,78 @@
-
-# RuoYi-Geek-SpringBoot3项目结构
-
-```bash
-├── ruoyi-admin // 管理后台模块
-│ ├── src/main
-│ │ ├── java/com/ruoyi //项目的 Java 源代码
-│ │ │ └── web // Web 相关的 Java 类
-│ │ │ ├── RuoYiApplication.java //应用程序主类,用于启动应用程序。
-│ │ │ └── RuoYiServletInitializer.java //Servlet 初始化类
-│ │ └── resources //资源文件
-│ └── target //输出目录
-│ └── pom.xml //配置文件
-├── ruoyi-auth //认证模块
-│ ├── ruoyi-auth-common // 通用模块或库
-│ ├── ruoyi-auth-starter // 启动器
-│ ├── ruoyi-oauth-justauth // OAuth 认证和授权
-│ ├── ruoyi-oauth-wx //微信认证和授权。
-│ ├── ruoyi-tfa-email // 邮件双因素认证
-│ ├── ruoyi-tfa-phone // 手机双因素认证
-│ └── pom.xml //配置文件
-├── ruoyi-common //公共模块
-│ ├── src/main/java/com/ruoyi/common
-│ │ ├── annotation // 自定义注解
-│ │ ├── config // 配置类
-│ │ ├── constant // 常量类
-│ │ ├── core // 核心业务逻辑类
-│ │ ├── enums // 缓存枚举类。
-│ │ ├── exception // 异常处理类。
-│ │ ├── filter // 过滤器类。
-│ │ ├── service // 服务层接口和实现类。
-│ │ ├── utils // 工具类。
-│ │ └── xss // 与跨站脚本(XSS)防护相关的类。
-├── ruoyi-framework //框架模块
-│ ├── src/main/java/com/ruoyi/framework
-│ │ ├── aspectj //AOP切面
-│ │ ├── config // 配置类
-│ │ ├── datasource // 数据源配置
-│ │ ├── interceptor // 拦截器
-│ │ ├── manager // 管理器
-│ │ ├── security // 安全配置
-│ │ └── web // Web 相关配置
-│ ├── generated-sources // 注解处理器生成的源代码文件
-│ ├── generated-test-sources // 测试注解处理器生成的源代码文件
-├── ruoyi-middleware //中间件模块
-│ ├── ruoyi-middleware-minio // MinIO存储服务
-│ ├── ruoyi-middleware-rabbitmq // 与RabbitMQ消息队列服务
-│ ├── ruoyi-middleware-redis // Redis缓存服务
-│ └── ruoyi-middleware-starter // 中间件启动器
-├── ruoyi-models //模型模块
-│ ├── ruoyi-generator // 代码生成器
-│ ├── ruoyi-models-starter // 模型启动器
-│ ├── ruoyi-online // 在线模块
-│ ├── ruoyi-quartz // 定时任务
-├── ruoyi-pay //支付模块
-│ ├── ruoyi-pay-alipay // 支付宝支付
-│ ├── ruoyi-pay-common // 通用支付组件
-│ ├── ruoyi-pay-sqb // SQB 支付
-│ ├── ruoyi-pay-starter // pay启动器
-│ ├── ruoyi-pay-wx // 微信支付
-└── ruoyi-plugins //插件模块
-│ ├── ruoyi-alibaba-oss // 阿里云 OSS 存储
-│ ├── ruoyi-atomikos // Atomikos事务管理
-│ ├── ruoyi-ehcache // Ehcache 缓存
-│ ├── ruoyi-mybatis-interceptor // MyBatis 拦截
-│ ├── ruoyi-mybatis-jpa // MyBatis 和 JPA 集成
-│ ├── ruoyi-mybatis-plus // MyBatis Plus 扩展
-│ ├── ruoyi-netty // Netty 网络编程
-│ ├── ruoyi-plugins-starter // 插件启动器
-│ ├── ruoyi-websocket // WebSocket支持
-├── ruoyi-system //系统模块
-├── sql //SQL脚本目录
-│ ├── auth.sql //数据库认证SQL 脚本。
-│ ├── create_database.sql // 创建数据库 SQL 脚本。
-│ ├── gen.sql // 生成相关数据SQL 脚本。
-│ ├── online.sql // 在线服务相关SQL 脚本。
-│ ├── pay.sql // 支付相关的 SQL 脚本。
-│ ├── quartz.sql // Quartz 定时任务相关的 SQL 脚本。
-│ └── ry_20230223.sql // 系统初始数据 SQL 脚本。
-```
+
+# RuoYi-Geek-SpringBoot3项目结构
+
+```bash
+├── ruoyi-admin // 管理后台模块
+│ ├── src/main
+│ │ ├── java/com/ruoyi //项目的 Java 源代码
+│ │ │ └── web // Web 相关的 Java 类
+│ │ │ ├── RuoYiApplication.java //应用程序主类,用于启动应用程序。
+│ │ │ └── RuoYiServletInitializer.java //Servlet 初始化类
+│ │ └── resources //资源文件
+│ └── target //输出目录
+│ └── pom.xml //配置文件
+├── ruoyi-auth //认证模块
+│ ├── ruoyi-auth-common // 通用模块或库
+│ ├── ruoyi-auth-starter // 启动器
+│ ├── ruoyi-oauth-justauth // OAuth 认证和授权
+│ ├── ruoyi-oauth-wx //微信认证和授权。
+│ ├── ruoyi-tfa-email // 邮件双因素认证
+│ ├── ruoyi-tfa-phone // 手机双因素认证
+│ └── pom.xml //配置文件
+├── ruoyi-common //公共模块
+│ ├── src/main/java/com/ruoyi/common
+│ │ ├── annotation // 自定义注解
+│ │ ├── config // 配置类
+│ │ ├── constant // 常量类
+│ │ ├── core // 核心业务逻辑类
+│ │ ├── enums // 缓存枚举类。
+│ │ ├── exception // 异常处理类。
+│ │ ├── filter // 过滤器类。
+│ │ ├── service // 服务层接口和实现类。
+│ │ ├── utils // 工具类。
+│ │ └── xss // 与跨站脚本(XSS)防护相关的类。
+├── ruoyi-framework //框架模块
+│ ├── src/main/java/com/ruoyi/framework
+│ │ ├── aspectj //AOP切面
+│ │ ├── config // 配置类
+│ │ ├── datasource // 数据源配置
+│ │ ├── interceptor // 拦截器
+│ │ ├── manager // 管理器
+│ │ ├── security // 安全配置
+│ │ └── web // Web 相关配置
+├── ruoyi-middleware //中间件模块
+│ ├── ruoyi-middleware-minio // MinIO存储服务
+│ ├── ruoyi-middleware-rabbitmq // 与RabbitMQ消息队列服务
+│ ├── ruoyi-middleware-redis // Redis缓存服务
+│ └── ruoyi-middleware-starter // 中间件启动器
+├── ruoyi-models //模型模块
+│ ├── ruoyi-generator // 代码生成器
+│ ├── ruoyi-models-starter // 模型启动器
+│ ├── ruoyi-online // 在线模块
+│ └── ruoyi-quartz // 定时任务
+├── ruoyi-pay //支付模块
+│ ├── ruoyi-pay-alipay // 支付宝支付
+│ ├── ruoyi-pay-common // 通用支付组件
+│ ├── ruoyi-pay-sqb // SQB 支付
+│ ├── ruoyi-pay-starter // pay启动器
+│ └── ruoyi-pay-wx // 微信支付
+└── ruoyi-plugins //插件模块
+│ ├── ruoyi-alibaba-oss // 阿里云 OSS 存储
+│ ├── ruoyi-atomikos // Atomikos事务管理
+│ ├── ruoyi-ehcache // Ehcache 缓存
+│ ├── ruoyi-mybatis-interceptor // MyBatis 拦截
+│ ├── ruoyi-mybatis-jpa // MyBatis 和 JPA 集成
+│ ├── ruoyi-mybatis-plus // MyBatis Plus 扩展
+│ ├── ruoyi-netty // Netty 网络编程
+│ ├── ruoyi-plugins-starter // 插件启动器
+│ └── ruoyi-websocket // WebSocket支持
+├── ruoyi-system //系统模块
+├── sql //SQL脚本目录
+│ ├── auth.sql //数据库认证SQL 脚本。
+│ ├── create_database.sql // 创建数据库 SQL 脚本。
+│ ├── gen.sql // 生成相关数据SQL 脚本。
+│ ├── online.sql // 在线服务相关SQL 脚本。
+│ ├── pay.sql // 支付相关的 SQL 脚本。
+│ ├── quartz.sql // Quartz 定时任务相关的 SQL 脚本。
+│ └── ry_20230223.sql // 系统初始数据 SQL 脚本。
+```
diff --git "a/RuoYi-Geek-SpringBoot3/4.3\346\240\270\345\277\203\351\200\273\350\276\221\347\220\206\350\247\243.md" "b/RuoYi-Geek-SpringBoot3/4.3\346\240\270\345\277\203\351\200\273\350\276\221\347\220\206\350\247\243.md"
new file mode 100644
index 0000000000000000000000000000000000000000..2bb05760c9460fcc383df9949a58242ffd0da85a
--- /dev/null
+++ "b/RuoYi-Geek-SpringBoot3/4.3\346\240\270\345\277\203\351\200\273\350\276\221\347\220\206\350\247\243.md"
@@ -0,0 +1,81 @@
+# RuoYi-Geek-SpringBoot3核心逻辑理解
+
+```
+core
+├── controller
+│ └── BaseController.java # 控制器基类,处理HTTP请求
+├── domain
+│ ├── entity
+│ │ ├── FileEntity.java # 文件实体类
+│ │ ├── SysDept.java # 系统部门实体类
+│ │ ├── SysDictData.java # 系统字典数据实体类
+│ │ ├── SysDictType.java # 系统字典类型实体类
+│ │ ├── SysMenu.java # 系统菜单实体类
+│ │ ├── SysRole.java # 系统角色实体类
+│ │ └── SysUser.java # 系统用户实体类
+│ └── model
+│ │ ├── LoginBody.java # 登录请求体模型类
+│ │ ├── LoginUser.java # 登录用户模型类
+│ │ ├── RegisterBody.java# 注册请求体模型类
+│ ├── AjaxResult.java # 异步请求结果模型类
+│ ├── BaseEntity.java # 基础实体类
+│ ├── Message.java # 消息模型类
+│ ├── R.java # 响应模型类
+│ ├── TreeEntity.java # 树形实体类
+│ └── TreeSelect.java # 树形选择模型类
+├── page
+│ ├── PageDomain.java # 分页领域模型类
+│ ├── TableDataInfo.java # 表格数据信息模型类
+│ └── TableSupport.java # 表格支持类
+├── security\service
+│ └── IPermissionService.java # 权限服务接口
+└── text
+ ├── CharsetKit.java # 字符集工具类
+ ├── Convert.java # 转换工具类
+ └── StrFormatter.java # 字符串格式化工具类
+```
+
+
+
+
+
+
+## 分页处理
+
+1、startPage:开始分页。
+
+2、startOrderBy:设置排序规则。
+
+3、clearPage:清理分页线程变量。
+
+4、getDataTable:返回分页数据,包含总记录数和当前页的数据列表。
+
+## 响应处理
+
+1、success:返回成功消息(无参数)。
+
+2、error:返回失败消息(无参数)。
+
+3、success(String message):返回带有自定义消息的成功响应。
+
+4、success(Object data):返回带有数据的成功响应。
+
+5、error(String message):返回带有自定义消息的失败响应。
+
+6、warn(String message):返回带有警告消息的响应。
+
+7、toAjax(int rows):根据影响行数返回成功或失败响应。
+
+8、toAjax(boolean result):根据布尔结果返回成功或失败响应。
+
+## 用户信息获取
+
+1、getLoginUser:获取当前登录用户的缓存信息。
+
+2、getUserId:获取当前登录用户的 ID。
+
+3、getDeptId:获取当前登录用户的部门 ID。
+
+4、getUsername:获取当前登录用户的用户名。
+
+5、redirect(String url):页面跳转。
diff --git "a/RuoYi-Geek-SpringBoot3/5.\345\211\215\345\220\216\347\253\257\344\272\244\344\272\222\344\270\216admin\347\220\206\350\247\243.md" "b/RuoYi-Geek-SpringBoot3/5.\345\211\215\345\220\216\347\253\257\344\272\244\344\272\222\344\270\216admin\347\220\206\350\247\243.md"
new file mode 100644
index 0000000000000000000000000000000000000000..6dd6ddc3aa70bca820b56ddcf14a087e3ad349e9
--- /dev/null
+++ "b/RuoYi-Geek-SpringBoot3/5.\345\211\215\345\220\216\347\253\257\344\272\244\344\272\222\344\270\216admin\347\220\206\350\247\243.md"
@@ -0,0 +1,217 @@
+# 交互
+
+## 验证码
+
+系统发出GET请求,请求方法为captchaImage,向前端发出请求,通过反向代理,url请求前端,进行代理,映射到后端,解决跨域问题
+
+
+
+```
+请求url:http://localhost/dev-api/captchaImage
+```
+
+login.vue
+
+```
+
+
![]()
+
+
+function getCode() {
+ getCodeImg().then(res => {
+ captchaEnabled.value = res.captchaEnabled === undefined ? true : res.captchaEnabled;
+ if (captchaEnabled.value) {
+ codeUrl.value = "data:image/gif;base64," + res.img;
+ loginForm.value.uuid = res.uuid;
+ }
+ });
+}
+```
+
+后端:创建ajax对象,判断是否开启验证码验证,若开启,生成键值,判断生成数字还是字符串类验证码,数字类验证码生成表达式,以@作为分割,做不同处理
+
+CacheController.java
+
+```
+// 映射HTTP GET请求到 /captchaImage 路径上,由 getCode 方法处理。
+ @GetMapping("/captchaImage")
+ public AjaxResult getCode(HttpServletResponse response) throws IOException {
+ ······
+ }
+```
+
+
+
+## 登录
+
+点击登录按钮,是为了把表单提交到后台,系统发出POST请求,请求login方法。具体过程,点击登录后,先执行handleLogin方法,在方法体中执行login方法,封装用户名、密码等信息,返回给POST请求。通过反向代理映射到后端。
+
+
+
+```
+请求url:
+http://localhost/dev-api/login
+```
+
+login.vue
+
+```
+
+ 登 录
+ 登 录 中...
+
+
+function handleLogin() {
+ ······
+}
+```
+
+后端:前端输入的信息封装成对象传过来,后端要完成的事情如下:登录前置校验、验证码校验、IP校验、用户验证、生成Token
+
+用户验证写入操作日志和用户登录日志
+
+SysLoginService.java
+
+```
+// 记录操作日志 AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
+ LoginUser loginUser = (LoginUser) authentication.getPrincipal();
+ //修改用户登录信息
+ recordLoginInfo(loginUser.getUserId());
+ // 生成token
+ return tokenService.createToken(loginUser);
+
+```
+
+SysLoginController.java
+
+```
+@PostMapping("/login")
+ public AjaxResult login(@RequestBody LoginBody loginBody) {
+ AjaxResult ajax = AjaxResult.success();
+ // 生成Token
+ String token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(),
+ loginBody.getUuid());//前边那些步骤通过login方法完成
+ ajax.put(Constants.TOKEN, token);
+ return ajax;
+ }
+```
+
+# java/com/ruoyi
+
+## web
+
+### controller
+
+#### common
+
+##### CaptchaController.java:验证码操作处理
+
+该控制器处理HTTP GET请求以生成并返回验证码图像,并将验证码信息存储在缓存中以便后续验证使用
+
+```
+ //通过 @Resource 注解注入了两个不同类型的验证码生产者实例captchaProducer和captchaProducerMath,分别用于生成字符型和数学运算型验证码。
+ @Resource(name = "captchaProducer")
+ private Producer captchaProducer;
+
+ @Resource(name = "captchaProducerMath")
+ private Producer captchaProducerMath;
+```
+
+##### CommonController.java:文件上传下载
+
+该控制器提供了处理通用文件下载和上传请求的功能,包括单文件和多文件上传,以及两种方式的文件下载。通过使用 `@RestController`, `@GetMapping`, 和 `@PostMapping` 注解,使得每个方法可以轻松地映射到HTTP请求上。
+
+```
+ //映射HTTP GET请求到/download路径上,由filedownload方法处理
+ //处理GET请求 /common/download
+ @GetMapping("/download")
+ @Anonymous
+ public void fileDownload(
+ @RequestParam("fileName") String fileName,
+ @RequestParam("delete") Boolean delete,
+ HttpServletResponse response,
+ HttpServletRequest request) {
+
+ }
+
+//处理POST请求 /common/upload 以上传单个文件
+ @PostMapping("/upload")
+ @Anonymous
+ public AjaxResult uploadFile(@RequestBody MultipartFile file) throws Exception {
+
+ }
+```
+
+#### monitor
+
+##### CacheController.java:缓存管理
+
+该控制器提供了对缓存的监控和管理功能,包括获取缓存名称列表、获取特定缓存中的键列表、获取特定缓存键对应的值、清除特定缓存或所有缓存等操作。
+
+```
+//获取缓存值列表,只有monitor:cache:list权限的用户才能访问,设置了路径参数 cacheName 和 cacheKey
+ @PreAuthorize("@ss.hasPermi('monitor:cache:list')")
+ @GetMapping("/getValue/{cacheName}/{cacheKey}")
+
+ public AjaxResult getCacheValue(@PathVariable String cacheName, @PathVariable String cacheKey)
+ {
+ ValueWrapper valueWrapper = CacheUtils.get(cacheName, cacheKey);
+ //创建一个 SysCache 对象,存储缓存名称、缓存键名和缓存值。
+ SysCache sysCache = new SysCache();
+
+ }
+```
+
+##### ServerController.java
+
+该控制器主要用于获取服务器的监控信息,通过调用 `/monitor/server` 这个GET接口,经过权限验证后,可以得到服务器状态的相关信息,并通过RESTful API提供给客户端。
+
+##### SysLogininfoController.java
+
+该控制器主要用于管理系统的访问记录(登录信息),包括获取、导出、删除和清理这些记录,以及解锁用户账户。
+
+##### SysUserOnlineController.java
+
+该控制器主要用于管理操作日志记录,包括获取、导出、删除和清理这些记录。
+
+#### system
+
+SysConfigController.java
+
+它主要用于管理系统配置参数,允许用户通过HTTP请求执行查询、添加、修改、删除以及导出等操作。
+
+SysDeptController.java
+
+该控制器主要用于管理系统的部门信息,包括获取、查询、新增、修改和删除部门等操作。
+
+SysDictDataController.java
+
+该控制器主要用于管理系统中的数据字典信息,包括查询、导出、新增、修改和删除字典数据等操作。
+
+SysDictTypeController.java
+
+该控制器主要用于管理系统中的数据字典类型信息,包括查询、导出、新增、修改、删除以及刷新缓存等操作
+
+SysIndexController.java
+
+该控制器主要用于处理访问系统首页的请求,并返回一个提示信息给用户。
+
+SysLoginController.java
+
+该控制器主要用于处理用户登录验证、获取用户信息以及获取路由信息等操作。
+
+#### tool
+
+### core
+
+## RuoYiApplication.java:启动程序
+
+启动程序,输出启动成功标识,获取环境配置对象env(用于读取配置文件),读取IP、端口信息并输出
+
+## RuoYiServletInitializer.java:部署应用运行
+
+继承公共类,重写configure方法,将springboot应用在servlet容器中进行部署
+
+# resources
+
+# pom.xml
diff --git "a/RuoYi-Geek-SpringBoot3/6.\350\216\267\345\217\226\346\225\260\346\215\256\351\200\273\350\276\221\347\220\206\350\247\243.md" "b/RuoYi-Geek-SpringBoot3/6.\350\216\267\345\217\226\346\225\260\346\215\256\351\200\273\350\276\221\347\220\206\350\247\243.md"
new file mode 100644
index 0000000000000000000000000000000000000000..3ec40b3a6f72b42d941fc985e009a4b88d1a5f0b
--- /dev/null
+++ "b/RuoYi-Geek-SpringBoot3/6.\350\216\267\345\217\226\346\225\260\346\215\256\351\200\273\350\276\221\347\220\206\350\247\243.md"
@@ -0,0 +1,53 @@
+# 数据读取
+
+
+
+
+### 前端发起请求:
+```
+ 前端向后端发送GET请求
+
+ 请求URL为http://localhost/dev-api/sys/post/list?pageNum=1&pageSize=10。
+```
+
+### 后端处理请求:
+```
+ 后端接收到请求后,查询数据库获取岗位管理数据。
+
+ 将查询结果封装成JSON格式返回给前端。
+```
+
+### 前端接收响应:
+```
+ 前端接收到后端返回的JSON数据。
+
+ 解析JSON数据并将其渲染到页面上,显示在表格中。
+```
+
+
+
+
+# 数据更改(增删改查)
+
+
+
+### 前端发起请求:
+```
+ 前端向后端发送POST请求
+
+ 请求URL为http://localhost/dev-api/sys/post。
+```
+
+### 后端处理请求:
+```
+ 后端接收到请求后,处理新增岗位数据
+
+ 将新增结果返回给前端
+```
+
+### 前端接收响应:
+```
+ 前端接收到后端返回的响应
+
+ 根据响应结果更新前端界面
+```
diff --git "a/RuoYi-Geek-SpringBoot3/7.\347\224\250\346\210\267\346\235\203\351\231\220\344\270\216\350\217\234\345\215\225\350\267\257\347\224\261\350\216\267\345\217\226\347\220\206\350\247\243.md" "b/RuoYi-Geek-SpringBoot3/7.\347\224\250\346\210\267\346\235\203\351\231\220\344\270\216\350\217\234\345\215\225\350\267\257\347\224\261\350\216\267\345\217\226\347\220\206\350\247\243.md"
new file mode 100644
index 0000000000000000000000000000000000000000..27c5ac463d698e455d862874076358404b92232c
--- /dev/null
+++ "b/RuoYi-Geek-SpringBoot3/7.\347\224\250\346\210\267\346\235\203\351\231\220\344\270\216\350\217\234\345\215\225\350\267\257\347\224\261\350\216\267\345\217\226\347\220\206\350\247\243.md"
@@ -0,0 +1,89 @@
+# 用户角色与权限获取
+
+系统请求getInfo方法,该方法在任意一个页面跳转时都会调用,是在路由中配置的,前端用来获取用户信息。后端获取用户角色和权限信息,传递给前端
+
+
+
+```
+请求url:http://localhost/dev-api/getInfo
+```
+
+permission.js :调用getInfo方法
+
+```
+// 判断当前用户是否已拉取完user_info信息
+ useUserStore().getInfo().then(() => { //调用getInfo方法
+ isRelogin.show = false
+ usePermissionStore().generateRoutes().then(accessRoutes => {
+ // 根据roles权限生成可访问的路由表
+ accessRoutes.forEach(route => {
+ if (!isHttp(route.path)) {
+ router.addRoute(route) // 动态添加可访问路由表
+ }
+ })
+ next({ ...to, replace: true }) // hack方法 确保addRoutes已完成
+ })
+ }).catch(err => {
+ useUserStore().logOut().then(() => {
+ ElMessage.error(err)
+ next({ path: '/' })
+ })
+ })
+```
+
+user.ts:定义getInfo方法,对于后端的角色权限信息处理
+
+```
+getInfo() {
+ return new Promise((resolve, reject) => {
+ getInfo().then((res:any) => {
+ const user = res.user
+ // @ts-ignore
+ const avatar = (user.avatar == "" || user.avatar == null) ? defAva : import.meta.env.VITE_APP_BASE_API + user.avatar;
+
+ if (res.roles && res.roles.length > 0) { // 验证返回的roles是否是一个非空数组
+ this.roles = res.roles
+ this.permissions = res.permissions
+ } else {
+ this.roles = ['ROLE_DEFAULT']
+ }
+ this.name = user.userName
+ this.avatar = avatar;
+ resolve(res)
+ }).catch(error => {
+ reject(error)
+ })
+ })
+ },
+```
+
+login.js
+
+```
+// 获取用户详细信息
+export function getInfo() {
+ return request({
+ url: '/getInfo',
+ method: 'get'
+ })
+}
+```
+
+后端:通过getInfo方法获取角色信息和权限信息,当权限为*:*: *时,表示所有权限,管理员拥有次此权限,其他用户没有,数据库中sys_user_role记录角色与权限的对应关系。
+
+SysLoginController.java
+
+> ```
+> @GetMapping("getInfo")
+> public AjaxResult getInfo() {
+> LoginUser loginUser = SecurityUtils.getLoginUser();
+> SysUser user = loginUser.getUser();
+> // 角色集合
+> Set roles = permissionService.getRolePermission(user);
+> // 权限集合
+> Set permissions = permissionService.getMenuPermission(user);
+> ······
+> }
+> ```
+
+# 动态菜单路由获取
diff --git "a/RuoYi-Geek-SpringBoot3/RuoYi-Geek-SpringBoot3\347\256\200\344\273\213.md" "b/RuoYi-Geek-SpringBoot3/RuoYi-Geek-SpringBoot3\347\256\200\344\273\213.md"
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git "a/RuoYi-Geek-SpringBoot3/RuoYi-Geek-SpringBoot3\351\241\271\347\233\256\347\273\223\346\236\204.md" "b/RuoYi-Geek-SpringBoot3/RuoYi-Geek-SpringBoot3\351\241\271\347\233\256\347\273\223\346\236\204.md"
deleted file mode 100644
index eb9a52c103b88dd60140fbae4960d075bf6b3203..0000000000000000000000000000000000000000
--- "a/RuoYi-Geek-SpringBoot3/RuoYi-Geek-SpringBoot3\351\241\271\347\233\256\347\273\223\346\236\204.md"
+++ /dev/null
@@ -1,48 +0,0 @@
-本项目是基于 Spring Boot 的后台管理系统,对若依(RuoYi)框架进行完善升级,它具有模块化设计,灵活的系统配置和权限管理等功能。以下是一个典型的框架目录结构示例:
-
-```
-ruoyi-geek-project/
-├── ruoyi-admin # 后台管理模块
-│ ├── src
-│ │ ├── main
-│ │ ├── java # Java源代码
-│ │ │ └── com/ruoyi # 主要包路径
-│ │ │ ├── web
-│ │ │ │ │──controller #响应输入,处理请求
-│ │ │ │ │── core #基础服务
-│ │ │ ├── RuoYiApplication.java # 启动类
-│ │ │ ├── RuoYiServletInitializer.java # Servlet容器
-│ │ │
-│ │ └── resources # 资源文件
-│ │ ├── application-auth.yml # app配置
-│ │ ├── application-druid.yml # 主数据源配置
-│ │ ├── application-pay.yml # 支付宝配置
-│ │ └── application.yml # 开发环境配置
-│ └── pom.xml # Maven依赖管理
-├── ruoyi-framework # 系统框架模块
-│ ├── src
-│ │ ├── main
-│ │ ├── aspectj #数据处理
-│ │ │── config #基础配置
-│ │ │── datasource #数据源配置
-│ │ │── interceptor #拦截器
-│ │ │── manager #业务逻辑管理层
-│ │ │──security #应用安全验证
-│ │ └── web # 交互配置
-│ └── pom.xml # Maven依赖管理
-├── ruoyi-middleware # 中间件配置模块
-│
-├── ruoyi-models # 数据模型配置
-│
-├── ruoyi-pay # 支付接口配置
-│
-├── ruoyi-plugins # 扩展功能
-│
-├── ruoyi-system # 系统管理模块
-│ ├── src
-│ │ ├── main
-│ │ │ ├── java # 框架相关的Java源码
-│ │ │ └── resources # 框架相关的资源文件
-│ └── pom.xml # Maven依赖管理
-└── sql # 数据库脚本目录
-```
diff --git a/RuoYi-Geek-SpringBoot3/images/captcha-imag.png b/RuoYi-Geek-SpringBoot3/images/captcha-imag.png
new file mode 100644
index 0000000000000000000000000000000000000000..8f9904cdf98ede6a537f17467cc9e78fb60e29f9
Binary files /dev/null and b/RuoYi-Geek-SpringBoot3/images/captcha-imag.png differ
diff --git a/RuoYi-Geek-SpringBoot3/images/captcha-request.png b/RuoYi-Geek-SpringBoot3/images/captcha-request.png
new file mode 100644
index 0000000000000000000000000000000000000000..fa082614b11e0be54380d6a8acd505fa849290b7
Binary files /dev/null and b/RuoYi-Geek-SpringBoot3/images/captcha-request.png differ
diff --git a/RuoYi-Geek-SpringBoot3/images/del.png b/RuoYi-Geek-SpringBoot3/images/del.png
new file mode 100644
index 0000000000000000000000000000000000000000..e911b4372e9db488e060438d42ba3f0d0155e5d3
Binary files /dev/null and b/RuoYi-Geek-SpringBoot3/images/del.png differ
diff --git a/RuoYi-Geek-SpringBoot3/images/details.png b/RuoYi-Geek-SpringBoot3/images/details.png
new file mode 100644
index 0000000000000000000000000000000000000000..8b03d1da7224856100d99e96e0499df5d4214199
Binary files /dev/null and b/RuoYi-Geek-SpringBoot3/images/details.png differ
diff --git a/RuoYi-Geek-SpringBoot3/images/get.png b/RuoYi-Geek-SpringBoot3/images/get.png
new file mode 100644
index 0000000000000000000000000000000000000000..bcba3a2b7d6cce6e93309e88ec08e05580fd8a36
Binary files /dev/null and b/RuoYi-Geek-SpringBoot3/images/get.png differ
diff --git a/RuoYi-Geek-SpringBoot3/images/getInfo-request.png b/RuoYi-Geek-SpringBoot3/images/getInfo-request.png
new file mode 100644
index 0000000000000000000000000000000000000000..cd6252a33b2a069406e575acf3db25f7a721db4e
Binary files /dev/null and b/RuoYi-Geek-SpringBoot3/images/getInfo-request.png differ
diff --git a/RuoYi-Geek-SpringBoot3/images/list1.png b/RuoYi-Geek-SpringBoot3/images/list1.png
new file mode 100644
index 0000000000000000000000000000000000000000..6e3706d1bfbbfb20a236a793a3c253294ca3fbec
Binary files /dev/null and b/RuoYi-Geek-SpringBoot3/images/list1.png differ
diff --git a/RuoYi-Geek-SpringBoot3/images/login-request.png b/RuoYi-Geek-SpringBoot3/images/login-request.png
new file mode 100644
index 0000000000000000000000000000000000000000..b3434e9ac535170996894de586c5a9e3ed1fca9f
Binary files /dev/null and b/RuoYi-Geek-SpringBoot3/images/login-request.png differ
diff --git a/RuoYi-Geek-SpringBoot3/images/post.png b/RuoYi-Geek-SpringBoot3/images/post.png
new file mode 100644
index 0000000000000000000000000000000000000000..1dbd07e6417676744e3ab043d97c1171923d105d
Binary files /dev/null and b/RuoYi-Geek-SpringBoot3/images/post.png differ
diff --git a/RuoYi-Geek-SpringBoot3/images/post1.png b/RuoYi-Geek-SpringBoot3/images/post1.png
new file mode 100644
index 0000000000000000000000000000000000000000..4ff42f91aba652916a7d3ccb057df3d683f3883c
Binary files /dev/null and b/RuoYi-Geek-SpringBoot3/images/post1.png differ
diff --git a/RuoYi-Geek-SpringBoot3/images/sysdept1.png b/RuoYi-Geek-SpringBoot3/images/sysdept1.png
new file mode 100644
index 0000000000000000000000000000000000000000..fe93e9a812faf011d4cf6e6301d775022e2fbf7a
Binary files /dev/null and b/RuoYi-Geek-SpringBoot3/images/sysdept1.png differ
diff --git a/RuoYi-Geek-SpringBoot3/images/update.png b/RuoYi-Geek-SpringBoot3/images/update.png
new file mode 100644
index 0000000000000000000000000000000000000000..0e9b2996d26d0598fded75f447c53f5daea8f645
Binary files /dev/null and b/RuoYi-Geek-SpringBoot3/images/update.png differ
diff --git "a/RuoYi-Geek-SpringBoot3/images/\346\216\222\351\231\244.png" "b/RuoYi-Geek-SpringBoot3/images/\346\216\222\351\231\244.png"
new file mode 100644
index 0000000000000000000000000000000000000000..b81f60d47b3925763f353d27daf543c02b3a79b2
Binary files /dev/null and "b/RuoYi-Geek-SpringBoot3/images/\346\216\222\351\231\244.png" differ
diff --git "a/RuoYi-Geek-SpringBoot3/images/\346\265\201\347\250\213\345\233\2761.png" "b/RuoYi-Geek-SpringBoot3/images/\346\265\201\347\250\213\345\233\2761.png"
new file mode 100644
index 0000000000000000000000000000000000000000..18618bf1a59573dd8d4ec0ec1dd9744ca96e3636
Binary files /dev/null and "b/RuoYi-Geek-SpringBoot3/images/\346\265\201\347\250\213\345\233\2761.png" differ
diff --git "a/RuoYi-Geek-SpringBoot3/\345\220\216\347\253\257\351\203\250\351\227\250\346\225\260\346\215\256\345\244\204\347\220\206-x.md" "b/RuoYi-Geek-SpringBoot3/\345\220\216\347\253\257\351\203\250\351\227\250\346\225\260\346\215\256\345\244\204\347\220\206-x.md"
new file mode 100644
index 0000000000000000000000000000000000000000..781fb3ac6109208a940c85a0391549b13c5eba54
--- /dev/null
+++ "b/RuoYi-Geek-SpringBoot3/\345\220\216\347\253\257\351\203\250\351\227\250\346\225\260\346\215\256\345\244\204\347\220\206-x.md"
@@ -0,0 +1,80 @@
+# 控制类SysDeptController(用于处理与部门信息相关的前端数据处理请求)
+
+
+
+## GET请求处理
+
+### 获取部门列表
+
+
+```
+List depts = deptService.selectDeptList(dept);//调用服务层的方法,获取部门列表。
+```
+
+### 查询部门列表(排除节点)
+
+
+```
+List depts = deptService.selectDeptList(new SysDept()); //调用服务层的方法,获取所有部门列表。
+
+depts.removeIf(...) //从部门列表中移除指定的部门及其子部门。
+
+```
+
+### 根据部门编号获取详细信息
+
+
+```
+deptService.checkDeptDataScope(deptId) // 检查当前用户是否有权限访问该部门的数据。
+
+return success(deptService.selectDeptById(deptId)) // 返回一个包含指定部门详细信息的AjaxResult对象。
+```
+
+ ## POST请求处理
+
+ ### 新增部门
+
+
+```
+deptService.checkDeptNameUnique(dept) //检查部门名称是否唯一。
+
+dept.setCreateBy(getUsername()) //设置部门名称。
+
+return toAjax(deptService.insertDept(dept)) //返回一个包含新增结果的AjaxResult对象。
+```
+
+ ## PUT请求处理
+
+ ### 修改部门
+
+
+```
+deptService.checkDeptDataScope(deptId) //检查当前用户是否有权限访问该部门的数据。
+
+deptService.checkDeptNameUnique(dept) // 检查部门名称是否唯一。
+
+dept.getParentId().equals(deptId) //检查上级部门是否是自己。
+
+StringUtils.equals(UserConstants.DEPT_DISABLE, dept.getStatus()) // 检查部门状态是否为禁用。
+
+deptService.selectNormalChildrenDeptById(deptId) > 0 // 检查该部门是否有未停用的子部门。
+
+dept.setUpdateBy(getUsername()) // 设置部门名称。
+
+return toAjax(deptService.updateDept(dept)) //返回一个包含修改结果的AjaxResult对象。
+```
+
+## DELETE请求处理
+
+### 删除部门
+
+
+```
+deptService.hasChildByDeptId(deptId) // 检查该部门是否有子部门。
+
+deptService.checkDeptExistUser(deptId) // 检查该部门是否有用户。
+
+deptService.checkDeptDataScope(deptId) // 检查当前用户是否有权限访问该部门的数据。
+
+return toAjax(deptService.deleteDeptById(deptId)) // 返回一个包含删除结果的AjaxResult对象。
+```
\ No newline at end of file
diff --git "a/RuoYi-Geek-Vue3/RuoYi-Geek-Vue3\345\277\253\351\200\237\345\220\257\345\212\250.md" "b/RuoYi-Geek-Vue3/1.\347\256\200\344\273\213.md"
similarity index 49%
rename from "RuoYi-Geek-Vue3/RuoYi-Geek-Vue3\345\277\253\351\200\237\345\220\257\345\212\250.md"
rename to "RuoYi-Geek-Vue3/1.\347\256\200\344\273\213.md"
index e78e7e7d0f97f5355894266b62a303d326e22a01..55c4553fb9b3f488a5a8f53c1201d25c89d8bd5a 100644
--- "a/RuoYi-Geek-Vue3/RuoYi-Geek-Vue3\345\277\253\351\200\237\345\220\257\345\212\250.md"
+++ "b/RuoYi-Geek-Vue3/1.\347\256\200\344\273\213.md"
@@ -1,33 +1,8 @@
-# 当前版本是3.8.7.3
+# 简介
-本人的其他两个推荐搭配的项目
+本框架为我们生态前端的Vue3版本。目前新增了threejs支持,并配合若依极客生态框架后端的Springboot 3版本,该版本在支付模块和第三方登录模块方面进行了基础设计工作,并针对代码生成器进行了显著增强,现在支持字段级别的关联表操作。此外,我们新增了在线接口开发模块,该模块允许用户通过在线方式使用mybatis来修改接口。其他功能模块也正在持续更新和完善中。
-1. [RuoYi-App-Geek: 这是若依极客生态的小程序版本 (gitee.com)](https://gitee.com/geek-xd/geek-uniapp-vue3-uview-plus-uchart)
-2. [RuoYi-SpringBoot3-Geek: 这是若依极客生态的SpringBoot3版本 (gitee.com)](https://gitee.com/geek-xd/ruoyi-spring-boot3-geek.git)
-
-与本项目同为一个作者开发,兼容性最好,学习成本最低
-
-## 前端运行
-
-```bash
-# 克隆项目
-git clone https://gitee.com/geek-xd/ruoyi-geek-vue3.git
-
-# 进入项目目录
-cd RuoYi-Vue3
-
-# 安装依赖
-yarn --registry=https://registry.npmmirror.com
-
-# 启动服务
-yarn dev
-
-# 构建测试环境 yarn build:stage
-# 构建生产环境 yarn build:prod
-# 前端访问地址 http://localhost:80
-```
-
-## 内置功能
+# 内置功能
1. 用户管理:用户是系统操作者,该功能主要完成系统用户配置。
2. 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。
@@ -48,7 +23,7 @@ yarn dev
17. 在线构建器:拖动表单元素生成相应的HTML代码。
18. 连接池监视:监视当前系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。
-### 新加功能和增强功能演示
+# 增强功能演示
@@ -64,39 +39,3 @@ yarn dev
 |
-
-# 联系我们:
-
-### 技术交流群 QQ:744785891
-
-欢迎所有对 RuoYi-Geek 感兴趣的开发者加入我们的社区😆!
-
-
-
-### 商业合作😆
-
-我们欢迎各类商业合作机会,无论是技术咨询、项目合作还是其他形式的合作,都期待与您携手共创未来。
-如果您有兴趣,请通过以下方式联系我们:
-
-
-
-
- QQ
- QQ号:2086232477
- |
-
- 微信
- 微信号:tantianming000
- |
-
-
-
-
- |
-
-
- |
-
-
-
-我们期待着与您建立长期稳定的合作关系,并共同探索更多的可能性。
diff --git "a/RuoYi-Geek-Vue3/2.\345\277\253\351\200\237\345\220\257\345\212\250.md" "b/RuoYi-Geek-Vue3/2.\345\277\253\351\200\237\345\220\257\345\212\250.md"
new file mode 100644
index 0000000000000000000000000000000000000000..593a3cddcb29a2d0ce34c869f8703dd816d85439
--- /dev/null
+++ "b/RuoYi-Geek-Vue3/2.\345\277\253\351\200\237\345\220\257\345\212\250.md"
@@ -0,0 +1,26 @@
+# 当前版本是3.8.7.3
+
+**搭配项目:**
+
+1. [RuoYi-App-Geek: 这是若依极客生态的小程序版本 (gitee.com)](https://gitee.com/geek-xd/geek-uniapp-vue3-uview-plus-uchart)
+2. [RuoYi-SpringBoot3-Geek: 这是若依极客生态的SpringBoot3版本 (gitee.com)](https://gitee.com/geek-xd/ruoyi-spring-boot3-geek.git)
+
+## 前端运行
+
+```bash
+# 克隆项目
+git clone https://gitee.com/geek-xd/ruoyi-geek-vue3.git
+
+# 进入项目目录
+cd ruoyi-geek-vue3
+
+# 安装依赖
+yarn --registry=https://registry.npmmirror.com
+
+# 启动服务
+yarn dev
+
+# 构建测试环境 yarn build:stage
+# 构建生产环境 yarn build:prod
+# 前端访问地址 http://localhost:80
+```
diff --git "a/RuoYi-Geek-Vue3/3.\351\241\271\347\233\256\347\273\223\346\236\204.md" "b/RuoYi-Geek-Vue3/3.\351\241\271\347\233\256\347\273\223\346\236\204.md"
new file mode 100644
index 0000000000000000000000000000000000000000..608ac44f75abb1946153265f5f9510b87bfc8d74
--- /dev/null
+++ "b/RuoYi-Geek-Vue3/3.\351\241\271\347\233\256\347\273\223\346\236\204.md"
@@ -0,0 +1,39 @@
+
+# RuoYi-Geek-Vue3项目结构
+
+```bash
+├── node_modules # 第三方依赖库
+├── public # 静态资源
+├── src # 源代码文件
+│ ├── annotation # TypeScript
+│ │ ├── Api.ts # API接口定义
+│ │ ├── Schema.ts # 数据模式定义
+│ │ └── SchemaComponent.ts # Schema组件定义
+│ ├── api # API请求
+│ │ ├── monitor # 监控API
+│ │ ├── online # 在线API
+│ │ ├── pay # 支付API
+│ │ └── system # 系统API
+│ │ └── tool # 工具
+│ │ ├── login.js # 登录
+│ │ └── menu.js # 菜单
+│ ├──assets # 静态资源
+│ ├──components # Vue组件
+│ ├── directive # 自定义指令
+│ ├── hook # Hook
+│ ├── layout # 布局
+│ ├── plugins # 插件
+│ ├── router # 路由
+│ ├── store # Vuex状态管理
+│ ├── types # 类型定义
+│ ├── utils # 工具函数
+│ └── views # 视图
+│ ├──App.vue # 主入口
+│ ├── env.d.ts # 环境类型
+│ ├── env.d.ts # 环境类型
+│ ├──main.js # 应用启动
+│ ├──permission.js # 权限
+│ ├── settings.ts # 设置
+└── vite # Vite插件配置
+
+```