diff --git a/CHANGELOG.md b/CHANGELOG.md index 8196cefa..5ec5f44d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,8 @@ ## v4.2.6 - 功能重构:重构移动端 UI,使用 tailwindcss 组件库,把 PC 端所有页面都在迁移到了移动端 +- 功能优化:重构 API 授权代码,采用中间件鉴权方式,实现更加精准的 API 鉴权 +- 功能优化:优化系统配置管理功能,把 OSS,支付,短信,邮件等配置全部迁移到管理后台,无需通过修改配置文档的方式修改 - 功能优化:优化 PC 端的 Suno 音乐,视频生成,以及即梦 AI 页面 UI - 功能优化:重构登录和注册页面,兼容移动端和 PC 端,并且所有的登录组件共用了同一套组件代码,大大降低维护成本 - 功能优化:管理后台增加模型批量删除功能 diff --git a/api/core/types/config.go b/api/core/types/config.go index 01e0cbac..a8a84c70 100644 --- a/api/core/types/config.go +++ b/api/core/types/config.go @@ -58,15 +58,11 @@ func (c RedisConfig) Url() string { } type BaseConfig struct { - Title string `json:"title,omitempty"` // 网站标题 - Slogan string `json:"slogan,omitempty"` // 网站 slogan - AdminTitle string `json:"admin_title,omitempty"` // 管理后台标题 - Logo string `json:"logo,omitempty"` // 圆形 Logo - BarLogo string `json:"bar_logo,omitempty"` // 条形 Logo - InitPower int `json:"init_power,omitempty"` // 新用户注册赠送算力值 - DailyPower int `json:"daily_power,omitempty"` // 每日签到赠送算力 - InvitePower int `json:"invite_power,omitempty"` // 邀请新用户赠送算力值 - VipMonthPower int `json:"vip_month_power,omitempty"` // VIP 会员每月赠送的算力值 + Title string `json:"title,omitempty"` // 网站标题 + Slogan string `json:"slogan,omitempty"` // 网站 slogan + AdminTitle string `json:"admin_title,omitempty"` // 管理后台标题 + Logo string `json:"logo,omitempty"` // 圆形 Logo + BarLogo string `json:"bar_logo,omitempty"` // 条形 Logo RegisterWays []string `json:"register_ways,omitempty"` // 注册方式:支持手机(mobile),邮箱注册(email),账号密码注册 EnabledRegister bool `json:"enabled_register,omitempty"` // 是否开放注册 @@ -74,10 +70,12 @@ type BaseConfig struct { OrderPayTimeout int `json:"order_pay_timeout,omitempty"` //订单支付超时时间 VipInfoText string `json:"vip_info_text,omitempty"` // 会员页面充值说明 + InitPower int `json:"init_power,omitempty"` // 新用户注册赠送算力值 + DailyPower int `json:"daily_power,omitempty"` // 每日签到赠送算力 + InvitePower int `json:"invite_power,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 生成视频消耗算力 KeLingPowers map[string]int `json:"keling_powers,omitempty"` // 可灵生成视频消耗算力 diff --git a/api/handler/admin/config_handler.go b/api/handler/admin/config_handler.go index 4739e6e4..751fc439 100644 --- a/api/handler/admin/config_handler.go +++ b/api/handler/admin/config_handler.go @@ -90,6 +90,7 @@ func (h *ConfigHandler) RegisterRoutes() { rg.Use(middleware.AdminAuthMiddleware(h.App.Config.AdminSession.SecretKey, h.App.Redis)) { rg.POST("update/base", h.UpdateBase) + rg.POST("update/power", h.UpdatePower) rg.POST("update/notice", h.UpdateNotice) rg.POST("update/captcha", h.UpdateCaptcha) rg.POST("update/wx_login", h.UpdateWxLogin) @@ -136,6 +137,47 @@ func (h *ConfigHandler) UpdateBase(c *gin.Context) { resp.SUCCESS(c, data) } +// UpdatePower 更新系统配置 +func (h *ConfigHandler) UpdatePower(c *gin.Context) { + var data struct { + InitPower int `json:"init_power,omitempty"` // 新用户注册赠送算力值 + DailyPower int `json:"daily_power,omitempty"` // 每日签到赠送算力 + InvitePower int `json:"invite_power,omitempty"` // 邀请新用户赠送算力值 + MjPower int `json:"mj_power,omitempty"` // MJ 绘画消耗算力 + MjActionPower int `json:"mj_action_power,omitempty"` // MJ 操作(放大,变换)消耗算力 + SdPower int `json:"sd_power,omitempty"` // SD 绘画消耗算力 + SunoPower int `json:"suno_power,omitempty"` // Suno 生成歌曲消耗算力 + LumaPower int `json:"luma_power,omitempty"` // Luma 生成视频消耗算力 + KeLingPowers map[string]int `json:"keling_powers,omitempty"` // 可灵生成视频消耗算力 + AdvanceVoicePower int `json:"advance_voice_power,omitempty"` // 高级语音对话消耗算力 + PromptPower int `json:"prompt_power,omitempty"` // 生成提示词消耗算力 + } + if err := c.ShouldBindJSON(&data); err != nil { + resp.ERROR(c, types.InvalidArgs) + return + } + + h.sysConfig.Base.InitPower = data.InitPower + h.sysConfig.Base.DailyPower = data.DailyPower + h.sysConfig.Base.InvitePower = data.InvitePower + h.sysConfig.Base.MjPower = data.MjPower + h.sysConfig.Base.MjActionPower = data.MjActionPower + h.sysConfig.Base.SdPower = data.SdPower + h.sysConfig.Base.SunoPower = data.SunoPower + h.sysConfig.Base.LumaPower = data.LumaPower + h.sysConfig.Base.KeLingPowers = data.KeLingPowers + h.sysConfig.Base.AdvanceVoicePower = data.AdvanceVoicePower + h.sysConfig.Base.PromptPower = data.PromptPower + + err := h.Update(types.ConfigKeySystem, h.sysConfig.Base) + if err != nil { + resp.ERROR(c, err.Error()) + return + } + + resp.SUCCESS(c, h.sysConfig.Base) +} + // UpdateNotice 更新公告配置 func (h *ConfigHandler) UpdateNotice(c *gin.Context) { var data struct { diff --git a/web/src/views/Dalle.vue b/web/src/views/Dalle.vue index d7e60f99..189a07ab 100644 --- a/web/src/views/Dalle.vue +++ b/web/src/views/Dalle.vue @@ -101,18 +101,6 @@ 生成中... - -