From eefd36562d636d629246d380d4e2c4b63bbbc2a7 Mon Sep 17 00:00:00 2001 From: RockYang Date: Wed, 8 Jan 2025 10:19:35 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=90=8E=E5=8F=B0=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E7=AE=97=E5=8A=9B=E6=97=A5=E5=BF=97=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=BF=87=E6=BB=A4=E6=9F=A5=E8=AF=A2=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 3 +++ api/handler/admin/power_log_handler.go | 7 +++++++ api/handler/admin/user_handler.go | 11 ++++++++++- api/handler/realtime_handler.go | 14 +++++++++++++- web/.env.development | 2 +- web/src/views/admin/PowerLog.vue | 21 +++++++++++---------- web/src/views/admin/Users.vue | 2 ++ 7 files changed, 47 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 79fb2d3b..50356463 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,9 @@ - 功能优化:优化系统配置,移除已废弃的配置项 - 功能优化:GPT-O1 模型支持流式输出 - 功能优化:优化代码引用快样式,支持主题切换 +- 功能优化:登录,注册页面允许替换用户自己的 Logo 和 Title +- Bug 修复:修复 OpenAI 实时语音通话没有检测用户算力不足的 Bug +- 功能新增:管理后台增加算力日志查询功能,支持按用户,按模型,按日期,按类型查询算力日志 ## v4.1.8 diff --git a/api/handler/admin/power_log_handler.go b/api/handler/admin/power_log_handler.go index 56f63c84..7f4fe54e 100644 --- a/api/handler/admin/power_log_handler.go +++ b/api/handler/admin/power_log_handler.go @@ -31,6 +31,7 @@ func NewPowerLogHandler(app *core.AppServer, db *gorm.DB) *PowerLogHandler { func (h *PowerLogHandler) List(c *gin.Context) { var data struct { Username string `json:"username"` + UserId uint `json:"userid"` Type int `json:"type"` Model string `json:"model"` Date []string `json:"date"` @@ -49,6 +50,12 @@ func (h *PowerLogHandler) List(c *gin.Context) { if data.Type > 0 { session = session.Where("type", data.Type) } + if data.UserId > 0 { + session = session.Where("user_id", data.UserId) + } + if data.Username != "" { + session = session.Where("username", data.Username) + } if len(data.Date) == 2 { start := data.Date[0] + " 00:00:00" end := data.Date[1] + " 00:00:00" diff --git a/api/handler/admin/user_handler.go b/api/handler/admin/user_handler.go index 56bfd45b..f15274bc 100644 --- a/api/handler/admin/user_handler.go +++ b/api/handler/admin/user_handler.go @@ -17,9 +17,10 @@ import ( "geekai/store/vo" "geekai/utils" "geekai/utils/resp" - "github.com/go-redis/redis/v8" "time" + "github.com/go-redis/redis/v8" + "github.com/gin-gonic/gin" "gorm.io/gorm" ) @@ -39,6 +40,8 @@ func (h *UserHandler) List(c *gin.Context) { page := h.GetInt(c, "page", 1) pageSize := h.GetInt(c, "page_size", 20) username := h.GetTrim(c, "username") + mobile := h.GetTrim(c, "mobile") + email := h.GetTrim(c, "email") offset := (page - 1) * pageSize var items []model.User @@ -49,6 +52,12 @@ func (h *UserHandler) List(c *gin.Context) { if username != "" { session = session.Where("username LIKE ?", "%"+username+"%") } + if mobile != "" { + session = session.Where("mobile LIKE ?", "%"+mobile+"%") + } + if email != "" { + session = session.Where("email LIKE ?", "%"+email+"%") + } session.Model(&model.User{}).Count(&total) res := session.Offset(offset).Limit(pageSize).Order("id DESC").Find(&items) diff --git a/api/handler/realtime_handler.go b/api/handler/realtime_handler.go index bdc30af7..4a5789c1 100644 --- a/api/handler/realtime_handler.go +++ b/api/handler/realtime_handler.go @@ -146,6 +146,19 @@ func (h *RealtimeHandler) VoiceChat(c *gin.Context) { return } + // 检查用户是否还有算力 + userId := h.GetLoginUserId(c) + var user model.User + if err := h.DB.Where("id", userId).First(&user).Error; err != nil { + resp.ERROR(c, fmt.Sprintf("error with fetch user:%v", err)) + return + } + + if user.Power < h.App.SysConfig.AdvanceVoicePower { + resp.ERROR(c, "当前用户算力不足,无法使用该功能") + return + } + var response utils.OpenAIResponse client := req.C() if len(apiKey.ProxyURL) > 5 { @@ -185,7 +198,6 @@ func (h *RealtimeHandler) VoiceChat(c *gin.Context) { h.DB.Model(&apiKey).UpdateColumn("last_used_at", time.Now().Unix()) // 扣减算力 - userId := h.GetLoginUserId(c) err = h.userService.DecreasePower(int(userId), h.App.SysConfig.AdvanceVoicePower, model.PowerLog{ Type: types.PowerConsume, Model: "advanced-voice", diff --git a/web/.env.development b/web/.env.development index e5308bae..847a0947 100644 --- a/web/.env.development +++ b/web/.env.development @@ -1,4 +1,4 @@ -VUE_APP_API_HOST=http:/localhost:5678 +VUE_APP_API_HOST=http://localhost:5678 VUE_APP_WS_HOST=ws://localhost:5678 VUE_APP_USER=18888888888 VUE_APP_PASS=12345678 diff --git a/web/src/views/admin/PowerLog.vue b/web/src/views/admin/PowerLog.vue index 45753f89..6f08be2b 100644 --- a/web/src/views/admin/PowerLog.vue +++ b/web/src/views/admin/PowerLog.vue @@ -1,7 +1,9 @@