From b01b10014a64c552c1376dc8ae51eaf28d06d5fa Mon Sep 17 00:00:00 2001 From: RockYang Date: Tue, 24 Dec 2024 17:43:40 +0800 Subject: [PATCH] fine-tune the new UI theme --- CHANGELOG.md | 5 +- api/core/types/config.go | 13 +- api/handler/prompt_handler.go | 44 ++- web/src/assets/css/luma.styl | 2 +- web/src/assets/css/theme-dark.styl | 4 + web/src/assets/css/theme-light.styl | 2 + web/src/views/ChatApps.vue | 59 +--- web/src/views/Dalle.vue | 1 - web/src/views/ImageMj.vue | 2 - web/src/views/ImageSd.vue | 1 - web/src/views/Luma.vue | 119 ++----- web/src/views/Suno.vue | 2 +- web/src/views/admin/SysConfig.vue | 519 ++++++++++++---------------- 13 files changed, 325 insertions(+), 448 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dc3e5f3b..75de203f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,10 +3,11 @@ ## v4.1.8 - 功能优化:**UI 全新改版,支持主题切换**。 :rocket: :rocket: :rocket: -- Bug修复:修复音 Luma API 更新导致任务响应解析失败的错误 +- Bug 修复:修复音 Luma API 更新导致任务响应解析失败的错误 - 功能优化:支持 Suno v4.0 模型支持 -- Bug修复:修复 Suno 已完成任务删除失败的 错误 +- Bug 修复:修复 Suno 已完成任务删除失败的 错误 - 功能新增:支持 OpenAI 实时语音通话功能,目前已经支持按次收费,支持管理员设置每次实时语音通话的算力消耗 +- 功能新增:生成提示词需要消耗算力,支持管理员设置每次生成提示词的算力消耗,防止被白嫖 ## v4.1.7 diff --git a/api/core/types/config.go b/api/core/types/config.go index fa68ea29..27d45ffe 100644 --- a/api/core/types/config.go +++ b/api/core/types/config.go @@ -143,13 +143,14 @@ type SystemConfig struct { OrderPayTimeout int `json:"order_pay_timeout,omitempty"` //订单支付超时时间 VipInfoText string `json:"vip_info_text,omitempty"` // 会员页面充值说明 - MjPower int `json:"mj_power,omitempty"` // MJ 绘画消耗算力 - MjActionPower int `json:"mj_action_power,omitempty"` // MJ 操作(放大,变换)消耗算力 - SdPower int `json:"sd_power,omitempty"` // SD 绘画消耗算力 - DallPower int `json:"dall_power,omitempty"` // DALL-E-3 绘图消耗算力 - SunoPower int `json:"suno_power,omitempty"` // Suno 生成歌曲消耗算力 - LumaPower int `json:"luma_power,omitempty"` // Luma 生成视频消耗算力 + MjPower int `json:"mj_power,omitempty"` // MJ 绘画消耗算力 + MjActionPower int `json:"mj_action_power,omitempty"` // MJ 操作(放大,变换)消耗算力 + SdPower int `json:"sd_power,omitempty"` // SD 绘画消耗算力 + DallPower int `json:"dall_power,omitempty"` // DALL-E-3 绘图消耗算力 + SunoPower int `json:"suno_power,omitempty"` // Suno 生成歌曲消耗算力 + LumaPower int `json:"luma_power,omitempty"` // Luma 生成视频消耗算力 AdvanceVoicePower int `json:"advance_voice_power,omitempty"` // 高级语音对话消耗算力 + PromptPower int `json:"prompt_power,omitempty"` // 生成提示词消耗算力 WechatCardURL string `json:"wechat_card_url,omitempty"` // 微信客服地址 diff --git a/api/handler/prompt_handler.go b/api/handler/prompt_handler.go index 596791b0..596d0a45 100644 --- a/api/handler/prompt_handler.go +++ b/api/handler/prompt_handler.go @@ -12,13 +12,13 @@ import ( "geekai/core" "geekai/core/types" "geekai/service" - "geekai/service/oss" - "geekai/service/suno" + "geekai/store/model" "geekai/utils" "geekai/utils/resp" + "strings" + "github.com/gin-gonic/gin" "gorm.io/gorm" - "strings" ) // 提示词生成 handler @@ -26,8 +26,6 @@ import ( type PromptHandler struct { BaseHandler - sunoService *suno.Service - uploader *oss.UploaderManager userService *service.UserService } @@ -56,6 +54,15 @@ func (h *PromptHandler) Lyric(c *gin.Context) { return } + if h.App.SysConfig.PromptPower > 0 { + userId := h.GetLoginUserId(c) + h.userService.DecreasePower(int(userId), h.App.SysConfig.PromptPower, model.PowerLog{ + Type: types.PowerConsume, + Model: h.getPromptModel(), + Remark: "生成歌词", + }) + } + resp.SUCCESS(c, content) } @@ -73,7 +80,14 @@ func (h *PromptHandler) Image(c *gin.Context) { resp.ERROR(c, err.Error()) return } - + if h.App.SysConfig.PromptPower > 0 { + userId := h.GetLoginUserId(c) + h.userService.DecreasePower(int(userId), h.App.SysConfig.PromptPower, model.PowerLog{ + Type: types.PowerConsume, + Model: h.getPromptModel(), + Remark: "生成绘画提示词", + }) + } resp.SUCCESS(c, strings.Trim(content, `"`)) } @@ -92,6 +106,15 @@ func (h *PromptHandler) Video(c *gin.Context) { return } + if h.App.SysConfig.PromptPower > 0 { + userId := h.GetLoginUserId(c) + h.userService.DecreasePower(int(userId), h.App.SysConfig.PromptPower, model.PowerLog{ + Type: types.PowerConsume, + Model: h.getPromptModel(), + Remark: "生成视频脚本", + }) + } + resp.SUCCESS(c, strings.Trim(content, `"`)) } @@ -121,3 +144,12 @@ func (h *PromptHandler) MetaPrompt(c *gin.Context) { resp.SUCCESS(c, strings.Trim(content, `"`)) } + +func (h *PromptHandler) getPromptModel() string { + if h.App.SysConfig.TranslateModelId > 0 { + var chatModel model.ChatModel + h.DB.Where("id", h.App.SysConfig.TranslateModelId).First(&chatModel) + return chatModel.Value + } + return "gpt-4o" +} diff --git a/web/src/assets/css/luma.styl b/web/src/assets/css/luma.styl index bef3eccb..adb2d0f5 100644 --- a/web/src/assets/css/luma.styl +++ b/web/src/assets/css/luma.styl @@ -216,7 +216,7 @@ padding 0 20px .prompt,.failed { - padding 6px 0 + padding 0 font-size 16px max-height 80px line-height 28px diff --git a/web/src/assets/css/theme-dark.styl b/web/src/assets/css/theme-dark.styl index 2c9f24e8..f970757a 100644 --- a/web/src/assets/css/theme-dark.styl +++ b/web/src/assets/css/theme-dark.styl @@ -72,4 +72,8 @@ --el-table-row-hover-bg-color: rgba(16, 21, 43, .8); --el-table-current-row-bg-color: rgba(16, 21, 43, .8); } + + // 加载动画 + --el-mask-color: rgba(255, 255, 255, 0.5); + --van-toast-background: rgba(255, 255, 255, 0.3); } diff --git a/web/src/assets/css/theme-light.styl b/web/src/assets/css/theme-light.styl index 0ceb0f26..148fa0fc 100644 --- a/web/src/assets/css/theme-light.styl +++ b/web/src/assets/css/theme-light.styl @@ -43,6 +43,8 @@ // 操作按钮 --btn-bg: rgba(100, 100, 100, .1); + // 加载动画 + --el-mask-color: rgba(100, 100, 100, 0.2); } diff --git a/web/src/views/ChatApps.vue b/web/src/views/ChatApps.vue index 54bde013..272d3890 100644 --- a/web/src/views/ChatApps.vue +++ b/web/src/views/ChatApps.vue @@ -1,26 +1,18 @@