diff --git a/server/handler_admin_config.go b/server/handler_admin_config.go index 286fadea..ae309c14 100644 --- a/server/handler_admin_config.go +++ b/server/handler_admin_config.go @@ -18,7 +18,8 @@ func (s *Server) TestHandle(c *gin.Context) { } -func (s *Server) ConfigGetHandle(c *gin.Context) { +// GetAllConfigHandle 获取所有配置 +func (s *Server) GetAllConfigHandle(c *gin.Context) { data := struct { Title string `json:"title"` ConsoleTitle string `json:"console_title"` @@ -44,6 +45,22 @@ func (s *Server) ConfigGetHandle(c *gin.Context) { c.JSON(http.StatusOK, types.BizVo{Code: types.Success, Data: data}) } +func (s *Server) GetConfigHandle(c *gin.Context) { + data := struct { + Title string `json:"title"` + ConsoleTitle string `json:"console_title"` + WechatCard string `json:"wechat_card"` // 个人微信二维码 + WechatGroup string `json:"wechat_group"` // 微信群二维码 + }{ + Title: s.Config.Title, + ConsoleTitle: s.Config.ConsoleTitle, + WechatCard: s.Config.ImgURL.WechatCard, + WechatGroup: s.Config.ImgURL.WechatGroup, + } + + c.JSON(http.StatusOK, types.BizVo{Code: types.Success, Data: data}) +} + // ConfigSetHandle set configs func (s *Server) ConfigSetHandle(c *gin.Context) { var data struct { diff --git a/server/server.go b/server/server.go index b8aebe5e..61530884 100644 --- a/server/server.go +++ b/server/server.go @@ -95,7 +95,8 @@ func (s *Server) Run(webRoot embed.FS, path string, debug bool) { engine.POST("api/img/get", s.GetImgURLHandle) engine.POST("api/img/set", s.SetImgURLHandle) - engine.GET("api/config/get", s.ConfigGetHandle) + engine.GET("api/config/get", s.GetConfigHandle) // 获取一些公开的配置信息,前端使用 + engine.GET("api/admin/config/get", s.GetAllConfigHandle) // 获取所有配置,后台管理使用 engine.POST("api/admin/config/set", s.ConfigSetHandle) engine.GET("api/chat-roles/list", s.GetChatRoleListHandle) @@ -221,6 +222,7 @@ func AuthorizeMiddleware(s *Server) gin.HandlerFunc { return func(c *gin.Context) { if c.Request.URL.Path == "/api/login" || c.Request.URL.Path == "/api/admin/login" || + c.Request.URL.Path == "/api/config/get" || c.Request.URL.Path == "/api/chat-roles/list" || !strings.HasPrefix(c.Request.URL.Path, "/api") { c.Next() diff --git a/web/src/views/Chat.vue b/web/src/views/Chat.vue index 973c11cf..96986bce 100644 --- a/web/src/views/Chat.vue +++ b/web/src/views/Chat.vue @@ -116,7 +116,7 @@ - + @@ -153,6 +153,8 @@ export default defineComponent({ showConfigDialog: false, userInfo: {}, showLoginDialog: false, + sysConfig: {}, // 系统配置 + hasHelloMsg: {}, // 是否发送过打招呼信息 showStopGenerate: false, showReGenerate: false, @@ -198,6 +200,13 @@ export default defineComponent({ this.inputBoxWidth = window.innerWidth - 20; }); + // 获取系统配置 + httpGet('/api/config/get').then((res) => { + this.sysConfig = res.data; + }).catch(() => { + ElMessage.error('获取系统配置失败') + }) + this.connect(); }, @@ -220,7 +229,7 @@ export default defineComponent({ socket.addEventListener('open', () => { // 获取聊天角色 if (this.chatRoles.length === 0) { - httpGet("/api/config/chat-roles/get").then((res) => { + httpGet("/api/chat-roles/list").then((res) => { // ElMessage.success('创建会话成功!'); this.chatRoles = res.data; this.loading = false @@ -246,6 +255,9 @@ export default defineComponent({ reader.readAsText(event.data, "UTF-8"); reader.onload = () => { const data = JSON.parse(String(reader.result)); + if (data['is_hello_msg'] && this.hasHelloMsg[this.role]) { // 一定发送过打招呼信息的 + return + } if (data.type === 'start') { this.chatData.push({ type: "reply", @@ -260,6 +272,8 @@ export default defineComponent({ this.sending = false; if (data['is_hello_msg'] !== true) { this.showReGenerate = true; + } else { + this.hasHelloMsg[this.role] = true } this.showStopGenerate = false; this.lineBuffer = ''; // 清空缓冲 @@ -331,6 +345,9 @@ export default defineComponent({ this.loading = true // 清空对话列表 this.chatData = []; + this.hasHelloMsg = {}; + this.showStopGenerate = false; + this.showReGenerate = false; this.connect(); for (const key in this.chatRoles) { if (this.chatRoles[key].key === this.role) { @@ -679,7 +696,7 @@ export default defineComponent({ .tip-text { text-align left - padding 0 20px 10px 20px; + padding 20px; .el-alert { padding 5px; diff --git a/web/src/views/ChatFree.vue b/web/src/views/ChatFree.vue index 40c6bfd5..05c7ed90 100644 --- a/web/src/views/ChatFree.vue +++ b/web/src/views/ChatFree.vue @@ -149,7 +149,7 @@ - + @@ -223,6 +223,9 @@ export default defineComponent({ curChat: null, // 当前会话 curPrompt: null, // 当前用户输入 + sysConfig: {}, // 系统配置 + hasHelloMsg: {}, // 是否发送过打招呼信息 + showStopGenerate: false, showReGenerate: false, canReGenerate: false, // 是否可以重新生 @@ -280,6 +283,13 @@ export default defineComponent({ this.chatList = chatList; } + // 获取系统配置 + httpGet('/api/config/get').then((res) => { + this.sysConfig = res.data; + }).catch(() => { + ElMessage.error('获取系统配置失败') + }) + // 创建新会话 this.newChat(); }, @@ -310,8 +320,10 @@ export default defineComponent({ // 获取历史记录 this.fetchChatHistory(this.curChat.id); - if (this.chatData.length === 0) { // 显示打招呼信息 + // 显示打招呼信息 + if (!this.hasHelloMsg[this.curChat.id] && this.chatData.length === 0) { this.chatData.push(this.helloMsg); + this.hasHelloMsg[this.curChat.id] = true } }); @@ -666,6 +678,7 @@ export default defineComponent({ this.appendChat(); this.chatData = []; + this.hasHelloMsg = {}; this.curChat = chat; this.showStopGenerate = false; this.showReGenerate = false; diff --git a/web/src/views/ChatPlus.vue b/web/src/views/ChatPlus.vue index d1666452..c6a501ae 100644 --- a/web/src/views/ChatPlus.vue +++ b/web/src/views/ChatPlus.vue @@ -163,7 +163,7 @@ - + @@ -222,7 +222,8 @@ export default defineComponent({ allChatRoles: [], // 所有角色集合 role: 'gpt', inputValue: '', // 聊天内容 - sendHelloMsg: {}, // 是否发送过打招呼信息 + hasHelloMsg: {}, // 是否发送过打招呼信息 + sysConfig: {}, // 系统配置 showConfigDialog: false, // 显示配置对话框 userInfo: {}, @@ -272,6 +273,13 @@ export default defineComponent({ this.resizeElement(); }); + // 获取系统配置 + httpGet('/api/config/get').then((res) => { + this.sysConfig = res.data; + }).catch(() => { + ElMessage.error('获取系统配置失败') + }) + this.connect(); }, @@ -327,7 +335,7 @@ export default defineComponent({ reader.readAsText(event.data, "UTF-8"); reader.onload = () => { const data = JSON.parse(String(reader.result)); - if (data['is_hello_msg'] && this.sendHelloMsg[this.role]) { // 一定发送过打招呼信息的 + if (data['is_hello_msg'] && this.hasHelloMsg[this.role]) { // 一定发送过打招呼信息的 return } @@ -346,7 +354,7 @@ export default defineComponent({ if (data['is_hello_msg'] !== true) { this.showReGenerate = true; } else { - this.sendHelloMsg[this.role] = true + this.hasHelloMsg[this.role] = true } this.showStopGenerate = false; this.lineBuffer = ''; // 清空缓冲 @@ -427,6 +435,7 @@ export default defineComponent({ this.replyIcon = item.icon; // 清空对话列表 this.chatData = []; + this.hasHelloMsg = {}; this.showStopGenerate = false; this.showReGenerate = false; this.connect(); diff --git a/web/src/views/admin/SysConfig.vue b/web/src/views/admin/SysConfig.vue index 63d383c2..8cb4b21b 100644 --- a/web/src/views/admin/SysConfig.vue +++ b/web/src/views/admin/SysConfig.vue @@ -139,7 +139,7 @@ export default defineComponent({ }, mounted() { // 获取系统配置 - httpGet('/api/config/get').then((res) => { + httpGet('/api/admin/config/get').then((res) => { this.form = res.data; }).catch(() => { ElMessage.error('获取系统配置失败')