diff --git a/api/handler/markmap_handler.go b/api/handler/markmap_handler.go
index bf67ab7b..d6565444 100644
--- a/api/handler/markmap_handler.go
+++ b/api/handler/markmap_handler.go
@@ -183,45 +183,29 @@ func (h *MarkMapHandler) sendMessage(client *types.WsClient, prompt string, mode
utils.ReplyChunkMessage(client, types.WsMessage{Type: types.WsEnd})
} else {
- body, err := io.ReadAll(response.Body)
- if err != nil {
- return fmt.Errorf("读取响应失败: %v", err)
- }
- var res types.ApiError
- err = json.Unmarshal(body, &res)
- if err != nil {
- return fmt.Errorf("解析响应失败: %v", err)
- }
-
- // OpenAI API 调用异常处理
- if strings.Contains(res.Error.Message, "This key is associated with a deactivated account") {
- // remove key
- h.DB.Where("value = ?", apiKey).Delete(&model.ApiKey{})
- return errors.New("请求 OpenAI API 失败:API KEY 所关联的账户被禁用。")
- } else if strings.Contains(res.Error.Message, "You exceeded your current quota") {
- return errors.New("请求 OpenAI API 失败:API KEY 触发并发限制,请稍后再试。")
- } else {
- return fmt.Errorf("请求 OpenAI API 失败:%v", res.Error.Message)
- }
+ body, _ := io.ReadAll(response.Body)
+ return fmt.Errorf("请求 OpenAI API 失败:%s", string(body))
}
// 扣减算力
- res = h.DB.Model(&model.User{}).Where("id", userId).UpdateColumn("power", gorm.Expr("power - ?", chatModel.Power))
- if res.Error == nil {
- // 记录算力消费日志
- var u model.User
- h.DB.Where("id", userId).First(&u)
- h.DB.Create(&model.PowerLog{
- UserId: u.Id,
- Username: u.Username,
- Type: types.PowerConsume,
- Amount: chatModel.Power,
- Mark: types.PowerSub,
- Balance: u.Power,
- Model: chatModel.Value,
- Remark: fmt.Sprintf("AI绘制思维导图,模型名称:%s, ", chatModel.Value),
- CreatedAt: time.Now(),
- })
+ if chatModel.Power > 0 {
+ res = h.DB.Model(&model.User{}).Where("id", userId).UpdateColumn("power", gorm.Expr("power - ?", chatModel.Power))
+ if res.Error == nil {
+ // 记录算力消费日志
+ var u model.User
+ h.DB.Where("id", userId).First(&u)
+ h.DB.Create(&model.PowerLog{
+ UserId: u.Id,
+ Username: u.Username,
+ Type: types.PowerConsume,
+ Amount: chatModel.Power,
+ Mark: types.PowerSub,
+ Balance: u.Power,
+ Model: chatModel.Value,
+ Remark: fmt.Sprintf("AI绘制思维导图,模型名称:%s, ", chatModel.Value),
+ CreatedAt: time.Now(),
+ })
+ }
}
return nil
@@ -235,7 +219,7 @@ func (h *MarkMapHandler) doRequest(req types.ApiRequest, chatModel model.ChatMod
}
// use the last unused key
if apiKey.Id == 0 {
- res = h.DB.Where("platform", types.OpenAI).
+ res = h.DB.Where("platform", types.OpenAI.Value).
Where("type", "chat").
Where("enabled", true).Order("last_used_at ASC").First(apiKey)
}
diff --git a/api/service/dalle/service.go b/api/service/dalle/service.go
index fa209f20..dc66927b 100644
--- a/api/service/dalle/service.go
+++ b/api/service/dalle/service.go
@@ -153,10 +153,7 @@ func (s *Service) Image(task types.DallTask, sync bool) (string, error) {
} else {
request = request.SetHeader("Authorization", "Bearer "+apiKey.Value)
}
- r, err := request.SetHeader("Authorization", "Bearer "+apiKey.Value).
- SetBody(reqBody).
- SetErrorResult(&errRes).
- SetSuccessResult(&res).Post(apiKey.ApiURL)
+ r, err := request.SetBody(reqBody).SetErrorResult(&errRes).SetSuccessResult(&res).Post(apiKey.ApiURL)
if err != nil {
return "", fmt.Errorf("error with send request: %v", err)
}
diff --git a/api/utils/openai.go b/api/utils/openai.go
index 86a976a5..9f012c2f 100644
--- a/api/utils/openai.go
+++ b/api/utils/openai.go
@@ -54,7 +54,7 @@ type apiErrRes struct {
func OpenAIRequest(db *gorm.DB, prompt string) (string, error) {
var apiKey model.ApiKey
- res := db.Where("platform = ?", types.OpenAI.Value).Where("type", "chat").Where("enabled = ?", true).First(&apiKey)
+ res := db.Where("platform IN ?", []string{types.OpenAI.Value, types.Azure.Value}).Where("type", "chat").Where("enabled = ?", true).First(&apiKey)
if res.Error != nil {
return "", fmt.Errorf("error with fetch OpenAI API KEY:%v", res.Error)
}
diff --git a/web/src/router.js b/web/src/router.js
index 64fdecb6..de19cfff 100644
--- a/web/src/router.js
+++ b/web/src/router.js
@@ -6,19 +6,20 @@
// * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
import {createRouter, createWebHistory} from "vue-router";
+import {ref} from "vue";
+import {httpGet} from "@/utils/http";
const routes = [
{
name: 'Index',
path: '/',
- meta: {title: process.env.VUE_APP_TITLE},
+ meta: {title: "首页"},
component: () => import('@/views/Index.vue'),
},
{
name: 'home',
path: '/home',
redirect: '/chat',
- meta: {title: '首页'},
component: () => import('@/views/Home.vue'),
children: [
{
@@ -273,11 +274,22 @@ const router = createRouter({
routes: routes,
})
+const active = ref(false)
+const title = ref('')
+httpGet("/api/config/license").then(res => {
+ active.value = res.data.de_copy
+}).catch(() => {})
+httpGet("/api/config/get?key=system").then(res => {
+ title.value = res.data.title
+}).catch(()=>{})
+
let prevRoute = null
// dynamic change the title when router change
router.beforeEach((to, from, next) => {
- if (to.meta.title) {
+ if (!active.value) {
document.title = `${to.meta.title} | ${process.env.VUE_APP_TITLE}`
+ } else {
+ document.title = `${to.meta.title} | ${title.value}`
}
prevRoute = from
next()
diff --git a/web/src/views/Home.vue b/web/src/views/Home.vue
index 87043d42..80abdf45 100644
--- a/web/src/views/Home.vue
+++ b/web/src/views/Home.vue
@@ -46,19 +46,21 @@
{{ loginUser.nickname }}
-