From 54e8d72b10552e91f945f3e89a9a84812a11ab21 Mon Sep 17 00:00:00 2001 From: RockYang Date: Tue, 10 Sep 2024 10:56:04 +0800 Subject: [PATCH] support multiple delete users, update database sql file --- CHANGELOG.md | 1 - api/handler/admin/user_handler.go | 78 ++++++++++++++++++------- database/geekai_plus-v4.1.3.sql | 39 +++---------- database/update-v4.1.3.sql | 12 +++- web/src/assets/css/luma.styl | 3 +- web/src/assets/css/suno.styl | 3 +- web/src/assets/iconfont/iconfont.css | 10 +++- web/src/assets/iconfont/iconfont.js | 2 +- web/src/assets/iconfont/iconfont.json | 7 +++ web/src/assets/iconfont/iconfont.ttf | Bin 28980 -> 29056 bytes web/src/assets/iconfont/iconfont.woff | Bin 19320 -> 19360 bytes web/src/assets/iconfont/iconfont.woff2 | Bin 16776 -> 16812 bytes web/src/views/Index.vue | 1 + web/src/views/admin/Users.vue | 38 ++++++++++-- 14 files changed, 129 insertions(+), 65 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 59a127ac..ab7c45a4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,6 @@ # 更新日志 ## v4.1.3 -* 功能优化:VIP 会员在进行任何操作都不扣减算力,以实现会员周卡月卡功能 * 功能优化:重构用户登录模块,给所有的登录组件增加行为验证码功能,支持用户绑定手机,邮箱和微信 * 功能优化:重构找回密码模块,支持通过手机或者邮箱找回密码 * 功能优化:管理后台给可以拖动排序的组件添加拖动图标 diff --git a/api/handler/admin/user_handler.go b/api/handler/admin/user_handler.go index 6d713f53..275be140 100644 --- a/api/handler/admin/user_handler.go +++ b/api/handler/admin/user_handler.go @@ -204,33 +204,69 @@ func (h *UserHandler) ResetPass(c *gin.Context) { } func (h *UserHandler) Remove(c *gin.Context) { - id := h.GetInt(c, "id", 0) - if id <= 0 { + id := c.Query("id") + ids := c.QueryArray("ids[]") + if id != "" { + ids = append(ids, id) + } + if len(ids) == 0 { resp.ERROR(c, types.InvalidArgs) return } - // 删除用户 - res := h.DB.Where("id = ?", id).Delete(&model.User{}) - if res.Error != nil { + + tx := h.DB.Begin() + var err error + for _, id = range ids { + // 删除用户 + if err = tx.Where("id", id).Delete(&model.User{}).Error; err != nil { + break + } + // 删除聊天记录 + if err = tx.Unscoped().Where("user_id = ?", id).Delete(&model.ChatItem{}).Error; err != nil { + break + } + // 删除聊天历史记录 + if err = tx.Unscoped().Where("user_id = ?", id).Delete(&model.ChatMessage{}).Error; err != nil { + break + } + // 删除登录日志 + if err = tx.Where("user_id = ?", id).Delete(&model.UserLoginLog{}).Error; err != nil { + break + } + // 删除算力日志 + if err = tx.Where("user_id = ?", id).Delete(&model.PowerLog{}).Error; err != nil { + break + } + if err = tx.Where("user_id = ?", id).Delete(&model.InviteLog{}).Error; err != nil { + break + } + // 删除众筹日志 + if err = tx.Where("user_id = ?", id).Delete(&model.Redeem{}).Error; err != nil { + break + } + // 删除绘图任务 + if err = tx.Where("user_id = ?", id).Delete(&model.MidJourneyJob{}).Error; err != nil { + break + } + if err = tx.Where("user_id = ?", id).Delete(&model.SdJob{}).Error; err != nil { + break + } + if err = tx.Where("user_id = ?", id).Delete(&model.DallJob{}).Error; err != nil { + break + } + if err = tx.Where("user_id = ?", id).Delete(&model.SunoJob{}).Error; err != nil { + break + } + if err = tx.Where("user_id = ?", id).Delete(&model.VideoJob{}).Error; err != nil { + break + } + } + if err != nil { resp.ERROR(c, "删除失败") + tx.Rollback() return } - - // 删除聊天记录 - h.DB.Where("user_id = ?", id).Delete(&model.ChatItem{}) - // 删除聊天历史记录 - h.DB.Where("user_id = ?", id).Delete(&model.ChatMessage{}) - // 删除登录日志 - h.DB.Where("user_id = ?", id).Delete(&model.UserLoginLog{}) - // 删除算力日志 - h.DB.Where("user_id = ?", id).Delete(&model.PowerLog{}) - // 删除众筹日志 - h.DB.Where("user_id = ?", id).Delete(&model.Redeem{}) - // 删除绘图任务 - h.DB.Where("user_id = ?", id).Delete(&model.MidJourneyJob{}) - h.DB.Where("user_id = ?", id).Delete(&model.SdJob{}) - // 删除订单 - h.DB.Where("user_id = ?", id).Delete(&model.Order{}) + tx.Commit() resp.SUCCESS(c) } diff --git a/database/geekai_plus-v4.1.3.sql b/database/geekai_plus-v4.1.3.sql index 0ea55627..41887783 100644 --- a/database/geekai_plus-v4.1.3.sql +++ b/database/geekai_plus-v4.1.3.sql @@ -3,7 +3,7 @@ -- https://www.phpmyadmin.net/ -- -- 主机: 127.0.0.1 --- 生成日期: 2024-09-09 17:58:40 +-- 生成日期: 2024-09-10 10:42:42 -- 服务器版本: 8.0.33 -- PHP 版本: 8.1.2-1ubuntu2.18 @@ -212,8 +212,8 @@ CREATE TABLE `chatgpt_configs` ( -- INSERT INTO `chatgpt_configs` (`id`, `marker`, `config_json`) VALUES -(1, 'system', '{\"title\":\"GeekAI 创作助手\",\"slogan\":\"我辈之人,先干为敬,让每一个人都能用好AI\",\"admin_title\":\"GeekAI 控制台\",\"logo\":\"/images/logo.png\",\"init_power\":100,\"invite_power\":200,\"vip_month_power\":1000,\"register_ways\":[\"username\",\"email\",\"mobile\"],\"enabled_register\":true,\"order_pay_timeout\":600,\"vip_info_text\":\"月度会员,年度会员每月赠送 1000 点算力,赠送算力当月有效当月没有消费完的算力不结余到下个月。 点卡充值的算力长期有效。\",\"default_models\":[1],\"mj_power\":20,\"mj_action_power\":5,\"sd_power\":5,\"dall_power\":10,\"suno_power\":10,\"luma_power\":120,\"wechat_card_url\":\"/images/wx.png\",\"enable_context\":true,\"context_deep\":4,\"sd_neg_prompt\":\"nsfw, paintings,low quality,easynegative,ng_deepnegative ,lowres,bad anatomy,bad hands,bad feet\",\"mj_mode\":\"fast\",\"index_bg_url\":\"color\",\"index_navs\":[1,5,13,19,9,12,8,6],\"copyright\":\"极客学长 © 2022- 2024 All rights reserved\",\"mark_map_text\":\"# GeekAI 演示站\\n\\n- 完整的开源系统,前端应用和后台管理系统皆可开箱即用。\\n- 基于 Websocket 实现,完美的打字机体验。\\n- 内置了各种预训练好的角色应用,轻松满足你的各种聊天和应用需求。\\n- 支持 OPenAI,Azure,文心一言,讯飞星火,清华 ChatGLM等多个大语言模型。\\n- 支持 MidJourney / Stable Diffusion AI 绘画集成,开箱即用。\\n- 支持使用个人微信二维码作为充值收费的支付渠道,无需企业支付通道。\\n- 已集成支付宝支付功能,微信支付,支持多种会员套餐和点卡购买功能。\\n- 集成插件 API 功能,可结合大语言模型的 function 功能开发各种强大的插件。\",\"enabled_verify\":true}'), -(3, 'notice', '{\"sd_neg_prompt\":\"\",\"mj_mode\":\"\",\"index_bg_url\":\"\",\"index_navs\":null,\"copyright\":\"\",\"mark_map_text\":\"\",\"enabled_verify\":false,\"content\":\"## v4.1.2 更新日志\\n\\n* Bug修复:修复思维导图页面获取模型失败的问题\\n* 功能优化:优化MJ,SD,DALL-E 任务列表页面,显示失败任务的错误信息,删除失败任务可以恢复扣减算力\\n* Bug修复:修复后台拖动排序组件 Bug\\n* 功能优化:更新数据库失败时候显示具体的的报错信息\\n* Bug修复:修复管理后台对话详情页内容显示异常问题\\n* 功能优化:管理后台新增清空所有未支付订单的功能\\n* 功能优化:给会话信息和系统配置数据加上缓存功能,减少 http 请求\\n* 功能新增:增加卡密功能,支持用户使用卡密兑换算力\\n\\n注意:当前站点仅为开源项目 \\u003ca style=\\\"color: #F56C6C\\\" href=\\\"https://github.com/yangjian102621/chatgpt-plus\\\" target=\\\"_blank\\\"\\u003eChatPlus\\u003c/a\\u003e 的演示项目,本项目单纯就是给大家体验项目功能使用。\\n\\u003cstrong style=\\\"color: #F56C6C\\\"\\u003e体验额度用完之后请不要在当前站点进行任何充值操作!!!\\u003c/strong\\u003e\\n\\u003cstrong style=\\\"color: #F56C6C\\\"\\u003e体验额度用完之后请不要在当前站点进行任何充值操作!!!\\u003c/strong\\u003e\\n\\u003cstrong style=\\\"color: #F56C6C\\\"\\u003e体验额度用完之后请不要在当前站点进行任何充值操作!!!\\u003c/strong\\u003e\\n 如果觉得好用你就花几分钟自己部署一套,没有API KEY 的同学可以去下面几个推荐的中转站购买:\\n1、\\u003ca href=\\\"https://api.chat-plus.net\\\" target=\\\"_blank\\\"\\n style=\\\"font-size: 20px;color:#F56C6C\\\"\\u003ehttps://api.chat-plus.net\\u003c/a\\u003e\\n2、\\u003ca href=\\\"https://api.geekai.me\\\" target=\\\"_blank\\\"\\n style=\\\"font-size: 20px;color:#F56C6C\\\"\\u003ehttps://api.geekai.me\\u003c/a\\u003e\\n3、 \\u003ca href=\\\"https://gpt.bemore.lol\\\" target=\\\"_blank\\\"\\n style=\\\"font-size: 20px;color:#F56C6C\\\"\\u003ehttps://gpt.bemore.lol\\u003c/a\\u003e\\n支持MidJourney,GPT,Claude,Google Gemmi,以及国内各个厂家的大模型,现在有超级优惠,价格远低于 OpenAI 官方。关于中转 API 的优势和劣势请参考 [中转API技术原理](https://docs.geekai.me/config/chat/#%E4%B8%AD%E8%BD%ACapi%E5%B7%A5%E4%BD%9C%E5%8E%9F%E7%90%86)。GPT-3.5,GPT-4,DALL-E3 绘图......你都可以随意使用,无需魔法。\\n接入教程: \\u003ca href=\\\"https://docs.geekai.me\\\" target=\\\"_blank\\\"\\n style=\\\"font-size: 20px;color:#F56C6C\\\"\\u003ehttps://docs.geekai.me\\u003c/a\\u003e\\n本项目源码地址:\\u003ca href=\\\"https://github.com/yangjian102621/chatgpt-plus\\\" target=\\\"_blank\\\"\\u003ehttps://github.com/yangjian102621/chatgpt-plus\\u003c/a\\u003e\",\"updated\":true}'); +(1, 'system', '{\"title\":\"GeekAI 创作助手\",\"slogan\":\"我辈之人,先干为敬,让每一个人都能用好AI\",\"admin_title\":\"GeekAI 控制台\",\"logo\":\"/images/logo.png\",\"init_power\":100,\"invite_power\":200,\"vip_month_power\":1000,\"register_ways\":[\"username\",\"email\",\"mobile\"],\"enabled_register\":true,\"order_pay_timeout\":600,\"vip_info_text\":\"月度会员,年度会员每月赠送 1000 点算力,赠送算力当月有效当月没有消费完的算力不结余到下个月。 点卡充值的算力长期有效。\",\"default_models\":[1],\"mj_power\":20,\"mj_action_power\":5,\"sd_power\":5,\"dall_power\":10,\"suno_power\":10,\"luma_power\":120,\"wechat_card_url\":\"/images/wx.png\",\"enable_context\":true,\"context_deep\":4,\"sd_neg_prompt\":\"nsfw, paintings,low quality,easynegative,ng_deepnegative ,lowres,bad anatomy,bad hands,bad feet\",\"mj_mode\":\"fast\",\"index_bg_url\":\"color\",\"index_navs\":[1,5,13,19,9,12,6,20,8,10],\"copyright\":\"极客学长 © 2022- 2024 All rights reserved\",\"mark_map_text\":\"# GeekAI 演示站\\n\\n- 完整的开源系统,前端应用和后台管理系统皆可开箱即用。\\n- 基于 Websocket 实现,完美的打字机体验。\\n- 内置了各种预训练好的角色应用,轻松满足你的各种聊天和应用需求。\\n- 支持 OPenAI,Azure,文心一言,讯飞星火,清华 ChatGLM等多个大语言模型。\\n- 支持 MidJourney / Stable Diffusion AI 绘画集成,开箱即用。\\n- 支持使用个人微信二维码作为充值收费的支付渠道,无需企业支付通道。\\n- 已集成支付宝支付功能,微信支付,支持多种会员套餐和点卡购买功能。\\n- 集成插件 API 功能,可结合大语言模型的 function 功能开发各种强大的插件。\",\"enabled_verify\":true}'), +(3, 'notice', '{\"sd_neg_prompt\":\"\",\"mj_mode\":\"\",\"index_bg_url\":\"\",\"index_navs\":null,\"copyright\":\"\",\"mark_map_text\":\"\",\"enabled_verify\":false,\"content\":\"## v4.1.3 更新日志\\n\\n* 功能优化:重构用户登录模块,给所有的登录组件增加行为验证码功能,支持用户绑定手机,邮箱和微信\\n* 功能优化:重构找回密码模块,支持通过手机或者邮箱找回密码\\n* 功能优化:管理后台给可以拖动排序的组件添加拖动图标\\n* 功能优化:Suno 支持合成完整歌曲,和上传自己的音乐作品进行二次创作\\n* Bug修复:手机端角色和模型选择不生效\\n* Bug修复:用户登录过期之后聊天页面出现大量报错,需要刷新页面才能正常\\n* 功能优化:优化聊天页面 Websocket 断线重连代码,提高用户体验\\n* 功能优化:给算力增减服务全部加上数据库事务和同步锁\\n* 功能优化:支持用户在前端对话界面选择插件\\n* 功能新增:支持 Luma 文生视频功能\\n\\n注意:当前站点仅为开源项目 \\u003ca style=\\\"color: #F56C6C\\\" href=\\\"https://github.com/yangjian102621/geekai\\\" target=\\\"_blank\\\"\\u003eGeekAI-Plus\\u003c/a\\u003e 的演示项目,本项目单纯就是给大家体验项目功能使用。\\n\\u003cstrong style=\\\"color: #F56C6C\\\"\\u003e体验额度用完之后请不要在当前站点进行任何充值操作!!!\\u003c/strong\\u003e\\n\\u003cstrong style=\\\"color: #F56C6C\\\"\\u003e体验额度用完之后请不要在当前站点进行任何充值操作!!!\\u003c/strong\\u003e\\n\\u003cstrong style=\\\"color: #F56C6C\\\"\\u003e体验额度用完之后请不要在当前站点进行任何充值操作!!!\\u003c/strong\\u003e\\n 如果觉得好用你就花几分钟自己部署一套,没有API KEY 的同学可以去下面几个推荐的中转站购买:\\n1、\\u003ca href=\\\"https://api.chat-plus.net\\\" target=\\\"_blank\\\"\\n style=\\\"font-size: 20px;color:#F56C6C\\\"\\u003ehttps://api.chat-plus.net\\u003c/a\\u003e\\n2、\\u003ca href=\\\"https://api.geekai.me\\\" target=\\\"_blank\\\"\\n style=\\\"font-size: 20px;color:#F56C6C\\\"\\u003ehttps://api.geekai.me\\u003c/a\\u003e\\n3、 \\u003ca href=\\\"https://gpt.bemore.lol\\\" target=\\\"_blank\\\"\\n style=\\\"font-size: 20px;color:#F56C6C\\\"\\u003ehttps://gpt.bemore.lol\\u003c/a\\u003e\\n支持MidJourney,GPT,Claude,Google Gemmi,以及国内各个厂家的大模型,现在有超级优惠,价格远低于 OpenAI 官方。关于中转 API 的优势和劣势请参考 [中转API技术原理](https://docs.geekai.me/config/chat/#%E4%B8%AD%E8%BD%ACapi%E5%B7%A5%E4%BD%9C%E5%8E%9F%E7%90%86)。GPT-3.5,GPT-4,DALL-E3 绘图......你都可以随意使用,无需魔法。\\n接入教程: \\u003ca href=\\\"https://docs.geekai.me\\\" target=\\\"_blank\\\"\\n style=\\\"font-size: 20px;color:#F56C6C\\\"\\u003ehttps://docs.geekai.me\\u003c/a\\u003e\\n本项目源码地址:\\u003ca href=\\\"https://github.com/yangjian102621/geekai\\\" target=\\\"_blank\\\"\\u003ehttps://github.com/yangjian102621/geekai\\u003c/a\\u003e\",\"updated\":true}'); -- -------------------------------------------------------- @@ -231,7 +231,7 @@ CREATE TABLE `chatgpt_dall_jobs` ( `publish` tinyint(1) NOT NULL COMMENT '是否发布', `power` smallint NOT NULL COMMENT '消耗算力', `progress` smallint NOT NULL COMMENT '任务进度', - `err_msg` varchar(255) NOT NULL COMMENT '错误信息', + `err_msg` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '错误信息', `created_at` datetime NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='DALLE 绘图任务表'; @@ -371,7 +371,7 @@ CREATE TABLE `chatgpt_mj_jobs` ( `progress` smallint DEFAULT '0' COMMENT '任务进度', `use_proxy` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否使用反代', `publish` tinyint(1) NOT NULL COMMENT '是否发布', - `err_msg` varchar(255) DEFAULT NULL COMMENT '错误信息', + `err_msg` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '错误信息', `power` smallint NOT NULL DEFAULT '0' COMMENT '消耗算力', `created_at` datetime NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='MidJourney 任务表'; @@ -487,7 +487,7 @@ CREATE TABLE `chatgpt_sd_jobs` ( `params` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci COMMENT '绘画参数json', `progress` smallint DEFAULT '0' COMMENT '任务进度', `publish` tinyint(1) NOT NULL COMMENT '是否发布', - `err_msg` varchar(255) DEFAULT NULL COMMENT '错误信息', + `err_msg` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '错误信息', `power` smallint NOT NULL DEFAULT '0' COMMENT '消耗算力', `created_at` datetime NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='Stable Diffusion 任务表'; @@ -519,7 +519,7 @@ CREATE TABLE `chatgpt_suno_jobs` ( `progress` smallint DEFAULT '0' COMMENT '任务进度', `duration` smallint NOT NULL DEFAULT '0' COMMENT '歌曲时长', `publish` tinyint(1) NOT NULL COMMENT '是否发布', - `err_msg` varchar(255) DEFAULT NULL COMMENT '错误信息', + `err_msg` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '错误信息', `raw_data` text COMMENT '原始数据', `power` smallint NOT NULL DEFAULT '0' COMMENT '消耗算力', `play_times` int DEFAULT NULL COMMENT '播放次数', @@ -562,28 +562,7 @@ CREATE TABLE `chatgpt_users` ( -- INSERT INTO `chatgpt_users` (`id`, `username`, `mobile`, `email`, `nickname`, `password`, `avatar`, `salt`, `power`, `expired_time`, `status`, `chat_config_json`, `chat_roles_json`, `chat_models_json`, `last_login_at`, `vip`, `last_login_ip`, `openid`, `platform`, `created_at`, `updated_at`) VALUES -(4, '18888888888', '18575670125', 'yangjian@pvc123.com', '极客学长', 'ccc3fb7ab61b8b5d096a4a166ae21d121fc38c71bbd1be6173d9ab973214a63b', 'http://localhost:5678/static/upload/2024/5/1715651569509929.png', 'ueedue5l', 4830, 0, 1, '{\"api_keys\":{\"Azure\":\"\",\"ChatGLM\":\"\",\"OpenAI\":\"\"}}', '[\"red_book\",\"gpt\",\"seller\",\"artist\",\"lu_xun\",\"girl_friend\",\"psychiatrist\",\"teacher\",\"programmer\",\"test\",\"qing_gan_da_shi\",\"english_trainer\",\"elon_musk\",\"kong_zi\"]', '[1,11]', 1725853969, 1, '::1', 'oCs0t64FaOLfiTbHZpOqk3aUp_94', NULL, '2023-06-12 16:47:17', '2024-09-09 11:52:49'), -(9, '1234567', NULL, NULL, '极客学长@604526', '858e2afec79e1d6364f4567f945f2310024896d9aa45dd944efa95a0c31e4d08', '/images/avatar/user.png', '00qawlos', 100, 0, 1, '', '[\"gpt\"]', '[11,7,1,10,12,19,18,17,3]', 0, 0, '', NULL, NULL, '2024-04-26 15:21:06', '2024-04-26 15:21:06'), -(11, 'abc123', NULL, NULL, '极客学长@965562', '7a15c53afdb1da7093d80f9940e716eb396e682cfb1f2d107d0b81b183a3ba13', '/images/avatar/user.png', '6433mfbk', 1124, 0, 1, '', '[\"gpt\"]', '[11,7,1,10,12,19,18,17,3]', 0, 0, '', NULL, NULL, '2024-06-06 09:37:44', '2024-06-06 09:37:44'), -(14, 'wx@3567548322', NULL, NULL, '极客学长', '5a349ba89582a4074938b5a3ce84e87c937681ad47e8b87aab03a987e22b6077', 'https://thirdwx.qlogo.cn/mmopen/vi_32/uyxRMqZcEkb7fHouKXbNzxrnrvAttBKkwNlZ7yFibibRGiahdmsrZ3A1NKf8Fw5qJNJn4TXRmygersgEbibaSGd9Sg/132', 'abhzbmij', 83, 0, 1, '', '[\"gpt\"]', '[11,7,1,10,12,19,18,17,3]', 1723537600, 0, '::1', '', '', '2024-07-04 14:52:08', '2024-08-13 16:26:41'), -(15, 'user123', NULL, NULL, '极客学长@191303', '4a4c0a14d5fc8787357517f14f6e442281b42c8ec4395016b77483997476011e', '/images/avatar/user.png', 'cyzwkbrx', 100, 0, 1, '', '[\"gpt\"]', '[11,7,1,10,12,19,18,17,3]', 0, 0, '', '', '', '2024-07-09 10:49:27', '2024-07-09 10:49:27'), -(17, 'user1234', NULL, NULL, '极客学长@836764', 'bfe03c9c8c9fff5b77e36e40e8298ad3a6073d43c6a936b008eebb21113bf550', '/images/avatar/user.png', '1d2alwnj', 100, 0, 1, '', '[\"gpt\"]', '[11,7,1,10,12,19,18,17,3]', 0, 0, '', '', '', '2024-07-09 10:53:17', '2024-07-09 10:53:17'), -(21, 'husm@pvc123.com', NULL, NULL, '极客学长@721654', 'e030537dc43fea1bf1fa55a24f99e44f29311bebea96e88ea186995c77db083b', '/images/avatar/user.png', 'p1etg3oi', 100, 0, 1, '', '[\"gpt\"]', '[11,7,1,10,12,19,18,17,3]', 0, 0, '', '', '', '2024-07-11 16:50:33', '2024-07-11 16:50:33'), -(22, '15818323616', NULL, NULL, 'ted0000', '3ca6b2ff585d03be8ca4de33ad00148497a09372914ee8aa4cfde343266cbcdd', 'http://localhost:5678/static/upload/2024/7/1720775695548167.jpg', 'sq4s1brf', 100, 0, 1, '', '[\"gpt\"]', '[11,7,1,10,12,19,18,17,3]', 1721785366, 0, '172.22.11.36', '', '', '2024-07-12 15:12:16', '2024-07-24 09:42:46'), -(26, 'admin1', NULL, NULL, '极客学长@282111', 'c26d3c966ea66eb7bf1549f24a66af386465c16757328bfb9f3077ae5effcfb1', '/images/avatar/user.png', 'v76iw0k1', 100, 0, 1, '', '[\"gpt\"]', '[1]', 0, 0, '', '', '', '2024-08-13 12:07:30', '2024-08-13 12:07:30'), -(27, 'admin3', NULL, NULL, '极客学长@172692', 'b1a67a2e3e630c532a9127050256aaa9bb6ee03fa0bdf54d73edbbcc5b0a44af', '/images/avatar/user.png', '5wmclwgh', 100, 0, 1, '', '[\"gpt\"]', '[1]', 0, 0, '', '', '', '2024-08-13 12:12:04', '2024-08-13 12:12:04'), -(28, 'admin4', NULL, NULL, '极客学长@936655', '0a756e0bff6c4b8b19522ff443abd98739fdd746b561bfcd1430ea29996d4ca3', '/images/avatar/user.png', 'j4r5ywfe', 100, 0, 1, '', '[\"gpt\"]', '[1]', 0, 0, '', '', '', '2024-08-13 12:12:49', '2024-08-13 12:12:49'), -(29, 'admin11', NULL, NULL, '极客学长@822189', 'bd950072a8b944be77ec3054ba75632de4b6a79555f9ceece984d8d91cd6781c', '/images/avatar/user.png', '4hi9ein6', 100, 0, 1, '', '[\"gpt\"]', '[1]', 0, 0, '', '', '', '2024-08-13 14:11:14', '2024-08-13 14:11:14'), -(30, 'admin5', NULL, NULL, '极客学长@789501', 'ada230c9805f19100dfb5f33a7867f94786db1215654113d29305ab3755b1bf9', '/images/avatar/user.png', 'xvhao7x4', 100, 0, 1, '', '[\"gpt\"]', '[1]', 0, 0, '', '', '', '2024-08-13 14:13:35', '2024-08-13 14:13:35'), -(31, 'admin67', NULL, NULL, '极客学长@343467', 'fea7ad23610e9aeca7230c422b95adacbab817f097d4e4753fe0b33a1c883172', '/images/avatar/user.png', 'cqmgcj6y', 100, 0, 1, '', '[\"gpt\"]', '[1]', 0, 0, '', '', '', '2024-08-13 14:14:01', '2024-08-30 09:25:45'), -(32, 'admin7', NULL, NULL, '极客学长@286350', '25f059928fd2db417a844371847bb280d4c31907085180ca44265dd6eebab77f', '/images/avatar/user.png', 'bqmph02n', 100, 0, 1, '', '[\"gpt\"]', '[1]', 0, 0, '', '', '', '2024-08-13 14:16:08', '2024-08-13 14:16:08'), -(33, 'user1', NULL, NULL, '极客学长@172155', '41435a562af10889f545a90d02635911d3af639eb580bf9b77382e75375fde06', '/images/avatar/user.png', '8mk6g4qx', 100, 0, 1, '', '[\"gpt\"]', '[1]', 1723530263, 0, '::1', '', '', '2024-08-13 14:19:47', '2024-08-13 14:24:24'), -(34, 'wx@4425914709', '', '', '极客学长', 'f88cfd707b1cc793fc51f8a50b499d4bf4afae032a594f968011c50fb93ae531', 'https://thirdwx.qlogo.cn/mmopen/vi_32/uyxRMqZcEkb7fHouKXbNzxrnrvAttBKkwNlZ7yFibibRGiahdmsrZ3A1NKf8Fw5qJNJn4TXRmygersgEbibaSGd9Sg/132', 'naa3fvjo', 100, 0, 1, '', '[\"gpt\"]', '[1]', 0, 0, '', NULL, '', '2024-08-13 16:36:08', '2024-08-13 16:36:08'), -(35, 'wx@2463076272', '', '', '极客学长', '02ad55a3828af665168ace544678b848bf7b3681878e8c055e1494973124e903', 'https://thirdwx.qlogo.cn/mmopen/vi_32/uyxRMqZcEkb7fHouKXbNzxrnrvAttBKkwNlZ7yFibibRGiahdmsrZ3A1NKf8Fw5qJNJn4TXRmygersgEbibaSGd9Sg/132', 'kgt5wq2m', 100, 0, 1, '', '[\"gpt\"]', '[1]', 1723539827, 0, '::1', '', '', '2024-08-13 16:48:37', '2024-08-13 17:03:48'), -(36, 'wx@2206731379', '', '', '极客学长', '92803ab5221da03e1f663c1381648476eb8c975094570e9980843adbd6415dca', 'https://thirdwx.qlogo.cn/mmopen/vi_32/uyxRMqZcEkb7fHouKXbNzxrnrvAttBKkwNlZ7yFibibRGiahdmsrZ3A1NKf8Fw5qJNJn4TXRmygersgEbibaSGd9Sg/132', 'xppsctgl', 100, 0, 1, '', '[\"gpt\"]', '[1]', 1723539964, 0, '::1', '', '', '2024-08-13 17:04:19', '2024-08-13 17:06:05'), -(37, 'wx@5354985253', '18575670126', 'yangjian1@pvc123.com', '极客学长', 'a0cdb6bf32424c4f3534ea9c0326898537e5a76a12ef0170a1eadd68e7931804', 'https://thirdwx.qlogo.cn/mmopen/vi_32/uyxRMqZcEkb7fHouKXbNzxrnrvAttBKkwNlZ7yFibibRGiahdmsrZ3A1NKf8Fw5qJNJn4TXRmygersgEbibaSGd9Sg/132', 'kcpgg3fs', 97, 0, 1, '', '[\"gpt\"]', '[1]', 1724037840, 0, '::1', 'oCs0t62472W19z2LOEKI1rWyCTTA', '', '2024-08-13 17:16:26', '2024-08-19 11:24:00'), -(38, 'yangjian102621@gmail.com', '', 'yangjian102621@gmail.com', '极客学长@479380', '18c9c557eee244127e5b841308292e14085cd4e44c44e929eb0eb2355471807b', '/images/avatar/user.png', 'zjyyjdfu', 100, 0, 1, '', '[\"gpt\"]', '[1]', 0, 0, '', '', '', '2024-08-13 18:39:14', '2024-08-30 09:25:24'), -(39, '17620556057', '17620556057', '', '极客学长@896656', 'a7794114454933b3128cf7b17b1c9167943b0d59f85b1490a56f37b12126ebfc', '/images/avatar/user.png', 'qajhd6sj', 96, 0, 1, '', '[\"gpt\"]', '[1]', 0, 0, '', '', '', '2024-08-30 15:03:32', '2024-08-30 15:03:32'); +(4, '18888888888', '18575670125', 'yangjian@pvc123.com', '极客学长', 'ccc3fb7ab61b8b5d096a4a166ae21d121fc38c71bbd1be6173d9ab973214a63b', 'http://localhost:5678/static/upload/2024/5/1715651569509929.png', 'ueedue5l', 4710, 0, 1, '{\"api_keys\":{\"Azure\":\"\",\"ChatGLM\":\"\",\"OpenAI\":\"\"}}', '[\"red_book\",\"gpt\",\"seller\",\"artist\",\"lu_xun\",\"girl_friend\",\"psychiatrist\",\"teacher\",\"programmer\",\"test\",\"qing_gan_da_shi\",\"english_trainer\",\"elon_musk\",\"kong_zi\"]', '[1,11]', 1725853969, 1, '::1', 'oCs0t64FaOLfiTbHZpOqk3aUp_94', NULL, '2023-06-12 16:47:17', '2024-09-09 11:52:49'); -- -------------------------------------------------------- @@ -622,7 +601,7 @@ CREATE TABLE `chatgpt_video_jobs` ( `water_url` varchar(512) DEFAULT NULL COMMENT '带水印的视频地址', `progress` smallint DEFAULT '0' COMMENT '任务进度', `publish` tinyint(1) NOT NULL COMMENT '是否发布', - `err_msg` varchar(255) DEFAULT NULL COMMENT '错误信息', + `err_msg` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '错误信息', `raw_data` text COMMENT '原始数据', `params` varchar(512) DEFAULT NULL COMMENT '参数JSON', `power` smallint NOT NULL DEFAULT '0' COMMENT '消耗算力', diff --git a/database/update-v4.1.3.sql b/database/update-v4.1.3.sql index 22dda9ba..34898698 100644 --- a/database/update-v4.1.3.sql +++ b/database/update-v4.1.3.sql @@ -14,7 +14,7 @@ CREATE TABLE `chatgpt_video_jobs` ( `water_url` varchar(512) DEFAULT NULL COMMENT '带水印的视频地址', `progress` smallint DEFAULT '0' COMMENT '任务进度', `publish` tinyint(1) NOT NULL COMMENT '是否发布', - `err_msg` varchar(255) DEFAULT NULL COMMENT '错误信息', + `err_msg` varchar(512) DEFAULT NULL COMMENT '错误信息', `raw_data` text COMMENT '原始数据', `power` smallint NOT NULL DEFAULT '0' COMMENT '消耗算力', `created_at` datetime NOT NULL @@ -24,4 +24,12 @@ ALTER TABLE `chatgpt_video_jobs`ADD PRIMARY KEY (`id`); ALTER TABLE `chatgpt_video_jobs` MODIFY `id` int NOT NULL AUTO_INCREMENT; -ALTER TABLE `chatgpt_video_jobs` ADD `params` VARCHAR(512) NULL COMMENT '参数JSON' AFTER `raw_data`; \ No newline at end of file +ALTER TABLE `chatgpt_video_jobs` ADD `params` VARCHAR(512) NULL COMMENT '参数JSON' AFTER `raw_data`; + +ALTER TABLE `chatgpt_suno_jobs` CHANGE `err_msg` `err_msg` VARCHAR(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '错误信息'; + +ALTER TABLE `chatgpt_sd_jobs` CHANGE `err_msg` `err_msg` VARCHAR(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '错误信息'; + +ALTER TABLE `chatgpt_mj_jobs` CHANGE `err_msg` `err_msg` VARCHAR(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '错误信息'; + +ALTER TABLE `chatgpt_dall_jobs` CHANGE `err_msg` `err_msg` VARCHAR(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '错误信息'; \ No newline at end of file diff --git a/web/src/assets/css/luma.styl b/web/src/assets/css/luma.styl index 1025a83e..9482d12d 100644 --- a/web/src/assets/css/luma.styl +++ b/web/src/assets/css/luma.styl @@ -259,7 +259,8 @@ color #726E6C &:hover { - background #3C3737 + background #5f5958 + color #e1e1e1 } } } diff --git a/web/src/assets/css/suno.styl b/web/src/assets/css/suno.styl index a193d7de..42872022 100644 --- a/web/src/assets/css/suno.styl +++ b/web/src/assets/css/suno.styl @@ -303,7 +303,8 @@ color #726E6C &:hover { - background #3C3737 + background #5f5958 + color #e1e1e1 } } } diff --git a/web/src/assets/iconfont/iconfont.css b/web/src/assets/iconfont/iconfont.css index 1e8ed795..31901bb5 100644 --- a/web/src/assets/iconfont/iconfont.css +++ b/web/src/assets/iconfont/iconfont.css @@ -1,8 +1,8 @@ @font-face { font-family: "iconfont"; /* Project id 4125778 */ - src: url('iconfont.woff2?t=1725863856362') format('woff2'), - url('iconfont.woff?t=1725863856362') format('woff'), - url('iconfont.ttf?t=1725863856362') format('truetype'); + src: url('iconfont.woff2?t=1725929120246') format('woff2'), + url('iconfont.woff?t=1725929120246') format('woff'), + url('iconfont.ttf?t=1725929120246') format('truetype'); } .iconfont { @@ -13,6 +13,10 @@ -moz-osx-font-smoothing: grayscale; } +.icon-luma:before { + content: "\e704"; +} + .icon-exchange:before { content: "\e6f5"; } diff --git a/web/src/assets/iconfont/iconfont.js b/web/src/assets/iconfont/iconfont.js index e0f1f93d..ad94b5e2 100644 --- a/web/src/assets/iconfont/iconfont.js +++ b/web/src/assets/iconfont/iconfont.js @@ -1 +1 @@ -window._iconfont_svg_string_4125778='',(a=>{var l=(c=(c=document.getElementsByTagName("script"))[c.length-1]).getAttribute("data-injectcss"),c=c.getAttribute("data-disable-injectsvg");if(!c){var t,h,i,o,z,m=function(l,c){c.parentNode.insertBefore(l,c)};if(l&&!a.__iconfont__svg__cssinject__){a.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(l){console&&console.log(l)}}t=function(){var l,c=document.createElement("div");c.innerHTML=a._iconfont_svg_string_4125778,(c=c.getElementsByTagName("svg")[0])&&(c.setAttribute("aria-hidden","true"),c.style.position="absolute",c.style.width=0,c.style.height=0,c.style.overflow="hidden",c=c,(l=document.body).firstChild?m(c,l.firstChild):l.appendChild(c))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(t,0):(h=function(){document.removeEventListener("DOMContentLoaded",h,!1),t()},document.addEventListener("DOMContentLoaded",h,!1)):document.attachEvent&&(i=t,o=a.document,z=!1,p(),o.onreadystatechange=function(){"complete"==o.readyState&&(o.onreadystatechange=null,s())})}function s(){z||(z=!0,i())}function p(){try{o.documentElement.doScroll("left")}catch(l){return void setTimeout(p,50)}s()}})(window); \ No newline at end of file +window._iconfont_svg_string_4125778='',(a=>{var l=(c=(c=document.getElementsByTagName("script"))[c.length-1]).getAttribute("data-injectcss"),c=c.getAttribute("data-disable-injectsvg");if(!c){var t,h,i,o,z,m=function(l,c){c.parentNode.insertBefore(l,c)};if(l&&!a.__iconfont__svg__cssinject__){a.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(l){console&&console.log(l)}}t=function(){var l,c=document.createElement("div");c.innerHTML=a._iconfont_svg_string_4125778,(c=c.getElementsByTagName("svg")[0])&&(c.setAttribute("aria-hidden","true"),c.style.position="absolute",c.style.width=0,c.style.height=0,c.style.overflow="hidden",c=c,(l=document.body).firstChild?m(c,l.firstChild):l.appendChild(c))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(t,0):(h=function(){document.removeEventListener("DOMContentLoaded",h,!1),t()},document.addEventListener("DOMContentLoaded",h,!1)):document.attachEvent&&(i=t,o=a.document,z=!1,p(),o.onreadystatechange=function(){"complete"==o.readyState&&(o.onreadystatechange=null,s())})}function s(){z||(z=!0,i())}function p(){try{o.documentElement.doScroll("left")}catch(l){return void setTimeout(p,50)}s()}})(window); \ No newline at end of file diff --git a/web/src/assets/iconfont/iconfont.json b/web/src/assets/iconfont/iconfont.json index c58dfdf4..f114daa2 100644 --- a/web/src/assets/iconfont/iconfont.json +++ b/web/src/assets/iconfont/iconfont.json @@ -5,6 +5,13 @@ "css_prefix_text": "icon-", "description": "", "glyphs": [ + { + "icon_id": "41645421", + "name": "luma-logo", + "font_class": "luma", + "unicode": "e704", + "unicode_decimal": 59140 + }, { "icon_id": "7573248", "name": "exchange", diff --git a/web/src/assets/iconfont/iconfont.ttf b/web/src/assets/iconfont/iconfont.ttf index c6f10b8616ef50a7295b7678b72c80541bcbb633..f00663eccf08e1b716563b5d864c8fdaa3285968 100644 GIT binary patch delta 1997 zcmb7_du)?c7{;Hk{n~Xmw(bIBo4emH9YYv`MJ^6dn4qYr2*ZYPahGmJlqqJ#L3CNf zj1-Mo(3lvJ7(*6Ujae24bhdEV!F z8~MdLe90PG6#D7fiA8|34e%80>wIDF(vprSkkSn7>e;_1&{mW9y&u3dY1+>Rp3m(G zUXPQq{apuo58ayk0kCFCZ)f-JfcKBTZUV_i`Tg0hKyQzA$Xdqla(G`940P>Df6qSx zbVLBhzMk%9QxB~9ZQwEx%;zEk$Hz-owZh`NWOvi~XLhCeuOr#!1K^TtL*c*Yxj*L) z+E<)|y!XIip7LY{XUxHc-pFr#2>(M2G00Z9nVSpFA>;|e!d#SYPjGF4?8zm zcKBCkH;-HGV<9t95Pk8{kE0mGYj_=R#>YvRaVkDe!;BB{5zhQKM(`=e*#8>fI_}03 zSb-;T7b-)z1KD^S_n-_mw&5Xo@hFy|5ILy95^P5W)?f$fx%fx06!&5i?nFL{;m2Am zLJ1miA4;(RO-M!&79$IJ*aXfMARQTa7|qy-&B#S2g)g9@u-sv<`$l-kP7I}(D%hRo$j?qdcrtK@ z5SGWly+RxccMahj2JRoiN*kyI#HCOZh+9D=&j|`;f_M}P21#P&gaxK{5H7_)6(Q*g z^@Mm8DhtU_s4;~0Gf-`anV3*_NU_2SKuQ$W0#d55DiAX-L5L=o3WcSDnAH*%4Px#I z%Ll1dSV%~{!jeLK3X2PAP*`RN18QKwA&m-44>9u+ngGH@h0K9|fGk(&42Y4H&?68d zJ)v75euch)7?lVe1X-=nOOSt{s~~1xLVrP;6*>*FPNC;QkoCMFv>#-HLL)-VLI^Dh z*`m;#5Tgb`5znUPgocF#6j~S3uF%AgZYA!m9$pg~8*B1c0zx`4NsG&KXFOoSWD%^Divex?nn|J?H8||H7%fpxf8|uw_NtGocT}IKzEU$#n^b$T zZd<+ISLJ)jH`Gwq@EKRneawwJ-*B!p`L?_+udCdVc{^mi%+Y6^ow>bsW`?hgR;7Fw Zuv)`6y2d=#F1Fd{x&ou01VauBe*-8M&VT>_ delta 1923 zcmb7^TWnNS6o$XKbUM8NrL?pZC~ax!l~M!&p#pNPpn|BNTmn@J4fH~^0aTJ9XcP%1 z;P6D0n241$h8Sp!F-?q@s1ah~HG~I4Bv~Dh5MLnpK=9vPk#}e3+xwh7bI$Cw*8i`A zS0jUeMvk?lezt$QA+`;YxjVaF-qDemydU!GU~5}vNBj1M>|ZwnSHzr7Z6v>lf2r#s zQQg_yw}0Q=d%r;BhUn|+eWCqM=jbJn*A;%#-M)WMgdGrY_n-M86ep&B{q^9n*S?ytp>tYP@a6f9t*5_x8oF z$ByVeNi^*06Q0|WE|2_uzA)MmsT~;EAbOhE$W@cpT>Z-c@u)(ii^XKols*+(o&GD< zlin0Rnu=)mz{ohrAr5ndqnsESCkf;9$ml1GGYs(Y{c)B-jnDqafJMybSsr2|bD72@ zic)OgVW#S!&#;yPo@Nf^lu*wso})$w-b52|o?$~Q&9qn6w`A7#f-%qMUSbz z0p$V9a+DD);V3s)wxcXzNrxh>xv4Pe;SE}Klz?)G6*$T!Hr7#Iu|h`~#=^^la*a)P zly$7qQU0+iN0q?ByM$_jRXe0gbP-M{R4A<0QOU3dN5#V$9hDKA?yy*Ev!l{t5_mvG z##$Ve8=L8<@Yrle62O$DRG6d&ETmFM7g$KQkV3EpjVMbQd|mKp&KFbVJjWU5L@j?kk}e0IM70!g+z*lsDaPj)2r@ezbqg}P9rX<|Z#wEAWE6csy@bpKM_q-?4M+WjYx+8%PQx_? z6u95yyU0XVMNUL6MGK$m!2b<_+W@&A&N%$Cx<<2MW%OJv;VN;rhbw$88*!DOy{cC|+MYIDXyuZ%Y=I zTr6E*dU-^tMosPe z)0j3`+fzGKx1#P;eOvv(`rjM+8g4iK(6nTFU2{=$XY+v>r87>S@5=wFJ+dXeu;=p# J=Xz7oe*uC(wA}yz diff --git a/web/src/assets/iconfont/iconfont.woff b/web/src/assets/iconfont/iconfont.woff index bd6384cb71ab8eb6bc8b519a06530a3ed8cf82e9..ff63b66a4981c48ca2526ecbb3b8c06394358231 100644 GIT binary patch delta 17953 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 diff --git a/web/src/assets/iconfont/iconfont.woff2 b/web/src/assets/iconfont/iconfont.woff2 index be61aa71eff1205b861441a224fcf814cb94ca66..a6df0ee8c0360ad8b6a3fb72f289f09e646827b9 100644 GIT binary patch literal 16812 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

