diff --git a/server/handler_admin_role.go b/server/handler_admin_role.go index 812ceb39..e7e29745 100644 --- a/server/handler_admin_role.go +++ b/server/handler_admin_role.go @@ -8,19 +8,31 @@ import ( "github.com/gin-gonic/gin" ) -// GetChatRoleListHandle 获取聊天角色列表 -func (s *Server) GetChatRoleListHandle(c *gin.Context) { - var user *types.User - username := c.Query("username") - if username != "" { - u, err := GetUser(username) - if err != nil { - c.JSON(http.StatusOK, types.BizVo{Code: types.Failed, Message: "Hacker Access!!!"}) - return +// GetAllChatRolesHandle 获取所有聊天角色列表 +func (s *Server) GetAllChatRolesHandle(c *gin.Context) { + var rolesOrder = []string{"gpt", "teacher", "translator", "english_trainer", "weekly_report", "girl_friend", + "kong_zi", "lu_xun", "steve_jobs", "elon_musk", "red_book", "dou_yin", "programmer", + "seller", "good_comment", "psychiatrist", "artist"} + var res = make([]interface{}, 0) + var roles = GetChatRoles() + for _, k := range rolesOrder { + if v, ok := roles[k]; ok { + res = append(res, v) } - user = u } + c.JSON(http.StatusOK, types.BizVo{Code: types.Success, Message: types.OkMsg, Data: res}) +} + +// GetChatRoleListHandle 获取当前登录用户的角色列表 +func (s *Server) GetChatRoleListHandle(c *gin.Context) { + sessionId := c.GetHeader(types.TokenName) + session := s.ChatSession[sessionId] + user, err := GetUser(session.Username) + if err != nil { + c.JSON(http.StatusOK, types.BizVo{Code: types.Failed, Message: "Hacker Access!!!"}) + return + } var rolesOrder = []string{"gpt", "teacher", "translator", "english_trainer", "weekly_report", "girl_friend", "kong_zi", "lu_xun", "steve_jobs", "elon_musk", "red_book", "dou_yin", "programmer", "seller", "good_comment", "psychiatrist", "artist"} @@ -28,11 +40,10 @@ func (s *Server) GetChatRoleListHandle(c *gin.Context) { var roles = GetChatRoles() for _, k := range rolesOrder { // 确认当前用户是否订阅了当前角色 - if user != nil { - if v, ok := user.ChatRoles[k]; !ok || v != 1 { - continue - } + if v, ok := user.ChatRoles[k]; !ok || v != 1 { + continue } + if v, ok := roles[k]; ok && v.Enable { res = append(res, struct { Key string `json:"key"` diff --git a/server/server.go b/server/server.go index b8d07ecb..b5a7fd75 100644 --- a/server/server.go +++ b/server/server.go @@ -40,10 +40,10 @@ type Server struct { // 保存 Websocket 会话 Username, 每个 Username 只能连接一次 // 防止第三方直接连接 socket 调用 OpenAI API - ChatSession map[string]types.ChatSession //map[sessionId]User - ChatClients map[string]*WsClient // Websocket 连接集合 - ReqCancelFunc map[string]context.CancelFunc // HttpClient 请求取消 handle function - DebugMode bool // 是否开启调试模式 + ChatSession map[string]types.ChatSession //map[sessionId]User + ChatClients map[string]*WsClient // Websocket 连接集合 + ReqCancelFunc map[string]context.CancelFunc // HttpClient 请求取消 handle function + DebugMode bool // 是否开启调试模式 } func NewServer(configPath string) (*Server, error) { @@ -63,12 +63,12 @@ func NewServer(configPath string) (*Server, error) { } } return &Server{ - Config: config, - ConfigPath: configPath, - ChatContexts: make(map[string]types.ChatContext, 16), - ChatSession: make(map[string]types.ChatSession), - ChatClients: make(map[string]*WsClient), - ReqCancelFunc: make(map[string]context.CancelFunc), + Config: config, + ConfigPath: configPath, + ChatContexts: make(map[string]types.ChatContext, 16), + ChatSession: make(map[string]types.ChatSession), + ChatClients: make(map[string]*WsClient), + ReqCancelFunc: make(map[string]context.CancelFunc), }, nil } @@ -98,18 +98,22 @@ func (s *Server) Run(webRoot embed.FS, path string, debug bool) { engine.GET("api/admin/config/get", s.ConfigGetHandle) engine.POST("api/admin/config/set", s.ConfigSetHandle) - engine.POST("api/admin/chat-roles/get", s.GetChatRoleListHandle) + + engine.POST("api/chat-roles/list", s.GetChatRoleListHandle) + engine.POST("api/admin/chat-roles/list", s.GetAllChatRolesHandle) + engine.POST("api/chat-roles/get", s.GetChatRoleHandle) engine.POST("api/admin/chat-roles/add", s.AddChatRoleHandle) + engine.POST("api/admin/chat-roles/set", s.SetChatRoleHandle) + engine.POST("api/admin/user/add", s.AddUserHandle) engine.POST("api/admin/user/batch-add", s.BatchAddUserHandle) engine.POST("api/admin/user/set", s.SetUserHandle) engine.POST("api/admin/user/list", s.GetUserListHandle) engine.POST("api/admin/user/remove", s.RemoveUserHandle) + engine.POST("api/admin/apikey/add", s.AddApiKeyHandle) engine.POST("api/admin/apikey/remove", s.RemoveApiKeyHandle) engine.POST("api/admin/apikey/list", s.ListApiKeysHandle) - engine.POST("api/admin/role/set", s.SetChatRoleHandle) - engine.POST("api/admin/role/get", s.GetChatRoleHandle) engine.POST("api/admin/proxy/add", s.AddProxyHandle) engine.POST("api/admin/proxy/remove", s.RemoveProxyHandle) diff --git a/web/src/views/admin/RoleList.vue b/web/src/views/admin/RoleList.vue index 1342a4f3..92a2481e 100644 --- a/web/src/views/admin/RoleList.vue +++ b/web/src/views/admin/RoleList.vue @@ -1,25 +1,228 @@ - \ No newline at end of file diff --git a/web/src/views/admin/UserList.vue b/web/src/views/admin/UserList.vue index f5fe3bfb..cc4e636b 100644 --- a/web/src/views/admin/UserList.vue +++ b/web/src/views/admin/UserList.vue @@ -5,7 +5,7 @@ - 新增 + 新增用户 @@ -306,7 +306,7 @@ onMounted(() => { }) // 获取角色列表 - httpPost("/api/admin/chat-roles/get").then((res) => { + httpPost('/api/admin/chat-roles/list').then((res) => { roles.value = res.data; roles.value.unshift({name: '全部', key: 'all'}) }).catch(() => {