diff --git a/CHANGELOG.md b/CHANGELOG.md
index 178935e58..40f5ec055 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,16 @@
# 更新日志
+## v3.1.2
+1. 功能新增:新增七牛云 OSS 实现,目前已支持三种文件上传服务:Local, Minio, QiNiu OSS。
+2. 功能新增:新增桌面版,使用 electron 套壳网页版。
+3. Bug修复:自动去除众筹核销时候转账单号中的空格,防止复制的时候多复制了空格。
+4. 功能优化:ChatPlus.vue 页面支持通过 chat_id path variable 来定位到指定的聊天。
+5. 功能优化:取消导出聊天页面的授权验证
+6. 功能优化:所有路由跳转都使用绝对路径
+
+## v3.1.1
+紧急修复版本,采用弹窗的方式显示验证码,解决验证码在低分辨率下被掩盖的Bug
+
## v3.1.0(大版本更新)
1. 功能重构:将聊天模型独立拆分,以便支持多平台模型,目前已经内置支持 OPenAI,Azure 以及 ChatGLM,用户可以在这两个平台的模型中随意切换,体验不同的模型聊天。
2. 功能重构:重写系统 API 授权机制,使用 JWT 替换传统的 session 会话授权,使得 API 授权变得更加灵活。
diff --git a/api/core/app_server.go b/api/core/app_server.go
index ada409136..abb0f31d9 100644
--- a/api/core/app_server.go
+++ b/api/core/app_server.go
@@ -145,6 +145,8 @@ func authorizeMiddleware(s *AppServer, client *redis.Client) gin.HandlerFunc {
c.Request.URL.Path == "/api/user/register" ||
c.Request.URL.Path == "/api/reward/notify" ||
c.Request.URL.Path == "/api/mj/notify" ||
+ c.Request.URL.Path == "/api/chat/history" ||
+ c.Request.URL.Path == "/api/chat/detail" ||
strings.HasPrefix(c.Request.URL.Path, "/api/sms/") ||
strings.HasPrefix(c.Request.URL.Path, "/api/captcha/") ||
strings.HasPrefix(c.Request.URL.Path, "/static/") ||
diff --git a/api/handler/chat_history_handler.go b/api/handler/chat_history_handler.go
index 17d4a517f..89e31d1c2 100644
--- a/api/handler/chat_history_handler.go
+++ b/api/handler/chat_history_handler.go
@@ -35,14 +35,9 @@ func (h *ChatHandler) Update(c *gin.Context) {
// History 获取聊天历史记录
func (h *ChatHandler) History(c *gin.Context) {
chatId := c.Query("chat_id") // 会话 ID
- user, err := utils.GetLoginUser(c, h.db)
- if err != nil {
- resp.NotAuth(c)
- return
- }
var items []model.HistoryMessage
var messages = make([]vo.HistoryMessage, 0)
- res := h.db.Where("chat_id = ? AND user_id = ?", chatId, user.Id).Find(&items)
+ res := h.db.Where("chat_id = ?", chatId).Find(&items)
if res.Error != nil {
resp.ERROR(c, "No history message")
return
diff --git a/web/src/views/ChatExport.vue b/web/src/views/ChatExport.vue
index 966ab01d3..2b8b09a62 100644
--- a/web/src/views/ChatExport.vue
+++ b/web/src/views/ChatExport.vue
@@ -102,7 +102,7 @@ const exportChat = () => {
justify-content center
.chat-box {
- max-width 800px;
+ width 800px;
// 变量定义
--content-font-size: 16px;
--content-color: #c1c1c1;
diff --git a/web/src/views/ChatPlus.vue b/web/src/views/ChatPlus.vue
index 4303aa104..17294ae7d 100644
--- a/web/src/views/ChatPlus.vue
+++ b/web/src/views/ChatPlus.vue
@@ -356,7 +356,7 @@ onMounted(() => {
ElMessage.error("加载会话列表失败!")
})
}).catch(() => {
- router.push('login')
+ router.push('/login')
});
const clipboard = new Clipboard('.copy-reply');
@@ -417,7 +417,7 @@ const newChat = function () {
// 切换会话
const changeChat = (chat) => {
- router.push("/chat/"+chat.chat_id)
+ router.push("/chat/" + chat.chat_id)
loadChat(chat)
}
@@ -750,7 +750,7 @@ const logout = function () {
activelyClose.value = true;
httpGet('/api/user/logout').then(() => {
removeUserToken();
- router.push('login');
+ router.push('/login');
}).catch(() => {
ElMessage.error('注销失败!');
})
diff --git a/web/src/views/Home.vue b/web/src/views/Home.vue
index 64484cbb9..140ba599c 100644
--- a/web/src/views/Home.vue
+++ b/web/src/views/Home.vue
@@ -17,7 +17,7 @@ checkSession().then(() => {
router.push("/chat")
}
}).catch(() => {
- router.push("login")
+ router.push("/login")
})
diff --git a/web/src/views/Login.vue b/web/src/views/Login.vue
index 0492f8c53..92acfa17f 100644
--- a/web/src/views/Login.vue
+++ b/web/src/views/Login.vue
@@ -34,7 +34,7 @@
还没有账号?
- 注册新账号
+ 注册新账号
@@ -66,9 +66,9 @@ const password = ref(process.env.VUE_APP_PASS);
checkSession().then(() => {
if (isMobile()) {
- router.push('mobile')
+ router.push('/mobile')
} else {
- router.push('chat')
+ router.push('/chat')
}
}).catch(() => {
})
@@ -94,7 +94,7 @@ const login = function () {
if (isMobile()) {
router.push('/mobile')
} else {
- router.push('chat')
+ router.push('/chat')
}
}).catch((e) => {
ElMessage.error('登录失败,' + e.message)
diff --git a/web/src/views/Register.vue b/web/src/views/Register.vue
index be823359d..c8f8d8b39 100644
--- a/web/src/views/Register.vue
+++ b/web/src/views/Register.vue
@@ -75,7 +75,7 @@
已经有账号?
- 登录
+ 登录
@@ -144,7 +144,7 @@ const register = function () {
return ElMessage.error('请输入短信验证码');
}
httpPost('/api/user/register', formData.value).then(() => {
- ElMessage.success({"message": "注册成功,即将跳转到登录页...", onClose: () => router.push("login")})
+ ElMessage.success({"message": "注册成功,即将跳转到登录页...", onClose: () => router.push("/login")})
}).catch((e) => {
ElMessage.error('注册失败,' + e.message)
})
diff --git a/web/src/views/admin/Login.vue b/web/src/views/admin/Login.vue
index 7edd09b22..bac4b3614 100644
--- a/web/src/views/admin/Login.vue
+++ b/web/src/views/admin/Login.vue
@@ -55,7 +55,7 @@ const username = ref(process.env.VUE_APP_ADMIN_USER);
const password = ref(process.env.VUE_APP_ADMIN_PASS);
checkAdminSession().then(() => {
- router.push("admin")
+ router.push("/admin")
}).catch(() => {
})
onMounted(() => {
@@ -76,7 +76,7 @@ const login = function () {
httpPost('/api/admin/login', {username: username.value.trim(), password: password.value.trim()}).then(res => {
setAdminToken(res.data)
- router.push("admin")
+ router.push("/admin")
}).catch((e) => {
ElMessage.error('登录失败,' + e.message)
})