;^1D(Cf)yfO$}KB7CTwhD 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 搜索 - 新增用户 + 删除 @@ -170,8 +170,8 @@ import {onMounted, reactive, ref} from "vue"; import {httpGet, httpPost} from "@/utils/http"; import {ElMessage, ElMessageBox} from "element-plus"; -import {dateFormat, disabledDate, removeArrayItem} from "@/utils/libs"; -import {Plus, Search} from "@element-plus/icons-vue"; +import {dateFormat, disabledDate} from "@/utils/libs"; +import {Delete, Plus, Search} from "@element-plus/icons-vue"; // 变量定义 const users = ref({page: 1, page_size: 15, items: []}) @@ -281,7 +281,7 @@ const userEdit = function (row) { } const addUser = () => { - user.value = {} + user.value = {chat_id: 0, chat_roles: [], chat_models: []} title.value = '添加用户' showUserEditDialog.value = true add.value = true @@ -306,8 +306,36 @@ const saveUser = function () { }) } +const userIds = ref([]) const handleSelectionChange = function (rows) { - // console.log(rows) + userIds.value = [] + rows.forEach((row) => { + userIds.value.push(row.id) + }) +} + +const multipleDelete = function () { + ElMessageBox.confirm( + '此操作将会永久删除用户信息和聊天记录,确认操作吗?', + '警告', + { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', + } + ).then(() => { + loading.value = true + httpGet('/api/admin/user/remove', {ids: userIds.value}).then(() => { + ElMessage.success('操作成功!') + fetchUserList(users.value.page, users.value.page_size) + loading.value = false + }).catch((e) => { + ElMessage.error('操作失败,' + e.message) + loading.value = false + }) + }).catch(() => { + ElMessage.info('操作被取消') + }) } const resetPass = (row) => {