From 21f2622a4b16effff369b18949559570d4c03ca8 Mon Sep 17 00:00:00 2001 From: RockYang Date: Thu, 4 Jan 2024 10:48:04 +0800 Subject: [PATCH] feat: api key manage page funciton is ready --- api/handler/admin/api_key_handler.go | 26 ++++++ api/main.go | 1 + api/store/model/api_key.go | 3 + api/store/vo/api_key.go | 5 +- database/update-v3.2.4.sql | 3 +- web/src/views/admin/ApiKey.vue | 114 +++++++++++++++++++++++---- 6 files changed, 133 insertions(+), 19 deletions(-) diff --git a/api/handler/admin/api_key_handler.go b/api/handler/admin/api_key_handler.go index 5c8d1a45..19cf0179 100644 --- a/api/handler/admin/api_key_handler.go +++ b/api/handler/admin/api_key_handler.go @@ -29,6 +29,9 @@ func (h *ApiKeyHandler) Save(c *gin.Context) { Platform string `json:"platform"` Type string `json:"type"` Value string `json:"value"` + ApiURL string `json:"api_url"` + Enabled bool `json:"enabled"` + UseProxy bool `json:"use_proxy"` } if err := c.ShouldBindJSON(&data); err != nil { resp.ERROR(c, types.InvalidArgs) @@ -42,6 +45,9 @@ func (h *ApiKeyHandler) Save(c *gin.Context) { apiKey.Platform = data.Platform apiKey.Value = data.Value apiKey.Type = data.Type + apiKey.ApiURL = data.ApiURL + apiKey.Enabled = data.Enabled + apiKey.UseProxy = data.UseProxy res := h.db.Save(&apiKey) if res.Error != nil { resp.ERROR(c, "更新数据库失败!") @@ -80,6 +86,26 @@ func (h *ApiKeyHandler) List(c *gin.Context) { resp.SUCCESS(c, keys) } +func (h *ApiKeyHandler) Set(c *gin.Context) { + var data struct { + Id uint `json:"id"` + Filed string `json:"filed"` + Value interface{} `json:"value"` + } + + if err := c.ShouldBindJSON(&data); err != nil { + resp.ERROR(c, types.InvalidArgs) + return + } + + res := h.db.Model(&model.ApiKey{}).Where("id = ?", data.Id).Update(data.Filed, data.Value) + if res.Error != nil { + resp.ERROR(c, "更新数据库失败!") + return + } + resp.SUCCESS(c) +} + func (h *ApiKeyHandler) Remove(c *gin.Context) { id := h.GetInt(c, "id", 0) diff --git a/api/main.go b/api/main.go index f1713bc7..c02816c4 100644 --- a/api/main.go +++ b/api/main.go @@ -255,6 +255,7 @@ func main() { group := s.Engine.Group("/api/admin/apikey/") group.POST("save", h.Save) group.GET("list", h.List) + group.POST("set", h.Set) group.GET("remove", h.Remove) }), fx.Invoke(func(s *core.AppServer, h *admin.UserHandler) { diff --git a/api/store/model/api_key.go b/api/store/model/api_key.go index b09d6566..b79d3ff7 100644 --- a/api/store/model/api_key.go +++ b/api/store/model/api_key.go @@ -6,5 +6,8 @@ type ApiKey struct { Platform string Type string // 用途 chat => 聊天,img => 绘图 Value string // API Key 的值 + ApiURL string // 当前 KEY 的 API 地址 + Enabled bool // 是否启用 + UseProxy bool // 是否使用代理访问 API URL LastUsedAt int64 // 最后使用时间 } diff --git a/api/store/vo/api_key.go b/api/store/vo/api_key.go index 7091370b..c3c985d7 100644 --- a/api/store/vo/api_key.go +++ b/api/store/vo/api_key.go @@ -5,6 +5,9 @@ type ApiKey struct { BaseVo Platform string `json:"platform"` Type string `json:"type"` - Value string `json:"value"` // API Key 的值 + Value string `json:"value"` // API Key 的值 + ApiURL string `json:"api_url"` + Enabled bool `json:"enabled"` + UseProxy bool `json:"use_proxy"` LastUsedAt int64 `json:"last_used_at"` // 最后使用时间 } diff --git a/database/update-v3.2.4.sql b/database/update-v3.2.4.sql index 243431d8..620126d1 100644 --- a/database/update-v3.2.4.sql +++ b/database/update-v3.2.4.sql @@ -2,4 +2,5 @@ ALTER TABLE `chatgpt_users` ADD `nickname` VARCHAR(30) NOT NULL COMMENT '昵称' ALTER TABLE `chatgpt_rewards` ADD `exchange` VARCHAR(255) NOT NULL COMMENT '兑换详情(json)' AFTER `status`; ALTER TABLE `chatgpt_api_keys` ADD `api_url` VARCHAR(255) NULL COMMENT 'API 地址' AFTER `last_used_at`, ADD `enabled` TINYINT(1) NULL COMMENT '是否启用' AFTER `api_url`; ALTER TABLE `chatgpt_api_keys` DROP INDEX `value`; -ALTER TABLE `chatgpt_mj_jobs` ADD UNIQUE(`task_id`); \ No newline at end of file +ALTER TABLE `chatgpt_mj_jobs` ADD UNIQUE(`task_id`); +ALTER TABLE `chatgpt_api_keys` ADD `use_proxy` TINYINT(1) NULL COMMENT '是否使用代理访问' AFTER `enabled`; \ No newline at end of file diff --git a/web/src/views/admin/ApiKey.vue b/web/src/views/admin/ApiKey.vue index 117ad7ce..6275104b 100644 --- a/web/src/views/admin/ApiKey.vue +++ b/web/src/views/admin/ApiKey.vue @@ -15,10 +15,9 @@ 绘图 - - + @@ -28,6 +27,11 @@ 未使用 + + +