Compare commits
130 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bd94a3eae8 | ||
|
|
fcdcf534f1 | ||
|
|
deefb6cc0b | ||
|
|
fa96c3d12f | ||
|
|
77069fdecd | ||
|
|
db4a264a52 | ||
|
|
70ae7ea8f1 | ||
|
|
6a93856d90 | ||
|
|
71cae94815 | ||
|
|
a2905d08f9 | ||
|
|
463ad6c583 | ||
|
|
abcde9e36e | ||
|
|
8e723f5b78 | ||
|
|
2021fb5071 | ||
|
|
ecbab7df7b | ||
|
|
d6fcaa0a11 | ||
|
|
58faded4ff | ||
|
|
7cc7af70f0 | ||
|
|
4312a729a2 | ||
|
|
5d972d66f4 | ||
|
|
1bff2791a6 | ||
|
|
a76769e540 | ||
|
|
bedffffd86 | ||
|
|
2884c37599 | ||
|
|
c25749c9ca | ||
|
|
147b3fd8f5 | ||
|
|
373424bd01 | ||
|
|
287a0b3d70 | ||
|
|
cd7e07bea6 | ||
|
|
7edfae09bc | ||
|
|
a1759ddf5a | ||
|
|
5517a5d19b | ||
|
|
8fb72ba4fe | ||
|
|
24511fac8f | ||
|
|
ce9f2a82da | ||
|
|
b81fb7cb3f | ||
|
|
676a63c0d6 | ||
|
|
427736271c | ||
|
|
c39dd7a917 | ||
|
|
c491a98dc7 | ||
|
|
2a4978c668 | ||
|
|
5b4eeee756 | ||
|
|
93ddcd53b1 | ||
|
|
0ee47a5c00 | ||
|
|
3ceef41ab0 | ||
|
|
57693059a1 | ||
|
|
d18e307e10 | ||
|
|
eed708c6d3 | ||
|
|
1093888889 | ||
|
|
e58a420f9f | ||
|
|
4a0c3d132a | ||
|
|
0d81aa640e | ||
|
|
951524bff7 | ||
|
|
c7d0e9337a | ||
|
|
6955f3c7dc | ||
|
|
a52b017e1a | ||
|
|
158a0190b5 | ||
|
|
096fc11313 | ||
|
|
e9ac795d23 | ||
|
|
32f1a6bab1 | ||
|
|
052069a2df | ||
|
|
e1c997883f | ||
|
|
031b7da198 | ||
|
|
931af963b1 | ||
|
|
f5fa7d5da8 | ||
|
|
c6ffbcb3cf | ||
|
|
05ae200ff5 | ||
|
|
e745f772ef | ||
|
|
584212c569 | ||
|
|
dc9bf3e25d | ||
|
|
da84a26c47 | ||
|
|
7d3282c347 | ||
|
|
4454be44c3 | ||
|
|
52e0feda01 | ||
|
|
c89f5d07fb | ||
|
|
778a7bc21b | ||
|
|
50f5f38996 | ||
|
|
32da85daab | ||
|
|
3666157d14 | ||
|
|
1a178d0ef8 | ||
|
|
b64b758263 | ||
|
|
a68c6481ba | ||
|
|
3cbacb5ed9 | ||
|
|
38667797d3 | ||
|
|
9a6acb84a4 | ||
|
|
e3c8a84849 | ||
|
|
cc349f5954 | ||
|
|
e4b78e0510 | ||
|
|
15c6cd272e | ||
|
|
1614eff008 | ||
|
|
c86e88ebd1 | ||
|
|
39ebd85f58 | ||
|
|
bde82fe516 | ||
|
|
2ca650db76 | ||
|
|
e3da640737 | ||
|
|
e1dea1d9e2 | ||
|
|
84b8d6f675 | ||
|
|
8563428bf9 | ||
|
|
7b3b727c0e | ||
|
|
08098ff3f3 | ||
|
|
fb492d41f3 | ||
|
|
9c2586ab43 | ||
|
|
1bddf5df3b | ||
|
|
57b2f833f8 | ||
|
|
7907cbeb7f | ||
|
|
9cfcdd2b9b | ||
|
|
980df20752 | ||
|
|
aa92d232bb | ||
|
|
81c0bb5738 | ||
|
|
1a645c6e10 | ||
|
|
731f6ceb6e | ||
|
|
8e21245348 | ||
|
|
936e157e4a | ||
|
|
256f72c487 | ||
|
|
009aa5f1a5 | ||
|
|
d22d2cb708 | ||
|
|
59104028b6 | ||
|
|
c2f6a8321a | ||
|
|
5476a4b0b7 | ||
|
|
cd490aa0e5 | ||
|
|
b1ff44df4b | ||
|
|
dc6d00f0fc | ||
|
|
990da8da6f | ||
|
|
8fc7ad0359 | ||
|
|
8a89d9eb9c | ||
|
|
abfa9ae97b | ||
|
|
bde2e8ff8e | ||
|
|
4d8eb1850f | ||
|
|
5aaa3a5662 | ||
|
|
8fec96f5b2 |
2
.gitignore
vendored
@@ -13,6 +13,8 @@ target/
|
|||||||
|
|
||||||
ruoyi-modules/ruoyi-generator/src/main/resources/vm/vben5
|
ruoyi-modules/ruoyi-generator/src/main/resources/vm/vben5
|
||||||
|
|
||||||
|
README.md
|
||||||
|
|
||||||
######################################################################
|
######################################################################
|
||||||
# IDE
|
# IDE
|
||||||
|
|
||||||
|
|||||||
153
README.md
@@ -34,6 +34,60 @@
|
|||||||
<a href="https://github.com/ageerle/ruoyi-ai/issues">提出新特性</a>
|
<a href="https://github.com/ageerle/ruoyi-ai/issues">提出新特性</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
## 快速启动
|
||||||
|
|
||||||
|
### 拉取镜像(最低配置2H2G):
|
||||||
|
```bash
|
||||||
|
script/deploy/deploy目录下执行: docker-compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
### 通过脚本启动(最低配置4H4G):
|
||||||
|
1. 确认系统内已经安装好以下软件
|
||||||
|
- docker
|
||||||
|
- docker-compose
|
||||||
|
- git
|
||||||
|
- unzip
|
||||||
|
|
||||||
|
2. **克隆项目**
|
||||||
|
```bash
|
||||||
|
git clone https://github.com/ageerle/ruoyi-ai
|
||||||
|
cd ruoyi-ai/script/deploy/one-step-script
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **启动部署脚本**
|
||||||
|
|
||||||
|
中文界面部署脚本(拉取gitee仓库):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./deploy-cn.sh
|
||||||
|
```
|
||||||
|
按照脚本提示一步步操作,如果是一台新服务器,选择默认配置,直接回车即可。
|
||||||
|
<img src="image/deploy-01.png" alt="drawing" style="width: 600px; height: 300px; border: 2px solid #ddd; border-radius: 8px; box-shadow: 0 4px 8px rgba(0,0,0,0.1);"/>
|
||||||
|
|
||||||
|
耐心等待安装完成...
|
||||||
|
|
||||||
|
英文界面部署脚本(拉取github仓库):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./deploy-en.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
4. 如果在执行部署脚本过程中不需要在本地重新构建编译服务软件包以及重新封装容器镜像,则需要在脚本交互提出以下问题时选择D按键进行直接部署,否则就会执行全新的编译构建及容器封装之后再执行部署:
|
||||||
|
```
|
||||||
|
已将模板文件复制到部署目录。
|
||||||
|
正在使用您的配置更新 .env 文件...
|
||||||
|
已使用您的配置更新 .env 文件。
|
||||||
|
正在使用您的配置更新 docker-compose.yaml 文件...
|
||||||
|
已使用您的配置更新 docker-compose.yaml 文件。
|
||||||
|
|
||||||
|
=== 构建或部署选项 ===
|
||||||
|
您想构建新镜像 (B) 还是直接使用现有镜像部署 (D)?[B/d]:
|
||||||
|
```
|
||||||
|
|
||||||
|
5. **访问应用界面**
|
||||||
|
- 用户界面:`http://your-server-ip:8081`
|
||||||
|
- 管理员界面:`http://your-server-ip:8082`
|
||||||
|
|
||||||
## 目录
|
## 目录
|
||||||
|
|
||||||
- [系统体验](#系统体验)
|
- [系统体验](#系统体验)
|
||||||
@@ -43,7 +97,6 @@
|
|||||||
- [项目演示](#项目演示)
|
- [项目演示](#项目演示)
|
||||||
- [管理端](#管理端)
|
- [管理端](#管理端)
|
||||||
- [用户端](#用户端)
|
- [用户端](#用户端)
|
||||||
- [小程序端](#小程序端)
|
|
||||||
- [开发环境](#开发环境)
|
- [开发环境](#开发环境)
|
||||||
- [项目结构](#项目结构)
|
- [项目结构](#项目结构)
|
||||||
- [ruoyi-ai](#ruoyi-ai)
|
- [ruoyi-ai](#ruoyi-ai)
|
||||||
@@ -58,45 +111,45 @@
|
|||||||
|
|
||||||
### 系统体验
|
### 系统体验
|
||||||
- 用户端:https://web.pandarobot.chat
|
- 用户端:https://web.pandarobot.chat
|
||||||
|
- 演示账号: demo 密码:demo123
|
||||||
- 管理端:https://admin.pandarobot.chat
|
- 管理端:https://admin.pandarobot.chat
|
||||||
|
- 演示账号: admin 密码:admin123
|
||||||
用户名: admin 密码:admin123
|
- 商业版:体验商业版请联系下方小助手获取演示地址(预计6月份上线)。
|
||||||
|
|
||||||
### 源码地址
|
### 源码地址
|
||||||
[1]github
|
[1]github
|
||||||
- 前端服务-用户端: https://github.com/ageerle/ruoyi-web
|
- 前端服务-用户端: https://github.com/ageerle/ruoyi-web
|
||||||
- 前端服务-管理端: https://github.com/ageerle/ruoyi-admin
|
- 前端服务-管理端: https://github.com/ageerle/ruoyi-admin
|
||||||
- 前端服务-小程序端: https://github.com/ageerle/ruoyi-uniapp
|
|
||||||
- 后端服务:https://github.com/ageerle/ruoyi-ai
|
- 后端服务:https://github.com/ageerle/ruoyi-ai
|
||||||
|
|
||||||
[2]gitee
|
[2]gitcode
|
||||||
- 前端服务-用户端: https://gitee.com/ageerle/ruoyi-web
|
|
||||||
- 前端服务-管理端: https://gitee.com/ageerle/ruoyi-admin
|
|
||||||
- 前端服务-小程序端: https://gitee.com/ageerle/ruoyi-uniapp
|
|
||||||
- 后端服务:https://gitee.com/ageerle/ruoyi-ai
|
|
||||||
|
|
||||||
[3]gitcode
|
|
||||||
- 前端服务-用户端:https://gitcode.com/ageerle/ruoyi-web
|
- 前端服务-用户端:https://gitcode.com/ageerle/ruoyi-web
|
||||||
- 前端服务-管理端: https://gitcode.com/ageerle/ruoyi-admin
|
- 前端服务-管理端: https://gitcode.com/ageerle/ruoyi-admin
|
||||||
- 前端服务-小程序端: https://gitcode.com/ageerle/ruoyi-uniapp
|
|
||||||
- 后端服务:https://gitcode.com/ageerle/ruoyi-ai
|
- 后端服务:https://gitcode.com/ageerle/ruoyi-ai
|
||||||
|
|
||||||
### 配套文档
|
### 配套文档
|
||||||
- 配套文档: https://doc.pandarobot.chat
|
- 配套文档: https://doc.pandarobot.chat
|
||||||
- 项目部署文档:https://doc.pandarobot.chat/guide/introduction/
|
- 项目部署文档:https://doc.pandarobot.chat/guide/introduction/
|
||||||
|
|
||||||
### 核心功能
|
### 核心功能与技术亮点
|
||||||
1. 全套开源系统:提供完整的前端应用、后台管理以及小程序应用,基于MIT协议,开箱即用。
|
#### 1. 全栈式开源系统
|
||||||
2. 本地RAG方案:集成Milvus/Weaviate向量库、本地向量化模型与Ollama,实现本地化RAG。
|
- 全套开源系统:提供完整的前端应用、后台管理,基于MIT协议,开箱即用。
|
||||||
3. 丰富插件功能:支持联网、SQL查询插件及Text2API插件,扩展系统能力与应用场景。
|
#### 2. 本地化 RAG 方案
|
||||||
4. 内置SSE、websocket等网络协议,支持对接多种大语言模型,同时还集成了MidJourney和DALLE AI绘画功能。
|
- 基于 **Langchain4j** 框架,支持 Milvus/Weaviate/Qdrant 向量库,结合 BGE-large-zh-v1.5 本地向量化模型 实现高效文档检索与知识库构建。
|
||||||
5. 强大的多媒体功能:支持AI翻译、PPT制作、语音克隆和翻唱等。
|
- 支持 本地 LLM 接入,结合私有知识库实现安全可控的问答系统,避免依赖云端服务的隐私风险。
|
||||||
6. 扩展功能:支持将大模型接入个人或企业微信。
|
#### 3. 多模态 AI 引擎与工具集成
|
||||||
7. 支付功能:支持易支付、微信支付等多种支付方式。
|
- 智能对话:支持 OpenAI GPT-4、Azure、ChatGLM 等主流模型,内置 SSE/WebSocket 协议实现低延迟交互,兼容 **扣子**、**DIFY** 等平台 API 调用。
|
||||||
|
- **Spring AI MCP** 支持:通过注解快速定义本地工具,支持调用 MCP 广场 的海量 MCP Server 服务,扩展模型能力边界。
|
||||||
|
#### 4. 企业级扩展与商业化支持
|
||||||
|
- 即时通讯集成:支持对接个人微信、企业微信及微信公众号,实现消息自动回复、用户管理与智能客服。
|
||||||
|
- 支付系统:集成易支付、微信支付、Stripe 国际信用卡支付,满足商业化场景需求。
|
||||||
|
#### 5. 多媒体处理与创新功能
|
||||||
|
- AI 绘画:集成 DALL·E-3、MidJourney、Stable Diffusion,支持文生图、图生图及风格化创作,适用于营销素材生成与创意设计。
|
||||||
|
- PPT 制作:根据文本输入自动生成结构化幻灯片,支持自定义模板(需要使用三方平台 如:文多多)。
|
||||||
|
|
||||||
### 项目演示
|
### 项目演示
|
||||||
|
|
||||||
#### mcp支持(需要切换dev分支 下周发布正式版)
|
#### mcp支持
|
||||||
<div style="display: flex; flex-wrap: wrap; gap: 20px; justify-content: center;">
|
<div style="display: flex; flex-wrap: wrap; gap: 20px; justify-content: center;">
|
||||||
<img src="image/mcp-01.png" alt="drawing" style="width: 600px; height: 300px; border: 2px solid #ddd; border-radius: 8px; box-shadow: 0 4px 8px rgba(0,0,0,0.1);"/>
|
<img src="image/mcp-01.png" alt="drawing" style="width: 600px; height: 300px; border: 2px solid #ddd; border-radius: 8px; box-shadow: 0 4px 8px rgba(0,0,0,0.1);"/>
|
||||||
<img src="image/mcp-02.png" alt="drawing" style="width: 600px; height: 300px; border: 2px solid #ddd; border-radius: 8px; box-shadow: 0 4px 8px rgba(0,0,0,0.1);"/>
|
<img src="image/mcp-02.png" alt="drawing" style="width: 600px; height: 300px; border: 2px solid #ddd; border-radius: 8px; box-shadow: 0 4px 8px rgba(0,0,0,0.1);"/>
|
||||||
@@ -104,14 +157,6 @@
|
|||||||
<img src="image/mcp-04.png" alt="drawing" style="width: 600px; height: 300px; border: 2px solid #ddd; border-radius: 8px; box-shadow: 0 4px 8px rgba(0,0,0,0.1);"/>
|
<img src="image/mcp-04.png" alt="drawing" style="width: 600px; height: 300px; border: 2px solid #ddd; border-radius: 8px; box-shadow: 0 4px 8px rgba(0,0,0,0.1);"/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
#### 管理端
|
|
||||||
<div style="display: flex; flex-wrap: wrap; gap: 20px; justify-content: center;">
|
|
||||||
<img src="image/02.png" alt="drawing" style="width: 600px; height: 300px; border: 2px solid #ddd; border-radius: 8px; box-shadow: 0 4px 8px rgba(0,0,0,0.1);"/>
|
|
||||||
<img src="image/03.png" alt="drawing" style="width: 600px; height: 300px; border: 2px solid #ddd; border-radius: 8px; box-shadow: 0 4px 8px rgba(0,0,0,0.1);"/>
|
|
||||||
<img src="image/04.png" alt="drawing" style="width: 600px; height: 300px; border: 2px solid #ddd; border-radius: 8px; box-shadow: 0 4px 8px rgba(0,0,0,0.1);"/>
|
|
||||||
<img src="image/05.png" alt="drawing" style="width: 600px; height: 300px; border: 2px solid #ddd; border-radius: 8px; box-shadow: 0 4px 8px rgba(0,0,0,0.1);"/>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
#### 用户端
|
#### 用户端
|
||||||
<div style="display: flex; flex-wrap: wrap; gap: 20px; justify-content: center;">
|
<div style="display: flex; flex-wrap: wrap; gap: 20px; justify-content: center;">
|
||||||
@@ -121,12 +166,15 @@
|
|||||||
<img src="image/11.png" alt="drawing" style="width: 600px; height: 300px; border: 2px solid #ddd; border-radius: 8px; box-shadow: 0 4px 8px rgba(0,0,0,0.1);"/>
|
<img src="image/11.png" alt="drawing" style="width: 600px; height: 300px; border: 2px solid #ddd; border-radius: 8px; box-shadow: 0 4px 8px rgba(0,0,0,0.1);"/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
#### 小程序端
|
#### 管理端
|
||||||
<div style="display: flex; flex-wrap: wrap; gap: 20px; justify-content: flex-start;">
|
<div style="display: flex; flex-wrap: wrap; gap: 20px; justify-content: center;">
|
||||||
<img src="image/06.png" alt="drawing" style="width: 320px; height: 600px; border: 2px solid #ddd; border-radius: 8px; box-shadow: 0 4px 8px rgba(0,0,0,0.1);"/>
|
<img src="image/02.png" alt="drawing" style="width: 600px; height: 300px; border: 2px solid #ddd; border-radius: 8px; box-shadow: 0 4px 8px rgba(0,0,0,0.1);"/>
|
||||||
<img src="image/07.png" alt="drawing" style="width: 320px; height: 600px; border: 2px solid #ddd; border-radius: 8px; box-shadow: 0 4px 8px rgba(0,0,0,0.1);"/>
|
<img src="image/03.png" alt="drawing" style="width: 600px; height: 300px; border: 2px solid #ddd; border-radius: 8px; box-shadow: 0 4px 8px rgba(0,0,0,0.1);"/>
|
||||||
|
<img src="image/04.png" alt="drawing" style="width: 600px; height: 300px; border: 2px solid #ddd; border-radius: 8px; box-shadow: 0 4px 8px rgba(0,0,0,0.1);"/>
|
||||||
|
<img src="image/05.png" alt="drawing" style="width: 600px; height: 300px; border: 2px solid #ddd; border-radius: 8px; box-shadow: 0 4px 8px rgba(0,0,0,0.1);"/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
### 开发环境
|
### 开发环境
|
||||||
|
|
||||||
1. jdk 17
|
1. jdk 17
|
||||||
@@ -194,7 +242,6 @@
|
|||||||
### 注意事项
|
### 注意事项
|
||||||
- vben模板
|
- vben模板
|
||||||
|
|
||||||
|
|
||||||
Q:vben5 的模板默认是没有的吗?
|
Q:vben5 的模板默认是没有的吗?
|
||||||
|
|
||||||
A:vben模板是收费的 请联系vben-vue-plus作者获取。
|
A:vben模板是收费的 请联系vben-vue-plus作者获取。
|
||||||
@@ -204,7 +251,6 @@
|
|||||||
该项目使用Git进行版本管理。您可以在repository参看当前可用版本。
|
该项目使用Git进行版本管理。您可以在repository参看当前可用版本。
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### 版权说明
|
### 版权说明
|
||||||
|
|
||||||
该项目使用了MIT授权许可,详情请参阅 [LICENSE.txt](https://github.com/ageerle/ruoyi-ai/blob/main/LICENSE)
|
该项目使用了MIT授权许可,详情请参阅 [LICENSE.txt](https://github.com/ageerle/ruoyi-ai/blob/main/LICENSE)
|
||||||
@@ -215,9 +261,12 @@
|
|||||||
|
|
||||||
### 开发计划
|
### 开发计划
|
||||||
|
|
||||||
- 流程编排
|
| 主题 | 方向 | 时间节点 |
|
||||||
|
| --- |-----------------------------------|--------|
|
||||||
|
| 前端简化版 | 与element-plus-x框架合作,推出基于该框架的前端简化版 | 2025.5 |
|
||||||
|
| agent2agent | Agent2Agent协议支持 | 2025.6 |
|
||||||
|
| 流程编排 | 通过可视化界面和灵活的配置方式,快速构建AI应用 | 2025.7 |
|
||||||
|
|
||||||
通过流程编排功能,用户可以将不同的模型按照业务逻辑进行有序连接。这将解决单一模型能力不足的问题,充分发挥多个模型的协同作用,从而更好地满足企业的复杂业务需求。
|
|
||||||
|
|
||||||
- 感谢
|
- 感谢
|
||||||
|
|
||||||
@@ -238,7 +287,7 @@
|
|||||||
|
|
||||||
#### 项目文档
|
#### 项目文档
|
||||||
1. 项目文档基于vitepress构建
|
1. 项目文档基于vitepress构建
|
||||||
2. 按照[如何参与开源项目](#如何参与开源项目)拉取 https://github.com/ageerle/ruoyi-doc
|
2. 按照[如何参与开源项目](#如何参与开源项目)拉取https://github.com/ageerle/ruoyi-doc
|
||||||
3. 安装依赖:npm install
|
3. 安装依赖:npm install
|
||||||
4. 启动项目:npm run docs:dev
|
4. 启动项目:npm run docs:dev
|
||||||
5. 主页路径:docs/guide/introduction/index.md
|
5. 主页路径:docs/guide/introduction/index.md
|
||||||
@@ -264,24 +313,24 @@
|
|||||||
[license-url]: https://github.com/ageerle/ruoyi-ai/blob/master/LICENSE.txt
|
[license-url]: https://github.com/ageerle/ruoyi-ai/blob/master/LICENSE.txt
|
||||||
[linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?style=flat-square&logo=linkedin&colorB=555
|
[linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?style=flat-square&logo=linkedin&colorB=555
|
||||||
|
|
||||||
|
## 🌿 第三方生态
|
||||||
|
- [PPIO 派欧云:一键调用高性价比的开源模型 API 和 GPU 容器](https://ppinfra.com/user/register?invited_by=P8QTUY&utm_source=github_ruoyi-ai)
|
||||||
|
|
||||||
### 附:技术讨论群
|
### 附:技术讨论群
|
||||||
|
|
||||||
#### 全面开放,欢迎加入
|
#### 技术交流(如需进群请添加小助手)
|
||||||
🏠 wx:ruoyi-ai(加人备注:ruoyi-ai)
|
|
||||||
|
|
||||||
🏠 qq:1603234088 (加人备注:ruoyi-ai)
|
|
||||||
|
|
||||||
👏👏👏 ruoyi-ai官方交流1群(qq区):1034554687
|
|
||||||
|
|
||||||
<div style="display: flex; flex-wrap: wrap; gap: 20px; justify-content: center;">
|
<div style="display: flex; flex-wrap: wrap; gap: 20px; justify-content: center;">
|
||||||
<img src="image/QQ区-官方交流1群.png" alt="drawing" style="width: 400px; height: 400px; border: 2px solid #ddd; border-radius: 8px; box-shadow: 0 4px 8px rgba(0,0,0,0.1);"/>
|
<img src="image/wx.png" alt="drawing" style="width: 400px; height: 400px; border: 2px solid #ddd; border-radius: 8px; box-shadow: 0 4px 8px rgba(0,0,0,0.1);"/>
|
||||||
</div>
|
|
||||||
|
|
||||||
👏👏👏 ruoyi-ai官方交流4群(微信区):
|
|
||||||
<div style="display: flex; flex-wrap: wrap; gap: 20px; justify-content: center;">
|
|
||||||
<img src="image/WX区-官方交流4群.jpg" alt="drawing" style="width: 400px; height: 400px; border: 2px solid #ddd; border-radius: 8px; box-shadow: 0 4px 8px rgba(0,0,0,0.1);"/>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
#### 进群学习
|
||||||
|
🏠 小助手wx:ruoyi-ai(加人备注:ruoyi-ai)
|
||||||
|
🏠 小助手qq:1603234088 (加人备注:ruoyi-ai)
|
||||||
|
|
||||||
|
👏👏👏 ruoyi-ai官方交流群(qq区)
|
||||||
|
|
||||||
|
<div style="display: flex; flex-wrap: wrap; gap: 20px; justify-content: center;">
|
||||||
|
<img src="image/qq.png" alt="drawing" style="width: 400px; height: 400px; border: 2px solid #ddd; border-radius: 8px; box-shadow: 0 4px 8px rgba(0,0,0,0.1);"/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|||||||
BIN
image/08.png
|
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 1.5 MiB |
BIN
image/09.png
|
Before Width: | Height: | Size: 100 KiB After Width: | Height: | Size: 148 KiB |
BIN
image/10.png
|
Before Width: | Height: | Size: 65 KiB After Width: | Height: | Size: 72 KiB |
BIN
image/11.png
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 563 KiB |
|
Before Width: | Height: | Size: 214 KiB |
|
Before Width: | Height: | Size: 310 KiB |
BIN
image/deploy-01.png
Normal file
|
After Width: | Height: | Size: 108 KiB |
BIN
image/mcp-01.png
|
Before Width: | Height: | Size: 181 KiB After Width: | Height: | Size: 227 KiB |
BIN
image/qq.png
Normal file
|
After Width: | Height: | Size: 392 KiB |
BIN
image/wx-msg.png
|
Before Width: | Height: | Size: 104 KiB |
|
Before Width: | Height: | Size: 148 KiB |
BIN
image/wx.png
Normal file
|
After Width: | Height: | Size: 144 KiB |
13
pom.xml
@@ -20,7 +20,7 @@
|
|||||||
<java.version>17</java.version>
|
<java.version>17</java.version>
|
||||||
<mysql.version>8.0.33</mysql.version>
|
<mysql.version>8.0.33</mysql.version>
|
||||||
<mybatis.version>3.5.16</mybatis.version>
|
<mybatis.version>3.5.16</mybatis.version>
|
||||||
<springdoc.version>2.1.0</springdoc.version>
|
<springdoc.version>2.8.5</springdoc.version>
|
||||||
<therapi-javadoc.version>0.15.0</therapi-javadoc.version>
|
<therapi-javadoc.version>0.15.0</therapi-javadoc.version>
|
||||||
<poi.version>5.2.3</poi.version>
|
<poi.version>5.2.3</poi.version>
|
||||||
<easyexcel.version>3.2.1</easyexcel.version>
|
<easyexcel.version>3.2.1</easyexcel.version>
|
||||||
@@ -54,10 +54,6 @@
|
|||||||
<maven-compiler-plugin.verison>3.11.0</maven-compiler-plugin.verison>
|
<maven-compiler-plugin.verison>3.11.0</maven-compiler-plugin.verison>
|
||||||
<maven-surefire-plugin.version>3.0.0</maven-surefire-plugin.version>
|
<maven-surefire-plugin.version>3.0.0</maven-surefire-plugin.version>
|
||||||
<flatten-maven-plugin.version>1.3.0</flatten-maven-plugin.version>
|
<flatten-maven-plugin.version>1.3.0</flatten-maven-plugin.version>
|
||||||
<weixin-java-miniapp.version>4.5.0</weixin-java-miniapp.version>
|
|
||||||
<weixin-java-pay.version>4.6.0</weixin-java-pay.version>
|
|
||||||
<weixin-java-cp.version>4.6.0</weixin-java-cp.version>
|
|
||||||
<weixin-java-cp.version>4.6.0</weixin-java-cp.version>
|
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<profiles>
|
<profiles>
|
||||||
@@ -336,13 +332,6 @@
|
|||||||
<artifactId>ruoyi-generator</artifactId>
|
<artifactId>ruoyi-generator</artifactId>
|
||||||
<version>${revision}</version>
|
<version>${revision}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- <dependency>-->
|
|
||||||
<!-- <groupId>org.ruoyi</groupId>-->
|
|
||||||
<!-- <artifactId>ruoyi-demo</artifactId>-->
|
|
||||||
<!-- <version>${revision}</version>-->
|
|
||||||
<!-- </dependency>-->
|
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</dependencyManagement>
|
</dependencyManagement>
|
||||||
|
|
||||||
|
|||||||
@@ -42,12 +42,6 @@
|
|||||||
<artifactId>mssql-jdbc</artifactId>
|
<artifactId>mssql-jdbc</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- demo模块 -->
|
|
||||||
<!-- <dependency>-->
|
|
||||||
<!-- <groupId>org.ruoyi</groupId>-->
|
|
||||||
<!-- <artifactId>ruoyi-demo</artifactId>-->
|
|
||||||
<!-- </dependency>-->
|
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.ruoyi</groupId>
|
<groupId>org.ruoyi</groupId>
|
||||||
<artifactId>ruoyi-system</artifactId>
|
<artifactId>ruoyi-system</artifactId>
|
||||||
@@ -58,6 +52,11 @@
|
|||||||
<artifactId>ruoyi-chat</artifactId>
|
<artifactId>ruoyi-chat</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.ruoyi</groupId>
|
||||||
|
<artifactId>ruoyi-generator</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
|
|||||||
@@ -3,6 +3,8 @@ package org.ruoyi;
|
|||||||
import org.springframework.boot.SpringApplication;
|
import org.springframework.boot.SpringApplication;
|
||||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
import org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup;
|
import org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup;
|
||||||
|
import org.springframework.scheduling.annotation.EnableAsync;
|
||||||
|
import org.springframework.scheduling.annotation.EnableScheduling;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 启动程序
|
* 启动程序
|
||||||
@@ -10,6 +12,8 @@ import org.springframework.boot.context.metrics.buffering.BufferingApplicationSt
|
|||||||
* @author Lion Li
|
* @author Lion Li
|
||||||
*/
|
*/
|
||||||
@SpringBootApplication
|
@SpringBootApplication
|
||||||
|
@EnableScheduling
|
||||||
|
@EnableAsync
|
||||||
public class RuoYiAIApplication {
|
public class RuoYiAIApplication {
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
|
|||||||
@@ -2,21 +2,16 @@ package org.ruoyi.controller;
|
|||||||
|
|
||||||
import cn.dev33.satoken.annotation.SaIgnore;
|
import cn.dev33.satoken.annotation.SaIgnore;
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.ruoyi.common.core.constant.Constants;
|
import org.ruoyi.common.core.constant.Constants;
|
||||||
import org.ruoyi.common.core.domain.R;
|
import org.ruoyi.common.core.domain.R;
|
||||||
import org.ruoyi.common.core.domain.model.EmailLoginBody;
|
import org.ruoyi.common.core.domain.model.*;
|
||||||
import org.ruoyi.common.core.domain.model.LoginBody;
|
|
||||||
import org.ruoyi.common.core.domain.model.RegisterBody;
|
|
||||||
import org.ruoyi.common.core.domain.model.SmsLoginBody;
|
|
||||||
import org.ruoyi.common.core.domain.model.VisitorLoginBody;
|
|
||||||
import org.ruoyi.common.core.utils.MapstructUtils;
|
import org.ruoyi.common.core.utils.MapstructUtils;
|
||||||
import org.ruoyi.common.core.utils.StreamUtils;
|
import org.ruoyi.common.core.utils.StreamUtils;
|
||||||
import org.ruoyi.common.core.utils.StringUtils;
|
import org.ruoyi.common.core.utils.StringUtils;
|
||||||
import org.ruoyi.common.satoken.utils.LoginHelper;
|
import org.ruoyi.common.satoken.utils.LoginHelper;
|
||||||
import org.ruoyi.common.tenant.helper.TenantHelper;
|
import org.ruoyi.common.tenant.helper.TenantHelper;
|
||||||
|
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
|
||||||
import org.ruoyi.system.domain.bo.SysTenantBo;
|
import org.ruoyi.system.domain.bo.SysTenantBo;
|
||||||
import org.ruoyi.system.domain.vo.LoginTenantVo;
|
import org.ruoyi.system.domain.vo.LoginTenantVo;
|
||||||
import org.ruoyi.system.domain.vo.LoginVo;
|
import org.ruoyi.system.domain.vo.LoginVo;
|
||||||
|
|||||||
@@ -5,10 +5,13 @@ import cn.hutool.captcha.AbstractCaptcha;
|
|||||||
import cn.hutool.captcha.generator.CodeGenerator;
|
import cn.hutool.captcha.generator.CodeGenerator;
|
||||||
import cn.hutool.core.util.IdUtil;
|
import cn.hutool.core.util.IdUtil;
|
||||||
import cn.hutool.core.util.RandomUtil;
|
import cn.hutool.core.util.RandomUtil;
|
||||||
|
import jakarta.validation.Valid;
|
||||||
|
import jakarta.validation.constraints.NotBlank;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.ruoyi.common.core.constant.Constants;
|
import org.ruoyi.common.core.constant.Constants;
|
||||||
import org.ruoyi.common.core.constant.GlobalConstants;
|
import org.ruoyi.common.core.constant.GlobalConstants;
|
||||||
import org.ruoyi.common.core.domain.R;
|
import org.ruoyi.common.core.domain.R;
|
||||||
import org.ruoyi.common.core.exception.ServiceException;
|
|
||||||
import org.ruoyi.common.core.service.ConfigService;
|
import org.ruoyi.common.core.service.ConfigService;
|
||||||
import org.ruoyi.common.core.utils.SpringUtils;
|
import org.ruoyi.common.core.utils.SpringUtils;
|
||||||
import org.ruoyi.common.core.utils.StringUtils;
|
import org.ruoyi.common.core.utils.StringUtils;
|
||||||
@@ -22,10 +25,6 @@ import org.ruoyi.common.web.config.properties.CaptchaProperties;
|
|||||||
import org.ruoyi.common.web.enums.CaptchaType;
|
import org.ruoyi.common.web.enums.CaptchaType;
|
||||||
import org.ruoyi.system.domain.request.EmailRequest;
|
import org.ruoyi.system.domain.request.EmailRequest;
|
||||||
import org.ruoyi.system.domain.vo.CaptchaVo;
|
import org.ruoyi.system.domain.vo.CaptchaVo;
|
||||||
import jakarta.validation.Valid;
|
|
||||||
import jakarta.validation.constraints.NotBlank;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
import org.springframework.expression.Expression;
|
import org.springframework.expression.Expression;
|
||||||
import org.springframework.expression.ExpressionParser;
|
import org.springframework.expression.ExpressionParser;
|
||||||
import org.springframework.expression.spel.standard.SpelExpressionParser;
|
import org.springframework.expression.spel.standard.SpelExpressionParser;
|
||||||
@@ -36,7 +35,8 @@ import org.springframework.web.bind.annotation.RequestBody;
|
|||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
import java.util.*;
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 验证码操作处理
|
* 验证码操作处理
|
||||||
@@ -67,7 +67,7 @@ public class CaptchaController {
|
|||||||
String key = GlobalConstants.CAPTCHA_CODE_KEY + phonenumber;
|
String key = GlobalConstants.CAPTCHA_CODE_KEY + phonenumber;
|
||||||
String code = RandomUtil.randomNumbers(4);
|
String code = RandomUtil.randomNumbers(4);
|
||||||
RedisUtils.setCacheObject(key, code, Duration.ofMinutes(Constants.CAPTCHA_EXPIRATION));
|
RedisUtils.setCacheObject(key, code, Duration.ofMinutes(Constants.CAPTCHA_EXPIRATION));
|
||||||
// 验证码模板id 自行处理 (查数据库或写死均可)
|
// 验证码模板id
|
||||||
String templateId = "";
|
String templateId = "";
|
||||||
Map<String, String> map = new HashMap<>(1);
|
Map<String, String> map = new HashMap<>(1);
|
||||||
map.put("code", code);
|
map.put("code", code);
|
||||||
@@ -90,18 +90,6 @@ public class CaptchaController {
|
|||||||
String key = GlobalConstants.CAPTCHA_CODE_KEY + emailRequest.getUsername();
|
String key = GlobalConstants.CAPTCHA_CODE_KEY + emailRequest.getUsername();
|
||||||
String code = RandomUtil.randomNumbers(4);
|
String code = RandomUtil.randomNumbers(4);
|
||||||
RedisUtils.setCacheObject(key, code, Duration.ofMinutes(Constants.CAPTCHA_EXPIRATION));
|
RedisUtils.setCacheObject(key, code, Duration.ofMinutes(Constants.CAPTCHA_EXPIRATION));
|
||||||
// 检验邮箱后缀
|
|
||||||
String suffix = configService.getConfigValue("mail", "suffix");
|
|
||||||
String prompt = configService.getConfigValue("mail", "prompt");
|
|
||||||
if(StringUtils.isNotEmpty(suffix)){
|
|
||||||
// 动态的域名列表
|
|
||||||
String[] invalidDomains = suffix.split(",");
|
|
||||||
for (String domain : invalidDomains) {
|
|
||||||
if (emailRequest.getUsername().endsWith(domain)) {
|
|
||||||
throw new ServiceException(prompt);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// 自定义邮箱模板
|
// 自定义邮箱模板
|
||||||
String model = configService.getConfigValue("mail", "mailModel");
|
String model = configService.getConfigValue("mail", "mailModel");
|
||||||
String mailTitle = configService.getConfigValue("mail", "mailTitle");
|
String mailTitle = configService.getConfigValue("mail", "mailTitle");
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
package org.ruoyi.controller;
|
package org.ruoyi.controller;
|
||||||
|
|
||||||
import cn.dev33.satoken.annotation.SaIgnore;
|
import cn.dev33.satoken.annotation.SaIgnore;
|
||||||
import lombok.RequiredArgsConstructor;
|
|
||||||
import org.springframework.stereotype.Controller;
|
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +1,3 @@
|
|||||||
--- # 监控中心配置
|
|
||||||
spring.boot.admin.client:
|
|
||||||
# 增加客户端开关
|
|
||||||
enabled: false
|
|
||||||
url: http://localhost:9090/admin
|
|
||||||
instance:
|
|
||||||
service-host-type: IP
|
|
||||||
username: ruoyi
|
|
||||||
password: 123456
|
|
||||||
|
|
||||||
--- # 数据源配置
|
--- # 数据源配置
|
||||||
spring:
|
spring:
|
||||||
@@ -25,9 +16,9 @@ spring:
|
|||||||
master:
|
master:
|
||||||
type: ${spring.datasource.type}
|
type: ${spring.datasource.type}
|
||||||
driverClassName: com.mysql.cj.jdbc.Driver
|
driverClassName: com.mysql.cj.jdbc.Driver
|
||||||
url: jdbc:mysql://43.139.70.230:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true
|
url: jdbc:mysql://127.0.0.1:3306/ruoyi-ai?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true
|
||||||
username: ry-vue
|
username: ruoyi-ai
|
||||||
password: xx
|
password: ruoyi-ai
|
||||||
|
|
||||||
hikari:
|
hikari:
|
||||||
# 最大连接池数量
|
# 最大连接池数量
|
||||||
@@ -94,3 +85,4 @@ sms:
|
|||||||
# 腾讯专用
|
# 腾讯专用
|
||||||
sdkAppId:
|
sdkAppId:
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ server:
|
|||||||
# 日志配置
|
# 日志配置
|
||||||
logging:
|
logging:
|
||||||
level:
|
level:
|
||||||
org.dromara: @logging.level@
|
org.ruoyi: @logging.level@
|
||||||
org.springframework: warn
|
org.springframework: warn
|
||||||
org.mybatis.spring.mapper: error
|
org.mybatis.spring.mapper: error
|
||||||
org.apache.fury: warn
|
org.apache.fury: warn
|
||||||
@@ -120,6 +120,8 @@ sa-token:
|
|||||||
security:
|
security:
|
||||||
# 排除路径
|
# 排除路径
|
||||||
excludes:
|
excludes:
|
||||||
|
# 获取模型信息
|
||||||
|
- /system/model/modelList
|
||||||
# 支付回调
|
# 支付回调
|
||||||
- /pay/returnUrl
|
- /pay/returnUrl
|
||||||
- /pay/notifyUrl
|
- /pay/notifyUrl
|
||||||
@@ -128,7 +130,9 @@ security:
|
|||||||
# 重置密码
|
# 重置密码
|
||||||
- /auth/reset/password
|
- /auth/reset/password
|
||||||
# 聊天接口
|
# 聊天接口
|
||||||
- /chat
|
- /chat/send
|
||||||
|
# 文件上传
|
||||||
|
- /chat/upload
|
||||||
# 静态资源
|
# 静态资源
|
||||||
- /*.html
|
- /*.html
|
||||||
- /**/*.html
|
- /**/*.html
|
||||||
@@ -215,13 +219,18 @@ mybatis-encryptor:
|
|||||||
publicKey:
|
publicKey:
|
||||||
privateKey:
|
privateKey:
|
||||||
|
|
||||||
# Swagger配置
|
springdoc:
|
||||||
swagger:
|
api-docs:
|
||||||
|
# 是否开启接口文档
|
||||||
|
enabled: true
|
||||||
|
# swagger-ui:
|
||||||
|
# # 持久化认证数据
|
||||||
|
# persistAuthorization: true
|
||||||
info:
|
info:
|
||||||
# 标题
|
# 标题
|
||||||
title: '标题:${ruoyi.name}多租户管理系统_接口文档'
|
title: '标题:RuoYi-Vue-Plus多租户管理系统_接口文档'
|
||||||
# 描述
|
# 描述
|
||||||
description: '描述:用于管理集团旗下公司的人员信息,具体包括XXX,XXX模块...'
|
description: ' 用于管理集团旗下公司的人员信息,具体包括XXX,XXX模块...'
|
||||||
# 版本
|
# 版本
|
||||||
version: '版本号: ${ruoyi.version}'
|
version: '版本号: ${ruoyi.version}'
|
||||||
# 作者信息
|
# 作者信息
|
||||||
@@ -236,24 +245,10 @@ swagger:
|
|||||||
type: APIKEY
|
type: APIKEY
|
||||||
in: HEADER
|
in: HEADER
|
||||||
name: ${sa-token.token-name}
|
name: ${sa-token.token-name}
|
||||||
|
|
||||||
springdoc:
|
|
||||||
api-docs:
|
|
||||||
# 是否开启接口文档
|
|
||||||
enabled: true
|
|
||||||
swagger-ui:
|
|
||||||
# 持久化认证数据
|
|
||||||
persistAuthorization: true
|
|
||||||
#这里定义了两个分组,可定义多个,也可以不定义
|
#这里定义了两个分组,可定义多个,也可以不定义
|
||||||
group-configs:
|
group-configs:
|
||||||
- group: 1.演示模块
|
- group: 1.系统模块
|
||||||
packages-to-scan: org.ruoyi.demo
|
|
||||||
- group: 2.通用模块
|
|
||||||
packages-to-scan: org.ruoyi.web
|
|
||||||
- group: 3.系统模块
|
|
||||||
packages-to-scan: org.ruoyi.system
|
packages-to-scan: org.ruoyi.system
|
||||||
- group: 4.代码生成模块
|
|
||||||
packages-to-scan: org.ruoyi.generator
|
|
||||||
|
|
||||||
# 防止XSS攻击
|
# 防止XSS攻击
|
||||||
xss:
|
xss:
|
||||||
@@ -300,34 +295,14 @@ websocket:
|
|||||||
# 设置访问源地址
|
# 设置访问源地址
|
||||||
allowedOrigins: '*'
|
allowedOrigins: '*'
|
||||||
|
|
||||||
# 微信小程序配置信息
|
|
||||||
wx:
|
|
||||||
miniapp:
|
|
||||||
configs:
|
|
||||||
- appid: # 你的appid
|
|
||||||
secret: # 你的secret
|
|
||||||
token: #微信小程序消息服务器配置的token
|
|
||||||
aesKey: #微信小程序消息服务器配置的EncodingAESKey
|
|
||||||
msgDataFormat: JSON
|
|
||||||
|
|
||||||
# 企业微信应用
|
|
||||||
wechat:
|
|
||||||
cp:
|
|
||||||
corpId:
|
|
||||||
appConfigs:
|
|
||||||
- agentId:
|
|
||||||
secret: ''
|
|
||||||
token: ''
|
|
||||||
aesKey: ''
|
|
||||||
|
|
||||||
spring:
|
spring:
|
||||||
ai:
|
ai:
|
||||||
openai:
|
openai:
|
||||||
api-key: sk-xxx
|
api-key: sk-xx
|
||||||
base-url: https://api.pandarobot.chat/
|
base-url: https://api.pandarobot.chat/
|
||||||
mcp:
|
mcp:
|
||||||
client:
|
client:
|
||||||
enabled: true
|
enabled: false
|
||||||
name: ruoyi-ai-mcp
|
name: ruoyi-ai-mcp
|
||||||
sse:
|
sse:
|
||||||
connections:
|
connections:
|
||||||
@@ -335,4 +310,5 @@ spring:
|
|||||||
url: http://127.0.0.1:8081
|
url: http://127.0.0.1:8081
|
||||||
stdio:
|
stdio:
|
||||||
servers-configuration: classpath:mcp-server.json
|
servers-configuration: classpath:mcp-server.json
|
||||||
|
request-timeout: 300s
|
||||||
|
|
||||||
|
|||||||
BIN
ruoyi-admin/src/main/resources/static/favicon.ico
Normal file
|
After Width: | Height: | Size: 78 KiB |
@@ -39,9 +39,7 @@
|
|||||||
<module>ruoyi-common-encrypt</module>
|
<module>ruoyi-common-encrypt</module>
|
||||||
<module>ruoyi-common-tenant</module>
|
<module>ruoyi-common-tenant</module>
|
||||||
<module>ruoyi-common-chat</module>
|
<module>ruoyi-common-chat</module>
|
||||||
<module>ruoyi-common-wechat</module>
|
|
||||||
<module>ruoyi-common-pay</module>
|
<module>ruoyi-common-pay</module>
|
||||||
<module>ruoyi-common-live</module>
|
|
||||||
</modules>
|
</modules>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
|||||||
@@ -159,12 +159,20 @@
|
|||||||
<version>${revision}</version>
|
<version>${revision}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<!-- 微信模块 -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.ruoyi</groupId>
|
<groupId>org.ruoyi</groupId>
|
||||||
<artifactId>ruoyi-chat</artifactId>
|
<artifactId>ruoyi-common-wechat</artifactId>
|
||||||
<version>${revision}</version>
|
<version>${revision}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- 支付模块 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.ruoyi</groupId>
|
||||||
|
<artifactId>ruoyi-common-pay</artifactId>
|
||||||
|
<version>${revision}</version>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
</dependencyManagement>
|
</dependencyManagement>
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ import cn.hutool.core.date.DateUnit;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 描述:
|
|
||||||
*
|
*
|
||||||
* @author https:www.unfbx.com
|
* @author https:www.unfbx.com
|
||||||
* @date 2023-03-10
|
* @date 2023-03-10
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
package org.ruoyi.common.chat.constant;
|
package org.ruoyi.common.chat.constant;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 描述:
|
|
||||||
*
|
*
|
||||||
* @author https:www.unfbx.com
|
* @author https:www.unfbx.com
|
||||||
* @since 2023-03-06
|
* @since 2023-03-06
|
||||||
@@ -10,6 +9,8 @@ public class OpenAIConst {
|
|||||||
|
|
||||||
public final static String OPENAI_HOST = "https://api.openai.com/";
|
public final static String OPENAI_HOST = "https://api.openai.com/";
|
||||||
|
|
||||||
|
public final static String apiUrl = "v1/chat/completions";
|
||||||
|
|
||||||
public final static int SUCCEED_CODE = 200;
|
public final static int SUCCEED_CODE = 200;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import java.math.BigDecimal;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 描述:金额消耗信息
|
* 金额消耗信息
|
||||||
*
|
*
|
||||||
* @author https:www.unfbx.com
|
* @author https:www.unfbx.com
|
||||||
* @since 2023-04-08
|
* @since 2023-04-08
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import java.io.Serializable;
|
|||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 描述:余额查询接口返回值
|
* 余额查询接口返回值
|
||||||
*
|
*
|
||||||
* @author https:www.unfbx.com
|
* @author https:www.unfbx.com
|
||||||
* @since 2023-03-18
|
* @since 2023-03-18
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import lombok.Data;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 描述:金额消耗列表
|
* 金额消耗列表
|
||||||
*
|
*
|
||||||
* @author https:www.unfbx.com
|
* @author https:www.unfbx.com
|
||||||
* @since 2023-04-08
|
* @since 2023-04-08
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ import lombok.Data;
|
|||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 描述:
|
|
||||||
*
|
*
|
||||||
* @author https:www.unfbx.com
|
* @author https:www.unfbx.com
|
||||||
* @since 2023-03-18
|
* @since 2023-03-18
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ import lombok.Data;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 描述:
|
|
||||||
*
|
*
|
||||||
* @author https:www.unfbx.com
|
* @author https:www.unfbx.com
|
||||||
* @since 2023-03-18
|
* @since 2023-03-18
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import lombok.Data;
|
|||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 描述:金额消耗列表
|
* 金额消耗列表
|
||||||
*
|
*
|
||||||
* @author https:www.unfbx.com
|
* @author https:www.unfbx.com
|
||||||
* @since 2023-04-08
|
* @since 2023-04-08
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
|||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 描述:
|
|
||||||
*
|
*
|
||||||
* @author https:www.unfbx.com
|
* @author https:www.unfbx.com
|
||||||
* @since 2023-04-08
|
* @since 2023-04-08
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import com.fasterxml.jackson.annotation.JsonProperty;
|
|||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 描述:账户信息
|
* 账户信息
|
||||||
*
|
*
|
||||||
* @author https:www.unfbx.com
|
* @author https:www.unfbx.com
|
||||||
* @since 2023-04-08
|
* @since 2023-04-08
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import java.util.Map;
|
|||||||
import static org.ruoyi.common.chat.entity.chat.BaseChatCompletion.Model.GPT_3_5_TURBO;
|
import static org.ruoyi.common.chat.entity.chat.BaseChatCompletion.Model.GPT_3_5_TURBO;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 描述: chat模型基础类
|
* chat模型基础类
|
||||||
*
|
*
|
||||||
* @author https:www.unfbx.com
|
* @author https:www.unfbx.com
|
||||||
* @since 1.1.2
|
* @since 1.1.2
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ import java.io.Serializable;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 描述:
|
|
||||||
*
|
*
|
||||||
* @author https:www.unfbx.com
|
* @author https:www.unfbx.com
|
||||||
* @since 1.1.2
|
* @since 1.1.2
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ import lombok.Data;
|
|||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 描述:
|
|
||||||
*
|
*
|
||||||
* @author https:www.unfbx.com
|
* @author https:www.unfbx.com
|
||||||
* @since 2023-03-02
|
* @since 2023-03-02
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import java.io.Serializable;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 描述: chat模型参数
|
* chat模型参数
|
||||||
*
|
*
|
||||||
* @author https:www.unfbx.com
|
* @author https:www.unfbx.com
|
||||||
* 2023-03-02
|
* 2023-03-02
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import java.io.Serializable;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 描述: chat答案类
|
* chat答案类
|
||||||
*
|
*
|
||||||
* @author https:www.unfbx.com
|
* @author https:www.unfbx.com
|
||||||
* 2023-03-02
|
* 2023-03-02
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import java.io.Serializable;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 描述: chat模型附带图片的参数
|
* : chat模型附带图片的参数
|
||||||
*
|
*
|
||||||
* @author https:www.unfbx.com
|
* @author https:www.unfbx.com
|
||||||
* @since 1.1.2
|
* @since 1.1.2
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ import lombok.*;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 描述:
|
|
||||||
*
|
*
|
||||||
* @author https://www.unfbx.com
|
* @author https://www.unfbx.com
|
||||||
* @since 1.1.2
|
* @since 1.1.2
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import lombok.Data;
|
|||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 描述:函数调用返回值
|
* 函数调用返回值
|
||||||
*
|
*
|
||||||
* @author https://www.unfbx.com
|
* @author https://www.unfbx.com
|
||||||
* @since 2023-06-14
|
* @since 2023-06-14
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import lombok.Data;
|
|||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 描述:方法参数实体类,实例数据如下
|
* 方法参数实体类,实例数据如下
|
||||||
* <pre>
|
* <pre>
|
||||||
* {
|
* {
|
||||||
* "name": "get_current_weather",
|
* "name": "get_current_weather",
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ import lombok.NoArgsConstructor;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 描述:
|
|
||||||
*
|
*
|
||||||
* @author https://www.unfbx.com
|
* @author https://www.unfbx.com
|
||||||
* 2023-11-10
|
* 2023-11-10
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import java.io.Serializable;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 描述:
|
*
|
||||||
*
|
*
|
||||||
* @author https:www.unfbx.com
|
* @author https:www.unfbx.com
|
||||||
* @since 2023-03-02
|
* @since 2023-03-02
|
||||||
|
|||||||
@@ -10,8 +10,6 @@ import java.io.Serializable;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 描述:
|
|
||||||
*
|
|
||||||
* @author https:www.unfbx.com
|
* @author https:www.unfbx.com
|
||||||
* @since 2023-03-02
|
* @since 2023-03-02
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import lombok.Data;
|
|||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
/**
|
/**
|
||||||
* 描述:方法参数类,扩展参数可以继承Parameters自己实现
|
* 方法参数类,扩展参数可以继承Parameters自己实现
|
||||||
* 参考:
|
* 参考:
|
||||||
* <pre>
|
* <pre>
|
||||||
* {
|
* {
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ import lombok.Data;
|
|||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 描述:
|
|
||||||
*
|
*
|
||||||
* @author https:www.unfbx.com
|
* @author https:www.unfbx.com
|
||||||
* 2023-02-15
|
* 2023-02-15
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import lombok.Data;
|
|||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 描述:
|
*
|
||||||
*
|
*
|
||||||
* @author https:www.unfbx.com
|
* @author https:www.unfbx.com
|
||||||
* 2023-02-15
|
* 2023-02-15
|
||||||
|
|||||||