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..b6e19b2cb9530d4d345bdaa971150ea0477c0b92 --- /dev/null +++ "b/RuoYi-Geek-App/1.\347\256\200\344\273\213.md" @@ -0,0 +1,44 @@ +# 项目简介 + +若依极客生态App版本是 RuoYi-App 框架的基础上进行了二次开发,采用了 Uniapp 结合 Vue3 的技术栈。它同时支持 JavaScript 和 TypeScript 开发,并且兼容 CSS、SCSS 以及 Less 样式语言。为了优化性能,我们已经对代码进行了初步的分包处理。此外,我们集成了 uview-plus、uchart和相关的模板供大家参考和使用。 + +# 主要特性 + +1. 使用 UniApp+Vue3 的最新框架 +2. 支持 TS、SCSS、LESS 等对 js 和 css 的扩充语言 +3. 使用 Pinia 代替 Vuex,更加轻巧简单 +4. 使用 uView-Plus(好看的 ui) 代替 uView-ui 的 ui 组件库 +5. 使用 uCharts(方便的图表)画图工具 +6. 已经完成了分包操作 +7. 提供了颜色选择器、二维码等常用组件 +8. 将原有内置工具进行类型标定 +9. 分别提供了 uview-plus 和 ucharts 的模板(可以直接使用或者用于学习) + +# 技术选型 + +**1、运行环境** + +* VSCode +* 微信开发者工具 + +**2、主框架** + +* uniapp +* vue +* uView-Plus + +# 内置功能 + +* 登录 +* 首页 +* 工作台 + * 用户管理 + * 角色管理 + * ........ +* 我的 + * 个人信息 + * 修改头像 + * 编辑资料 + * 常见问题 + * 关于我们 + * 应用设置 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..6bf07e61f69535f4d84388e353d23b23ef8aea9e --- /dev/null +++ "b/RuoYi-Geek-App/2.\345\277\253\351\200\237\345\220\257\345\212\250.md" @@ -0,0 +1,51 @@ +# 环境部署 + +``` +Node.js (版本 18+) +微信开发者工具 +``` + +# 迁移到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..901ddc973b70a7259332ba4bb041e8e8392320a5 --- /dev/null +++ "b/RuoYi-Geek-App/3.\351\241\271\347\233\256\347\273\223\346\236\204.md" @@ -0,0 +1,32 @@ +```plaintext +├── doc // 项目的文档目录,包含项目说明、API 文档等 +├── src // 项目的源代码目录 +│ ├── api // 存放 API 请求相关代码 +│ └── components // 存放可复用的 UI 组件 +│ └── directive // 存放指令相关代码 +│ └── pages // 存放各个页面的 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 // 工具类文件,存放通用函数 +├── package-lock.json // npm 包管理锁定文件 +├── package.json // 项目的 npm 配置文件 +``` 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/RuoYi-Geek-App\345\277\253\351\200\237\345\220\257\345\212\250.md" deleted file mode 100644 index 01295ac28a578ec7f23ff813979377ab93b73c7f..0000000000000000000000000000000000000000 --- "a/RuoYi-Geek-App/RuoYi-Geek-App\345\277\253\351\200\237\345\220\257\345\212\250.md" +++ /dev/null @@ -1,246 +0,0 @@ -# 快速开始 - -**注意:** 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. 颜色选择器组件 -2. 二维码组件 -3. 圆形菜单组件 -4. 常用的订单组件 -5. 信息展示组件 - -# 插件的使用 - -#### tab - 页面插件 - -可以通过设置参数中的 config.data 来实现页面传参 - -| 方法 | 作用 | 参数 | -| ------------ | ------------------------------------------------ | ----------- | -| getData | 可以拿到上个页面通过 tab 传递的参数 | 无 | -| reLaunch | 关闭所有页面,打开到应用内的某个页面 | url、config | -| switchTab | 跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面 | url、config | -| redirectTo | 关闭当前页面,跳转到应用内的某个页面 | url、config | -| navigateTo | 保留当前页面,跳转到应用内的某个页面 | url、config | -| navigateBack | 关闭当前页面,返回上一页面或多级页面 | config | - -#### auth - 鉴权插件 - -下面所有方法返回值都是布尔值,permission 代表权限字符串,role 代表角色字符串,复数形式代表数组。 - -| 方法 | 作用 | 参数 | -| ----------- | ------------------------------------------ | ----------- | -| hasPermi | 验证用户是否具备某权限 | permission | -| hasPermiOr | 验证用户是否含有指定权限,只需包含其中一个 | permissions | -| hasPermiAnd | 验证用户是否含有指定权限,必须全部拥有 | permissions | -| hasRole | 验证用户是否具备某角色 | role | -| hasRoleOr | 验证用户是否含有指定角色,只需包含其中一个 | roles | -| hasRoleAnd | roles | roles | - -#### modal - 弹窗插件 - -content 是消息内容,option 是详细配置。 - -| 方法 | 作用 | 参数 | -| ------------ | ------------------------------ | ------- | -| msg | 消息提示 | content | -| msgError | 错误消息 | content | -| msgSuccess | 成功消息 | content | -| hideMsg | 隐藏消息 | 无 | -| alert | 弹出提示 | content | -| confirm | 确认窗体 | content | -| showToast | 提示信息 | option | -| loading | 打开遮罩层,需要手动关闭遮罩层 | content | -| closeLoading | 关闭遮罩层 | 无 | - -#### bus - 事件插件 - -eventName 是事件名称,eventFun 是事件处理函数,请尽量避免事件插件的使用,请在组件销毁是解绑素有该组件有关的事件,避免产生 bug。 - -| 方法 | 作用 | 参数 | -| ----- | ------------ | ------------------- | -| $on | 绑定一个事件 | eventName、eventFun | -| $off | 解绑一个事件 | eventName | -| $emit | 触发一个事件 | eventName、...args | - -#### socket - -设置项 enableUUID,是否启用基于 uuid 的消息处理机制,要求当发送的消息携带 uuid 字段时,返回的消息也要携带 uuid 字段。 - -设置项 enableEvent,是否启用基于事件的消息处理机制,要求当希望被事件处理函数处理的消息需要携带 event 字段。 - -| 方法 | 作用 | 参数 | -| --------- | ----------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- | -| connect | 连接 websocke,当连接成功后触发回调函数 | 最简单的用法就是传入{url:"ws://demo"} | -| send | 发送信息,当 uuid 不为空且不为 false 时,当收到携带相同 uuid 的消息时触发回调函数,只触发一次。否则由默认处理函数处理。 | msg 消息内容,会被处理成 json 字符串 uuid 唯一标识符,可以手动传入,也可以设置为 true 当为 true 时会自动生成一个 uuid 并添加到 msg 中。 | -| close | 关闭连接,会触发回调函数的内容,不会触发默认关闭事件的处理函数,也不会修改默认关闭事件的处理函数。 | 无 | -| on | 监听事件,当收到携带 event 的消息时会调用回调函数。 | event 事件的名称 | -| off | 取消监听事件 | | -| onMessage | 定义默认监听事件 | callback 默认监听事件的处理函数 | -| onError | 定义异常事件 | callback 默认异常事件的处理函数 | -| onClose | 定义关闭事件 | callback 默认关闭事件的处理函数 | - -# 作者建议 - -### 对于选项式 - -```js -this.$tab; // 建议使用this.$tab进行页面跳转,理由:便于在跳转前处理其他事务 -this.$auth; // 建议使用this.$auth进行鉴权操作 -this.$modal; // 建议使用this.$modal打开弹窗,理由:便于以后想要使用自定义弹窗 -``` - -### 对于组合式 - -```js -import tab from "@/plugins/tab"; // 建议使用tab进行页面跳转,理由:便于在跳转前处理其他事务 -import auth from "@/plugins/auth"; // 建议使用auth进行鉴权操作 -import modal from "@/plugins/modal"; // 建议使用modal打开弹窗,理由:便于以后想要使用自定义弹窗 - -// 也可以使用下面的方式 -import { tab, auth, modal } from "@/plugins"; -``` - -### 对于 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
- QQ号:2086232477 -
- 微信
- 微信号:tantianming000 -
- QQ二维码 - - 微信二维码 -
- -我们期待着与您建立长期稳定的合作关系,并共同探索更多的可能性。 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..494dce65e580a63778e7fae42c93c9c7b062367c --- /dev/null +++ "b/RuoYi-Geek-Electron/1.\347\256\200\344\273\213.md" @@ -0,0 +1,20 @@ +# 简介 + +RuoYi-Geek-Electron 是一个专为现代化开发设计的桌面应用框架,它致力于将流行的 RuoYi-Geek-SpringBoot3 后端与 RuoYi-Geek-Vue3 前端无缝集成到一个易于使用的窗口应用程序环境中。通过使用 Electron 技术,RuoYi-Geek-Electron 为开发者提供了一套完整的解决方案,使得基于 RuoYi 框架构建的项目能够轻松地跨平台运行于 Windows、macOS 和 Linux 操作系统之上。 + +# 技术选型 + +**1.系统环境** +Node.js (版本 18+、20+) +electron (31.0.2) +typescript (5.5.2) + +**2. 主框架** +electron (31.0.2) +electron-builder (24.13.3) +electron-vite (2.3.0) +vite (5.3.1) + +**3. 视图层** +vue (3.4.30) +vue-tsc (2.0.22) 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 54% 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..9b3fcdd51454fb257521b47ac35b26703c5c86f7 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" @@ -2,7 +2,15 @@ RuoYi-Geek-Electron旨在为RuoYi-Geek-SpringBoot3与RuoYi-Geek-Vue3搭建一个舒适的窗口应用环境,并用装饰器简化开发。 -# 快速开始 +# 环境部署 + +```bash +Node.js (版本 18+、20+) +electron (31.0.2) +typescript (5.5.2) +``` + +# 快速启动 ```bash $ npm install @@ -99,38 +107,54 @@ xxWorkerRunner.bind('test3', test3) ``` -# 联系我们: - -### 技术交流群 QQ:744785891 - -欢迎所有对 RuoYi-Geek 感兴趣的开发者加入我们的社区😆! - -QQ二维码 - -### 商业合作😆 - -我们欢迎各类商业合作机会,无论是技术咨询、项目合作还是其他形式的合作,都期待与您携手共创未来。 -如果您有兴趣,请通过以下方式联系我们: - - - - - - - - - - -
- QQ
- QQ号:2086232477 -
- 微信
- 微信号:tantianming000 -
- QQ二维码 - - 微信二维码 -
- -我们期待着与您建立长期稳定的合作关系,并共同探索更多的可能性。 +# 在render下 绑定url 显示界面(以 "https://electron-vite.org/" 为例) + +1·修改App.vue + 确保加载的URL是"https://electron-vite.org/" + +``` + +
+ Documentation +
+``` + +2. 修改 `IndexWindow`类 + 确保 `IndexWindow`类链接到index.html + +``` +static onCreate(context: Electron.CrossProcessExports.BrowserWindow): void { + context.on('ready-to-show', () => { + context.show() + }) + + context.webContents.setWindowOpenHandler((details) => { + shell.openExternal(details.url) + return { action: 'deny' } + }) + if (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')) + } + } +} +``` + +3. 确保 `index.html`文件正确配置 + 确保 `index.html`文件中有一个 `
`元素,并且包含了加载 `main.ts`的脚本 + +``` + +
+ + +``` + +4. 确保Vue应用程序正确挂载 + 在 `main.ts`中,确保Vue应用程序挂载到 `index.html`中的 `#app`元素 + +``` +createApp(App).mount('#app') +``` 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..ba37b80a9b5c353d7c4e8744e440e149ffd8570d --- /dev/null +++ "b/RuoYi-Geek-Electron/3.\351\241\271\347\233\256\347\273\223\346\236\204.md" @@ -0,0 +1,24 @@ +# RuoYi-Geek-Electron项目结构 + +```plaintext +├── src //源代码(ts) +│ ├── main //主进程 +│ │ ├── annotation // 注解 +│ │ │ ├── BindMapping.ts //绑定映射 +│ │ │ └── WorkerRunner.ts //工作线程运行器 +│ │ └── utils //工具 +│ │ │ ├── common.ts // 常用工具函数 +│ │ │ ├── executeJavaScript.ts // 执行 JavaScript 代码的工具函数 +│ │ │ ├── execUtils.ts // 其他执行相关的工具函数 +│ │ │ ├── fileUtils.ts // 文件操作相关的工具函数 +│ │ │ ├── jsonUtils.ts // JSON 处理相关的工具函数 +│ │ │ └── puppeteer.ts // 使用 Puppeteer 库的相关代码 +│ │ └── window //窗口相关 +│ │ │ ├── BaseWindow.ts //基础窗口 +│ │ │ └── IndexWindow.ts //主窗口 +│ │ └── index.ts // 入口 +│ ├── preload //预加载 +│ └── renderer //渲染进程 +├── electron.vite.config.ts // Vite 配置文件 +└── package.json // 项目配置文件 +``` 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/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" deleted file mode 100644 index 48b9219bd8171c83575837e7944e8fdb42d1c02e..0000000000000000000000000000000000000000 --- "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" +++ /dev/null @@ -1,182 +0,0 @@ -# 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-Electron/image/2.\345\277\253\351\200\237\345\220\257\345\212\250/1737817317053.png" "b/RuoYi-Geek-Electron/image/2.\345\277\253\351\200\237\345\220\257\345\212\250/1737817317053.png" new file mode 100644 index 0000000000000000000000000000000000000000..1fd01cc0d253d8ff858d049882271bc2897d3502 Binary files /dev/null and "b/RuoYi-Geek-Electron/image/2.\345\277\253\351\200\237\345\220\257\345\212\250/1737817317053.png" differ 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..6fe0cfa82e883825b6b4525aa015608b790a3077 --- /dev/null +++ "b/RuoYi-Geek-SpringBoot3/1.\347\256\200\344\273\213.md" @@ -0,0 +1,121 @@ +# 简介 + +RuoYi-Geek-SpringBoot3 是基于Spring Boot 3 和 RuoYi-Geek 框架开发的开源项目,旨在提供一个高效、灵活、易用的后台管理系统解决方案。它结合了 RuoYi 的优秀特性和 Spring Boot 3 的新功能,适合快速开发企业级应用。 + +# 主要特性 + +完全响应式布局(支持电脑、平板、手机等所有主流设备) +强大的一键生成功能(包括控制器、模型、视图、菜单等) +支持多数据源,简单配置即可实现切换。 +支持按钮及数据权限,可自定义部门数据权限。 +对常用js插件进行二次封装,使js代码变得简洁,更加易维护 +完善的XSS防范及脚本过滤,彻底杜绝XSS攻击 +Maven多项目依赖,模块及插件分项目,尽量松耦合,方便模块升级、增减模块。 +国际化支持,服务端及客户端支持 +完善的日志记录体系简单注解即可实现 +支持服务监控,数据监控,缓存监控功能。 + +# 技术选型 + +**1. 系统环境** +java 17 +maven-jar-plugin 3.1.1 +Apache Maven 4.0.0 +httpclient 4.5.14 +commons.io 2.17.0 +commons.collections 3.2.2 + +**2. 主框架** +spring-boot 3.4.0 +org.springframework.boot:spring-boot-dependencies:3.4.0 +mybatis-spring-boot 3.0.3 +springdoc 2.1.0 +knife4j 2.1.0 + +**3. 持久层** +druid 1.2.23 +dynamic 3.5.2 +mysql 8.3.0 +jaxb-api 2.3.1 & jaxb 4.0.5 +oshi 6.6.5 +pagehelper.boot 2.1.0 +fastjson 2.0.53 +jackson 2.18.0 + +# 内置功能 + +1. 用户管理:用户是系统操作者,该功能主要完成系统用户配置。 +2. 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。 +3. 岗位管理:配置系统用户所属担任职务。 +4. 菜单管理:配置系统菜单,操作权限,按钮权限标识等。 +5. 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。 +6. 字典管理:对系统中经常使用的一些较为固定的数据进行维护。 +7. 参数管理:对系统动态配置常用参数。 +8. 通知公告:系统通知公告信息发布维护。 +9. 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。 +10. 登录日志:系统登录日志记录查询包含登录异常。 +11. 在线用户:当前系统中活跃用户状态监控。 +12. 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。 +13. 代码生成:前后端代码的生成(java、html、xml、sql)支持CRUD下载 。 +14. 系统接口:根据业务代码自动生成相关的api接口文档。 +15. 服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。 +16. 缓存监控:对系统的缓存信息查询,命令统计等。 +17. 在线构建器:拖动表单元素生成相应的HTML代码。 +18. 连接池监视:监视当前系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。 +19. 支付场景 +20. 第三方登录场景 +21. 中间件场景 + +# 平台简介 + +本平台是一套全部开源的快速开发平台,毫无保留给个人及企业免费使用。 + +* 前端采用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/2.\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" new file mode 100644 index 0000000000000000000000000000000000000000..b06c954649d183002fb62727810489e35e98a589 --- /dev/null +++ "b/RuoYi-Geek-SpringBoot3/2.\345\277\253\351\200\237\345\220\257\345\212\250.md" @@ -0,0 +1,100 @@ +# 准备工作 + +JDK >= 17 +Mysql (不限) +Maven 3.9.9(测试版本) +Redis >= 5.0 +Node >= 18 + +# 快速启动 + +## 项目下载到本地 + +利用git将项目从远程仓库拉取到本地,用VSCode打开文件夹 + +``` +git clone https://gitee.com/geek-xd/ruoyi-geek-springboot3.git +``` + +## 运行项目 + +打开项目运行\ruoyi-admin \src\main \java\com\ruoyi \RuoYiApplication.java,出现如下图表示启动成功。 + +ruoyi-geek-springboot3 + +# 必要配置 + +## 修改数据库配置 + +1./.vscode/setting.json ,按此路径,修改对应数据库端口号port、用户名username和密码password、数据库名称ry + +``` +"sqltools.connections": [ + { + "mysqlOptions": { + "authProtocol": "default", + "enableSsl": "Disabled" + }, + "previewLimit": 50, + "server": "localhost", + "port": 3306, + "driver": "MySQL", + "name": "localhost", + "database": "ry", + "username": "root", + "password": "123456" + } +``` + +2./rouyi-admin/src/resources/application-druid.yml ,按此路径,修改对应数据库用户名username和密码password、数据库名称ry + +``` +# 主库数据源 + MASTER: + url: jdbc:mysql://127.0.0.1/ry?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 + username: root + password: 123456 +``` + +## 修改服务器配置 + +编辑\ruoyi-admin \src\main \resources\application.yml + +``` +# 开发环境配置 +server: + # 服务器的HTTP端口,默认为8080 + port: 8080 + servlet: + # 应用的访问路径 + context-path: / +``` + +# 后端部署 + +## 打包工程文件 + +在ruoyi项目的bin目录下执行package.bat打包Web工程,生成war/jar包文件。 +然后会在项目下生成target文件夹包含war或jar + +``` +提示 +多模块版本会生成在ruoyi/ruoyi-admin模块下target文件夹 +``` + +## 部署工程文件 + +1、jar部署方式 +使用命令行执行:java –jar ruoyi.jar 或者执行脚本:/ruoyi-geek-springboot3-master/bin/run.bat + +2、war部署方式 +\pom.xml中的packaging修改为war,放入tomcat服务器webapps + +``` + war +``` + +``` +提示 +多模块版本在/ruoyi-admin模块下修改pom.xml +``` 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 75% 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..cfcfa5ed2d4393c58825655b154c786fb1f4befa 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,74 @@ - -# 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项目结构 + +```plaintext +├── vscode +│ ├── launch.json //配置调试会话 +│ └── settings.json //自定义 Visual Studio Code 设置 +├── ruoyi-admin // 管理后台模块 +│ ├── src/main +│ │ ├── java/com/ruoyi //项目的 Java 源代码 +│ │ │ └── web // Web 相关的 Java 类 +│ │ │ ├── RuoYiApplication.java //应用程序主类,用于启动应用程序。 +│ │ │ └── RuoYiServletInitializer.java //Servlet 初始化类 +│ │ └── resources //资源文件 +│ └── target //输出目录 +│ └── pom.xml //配置文件 +├── ruoyi-auth //认证模块 +├── ruoyi-common //公共模块 +│ ├── src/main/java/com/ruoyi/common +│ │ ├── annotation // 自定义注解 +│ │ ├── config // 配置类 +│ │ ├── constant // 常量类 +│ │ ├── core // 核心业务逻辑类 +│ │ ├── enums // 缓存枚举类 +│ │ ├── exception // 异常处理类 +│ │ ├── filter // 过滤器类 +│ │ ├── service // 服务层接口和实现类 +│ │ ├── utils // 工具类 +│ │ └── xss // 与跨站脚本(XSS)防护相关的类 +│ └── pom.xml //配置文件 +├── ruoyi-framework //框架模块 +│ ├── src/main/java/com/ruoyi/framework +│ │ ├── aspectj //AOP切面 +│ │ ├── config // 配置类 +│ │ ├── datasource // 数据源配置 +│ │ ├── interceptor // 拦截器 +│ │ ├── manager // 管理器 +│ │ ├── security // 安全配置 +│ │ └── web // Web 相关配置 +│ └── pom.xml //配置文件 +├── ruoyi-middleware //中间件模块 +│ ├── ruoyi-middleware-minio // MinIO存储服务 +│ ├── ruoyi-middleware-rabbitmq // 与RabbitMQ消息队列服务 +│ ├── ruoyi-middleware-redis // Redis缓存服务 +│ └── ruoyi-middleware-starter // 中间件启动器 +│ └── pom.xml //配置文件 +├── ruoyi-models //模型模块 +│ ├── ruoyi-generator // 代码生成器 +│ ├── ruoyi-models-starter // 模型启动器 +│ ├── ruoyi-online // 在线模块 +│ └── ruoyi-quartz // 定时任务 +│ └── pom.xml //配置文件 +├── ruoyi-pay //支付模块 +└── 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支持 +│ └── pom.xml //配置文件 +├── 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 脚本。 +└── pom.xml //配置文件 +``` 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/RuoYi-Geek-SpringBoot3\345\277\253\351\200\237\345\220\257\345\212\250.md" deleted file mode 100644 index a2da8e74900b411e82d8ad8f081dfbe1d439657b..0000000000000000000000000000000000000000 --- "a/RuoYi-Geek-SpringBoot3/RuoYi-Geek-SpringBoot3\345\277\253\351\200\237\345\220\257\345\212\250.md" +++ /dev/null @@ -1,63 +0,0 @@ -# 快速启动 - -## 项目下载到本地 - -利用git将项目从远程仓库拉取到本地,用VSCode打开文件夹 - -``` -git clone https://gitee.com/geek-xd/ruoyi-geek-springboot3.git -``` - -## 配置数据库 - -rouyi-geek-springboot3 —— rouyi-admin —— src ——resources —— application-druid.yml ,按此路径,修改对应数据库用户名username和密码password、数据库名称ry - -``` -# 主库数据源 - MASTER: - url: jdbc:mysql://127.0.0.1/ry?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 - username: root - password: 123456 -``` - -运行数据库文件,此过程会用到sql文件的存储地址,即rouyi-geek-springboot3 —— sql的路径 - -## 运行项目 - -VSCode中运行,出现RYGeek表示成功 - -# 联系我们: - -### 技术交流群 QQ:744785891 - -欢迎所有对 RuoYi-Geek 感兴趣的开发者加入我们的社区😆! - -QQ二维码 - -### 商业合作😆 - -我们欢迎各类商业合作机会,无论是技术咨询、项目合作还是其他形式的合作,都期待与您携手共创未来。 -如果您有兴趣,请通过以下方式联系我们: - - - - - - - - - - -
- QQ
- QQ号:2086232477 -
- 微信
- 微信号:tantianming000 -
- QQ二维码 - - 微信二维码 -
- -我们期待着与您建立长期稳定的合作关系,并共同探索更多的可能性。 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\210\220\345\212\237.png" "b/RuoYi-Geek-SpringBoot3/images/\346\210\220\345\212\237.png" new file mode 100644 index 0000000000000000000000000000000000000000..f4313d6bd95f27b6783586e3c245dba2a8e4ac0e Binary files /dev/null and "b/RuoYi-Geek-SpringBoot3/images/\346\210\220\345\212\237.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-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 38% 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..9b36aee86fb8f511bdd2ac4edd6e5280bffb49c2 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,30 @@ -# 当前版本是3.8.7.3 +# 项目简介 -本人的其他两个推荐搭配的项目 +本框架为基于SpringBoot3+Vue3前后端分离的Java快速开发框架。目前新增了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) +# 主要特性 -与本项目同为一个作者开发,兼容性最好,学习成本最低 +* 完全响应式布局(支持电脑、平板、手机等所有主流设备) +* 强大的一键生成功能(包括控制器、模型、视图、菜单等) +* 支持多数据源,简单配置即可实现切换。 +* 支持按钮及数据权限,可自定义部门数据权限。 +* 对常用js插件进行二次封装,使js代码变得简洁,更加易维护 +* 完善的XSS防范及脚本过滤,彻底杜绝XSS攻击 +* Maven多项目依赖,模块及插件分项目,尽量松耦合,方便模块升级、增减模块。 +* 国际化支持,服务端及客户端支持 +* 完善的日志记录体系简单注解即可实现 +* 支持服务监控,数据监控,缓存监控功能 +* 提供了多个常见业务模块简化开发,如:第三方认证模块、支付模块 -## 前端运行 +# 技术选型 -```bash -# 克隆项目 -git clone https://gitee.com/geek-xd/ruoyi-geek-vue3.git +* **前端框架** :采用高性能的渐进式JavaScript框架 ``Vue.js``,版本3.x,以构建用户界面。 +* **状态管理** :利用 ``Pinia``进行高效、灵活的全局状态管理,它为Vue应用提供了一个更简单直接的状态管理模式。 +* **HTTP客户端** :集成 ``Axios``作为Promise化的HTTP客户端,用于向外部服务发起请求并处理响应。 +* **UI组件库** :选用 ``Element Plus``,一个基于Vue 3.0的桌面端UI组件库,提供了丰富的组件来快速搭建美观的应用界面。 +* **构建工具** :使用 ``Vite``作为新一代的前端构建工具,凭借其快速冷启动和即时模块热替换(HMR)特性,显著提升开发效率。 -# 进入项目目录 -cd RuoYi-Vue3 - -# 安装依赖 -yarn --registry=https://registry.npmmirror.com - -# 启动服务 -yarn dev - -# 构建测试环境 yarn build:stage -# 构建生产环境 yarn build:prod -# 前端访问地址 http://localhost:80 -``` - -## 内置功能 +# 内置功能 1. 用户管理:用户是系统操作者,该功能主要完成系统用户配置。 2. 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。 @@ -47,56 +44,3 @@ yarn dev 16. 缓存监控:对系统的缓存信息查询,命令统计等。 17. 在线构建器:拖动表单元素生成相应的HTML代码。 18. 连接池监视:监视当前系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。 - -### 新加功能和增强功能演示 - - - - - - - - - - - - - - -
- -# 联系我们: - -### 技术交流群 QQ:744785891 - -欢迎所有对 RuoYi-Geek 感兴趣的开发者加入我们的社区😆! - -QQ二维码 - -### 商业合作😆 - -我们欢迎各类商业合作机会,无论是技术咨询、项目合作还是其他形式的合作,都期待与您携手共创未来。 -如果您有兴趣,请通过以下方式联系我们: - - - - - - - - - - -
- QQ
- QQ号:2086232477 -
- 微信
- 微信号:tantianming000 -
- QQ二维码 - - 微信二维码 -
- -我们期待着与您建立长期稳定的合作关系,并共同探索更多的可能性。 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..5f7765acb453a7cffdb06537f1abebd9b4c5d787 --- /dev/null +++ "b/RuoYi-Geek-Vue3/2.\345\277\253\351\200\237\345\220\257\345\212\250.md" @@ -0,0 +1,50 @@ +# 准备工作 + +``` +JDK >= 17 (推荐17版本) +Node >= 18 +``` + +# 运行系统 + +前往 `Gitee`下载页面([Geek-XD/RuoYi-Geek-Vue3 - 码云 - 开源中国 (gitee.com)](https://gitee.com/geek-xd/ruoyi-geek-vue3))下载解压到工作目录 + +## 前端运行 + +```bash +# 克隆项目 +git clone https://gitee.com/geek-xd/ruoyi-geek-vue3.git + +# 进入项目目录 +cd ruoyi-geek-vue3 + +# 安装依赖 +npm install --registry=https://registry.npmmirror.com + +# 启动服务 +yarn dev + +# 构建测试环境 yarn build:stage +# 构建生产环境 yarn build:prod +# 前端访问地址 http://localhost:80 +``` + +4、打开浏览器,输入:([http://localhost:80 ](http://localhost/)) 默认账户/密码 `admin/admin123`) +若能正确展示登录页面,并能成功登录,菜单及页面展示正常,则表明环境搭建成功 + + +# 前端部署 + +当项目开发完毕,只需要运行一行命令就可以打包你的应用 + +```bash +# 打包正式环境 +npm run build:prod + +# 打包预发布环境 +npm run build:stage +``` + +构建打包成功之后,会在根目录生成 `dist` 文件夹,里面就是构建打包好的文件,通常是 `***.js` 、`***.css`、`index.html` 等静态文件。 + +通常情况下 `dist` 文件夹的静态文件发布到你的 nginx 或者静态服务器即可,其中的 `index.html` 是后台服务的入口页面。 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..1959a2716dd0adfaac61ac5296424c112765f241 --- /dev/null +++ "b/RuoYi-Geek-Vue3/3.\351\241\271\347\233\256\347\273\223\346\236\204.md" @@ -0,0 +1,31 @@ +# RuoYi-Geek-Vue3项目结构 + +```plaintext +├── node_modules # 第三方依赖库 +├── public # 静态资源 +├── src # 源代码文件 +│ ├── annotation # TypeScript +│ │ ├── Api.ts # API接口定义 +│ │ ├── Schema.ts # 数据模式定义 +│ │ └── SchemaComponent.ts # Schema组件定义 +│ ├── api # API请求 +│ ├──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插件配置 + +```