user_group.ts 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. import { get, post, put, del } from '@/request/index'
  2. import { type Ref } from 'vue'
  3. import type { Result } from '@/request/Result'
  4. export interface UserGroup {
  5. id: string
  6. name: string
  7. desc: string
  8. is_active: boolean
  9. member_count?: number
  10. auth_count?: number
  11. create_time: string
  12. }
  13. export interface UserGroupMember {
  14. id: string
  15. username: string
  16. nick_name: string
  17. }
  18. export interface UserGroupAuthorization {
  19. id: string
  20. resource_type: 'APPLICATION' | 'MODEL' | 'TOOL' | 'KNOWLEDGE'
  21. resource_id: string
  22. permission: 'READ' | 'WRITE' | 'ADMIN'
  23. }
  24. // 获取用户组列表
  25. export function getUserGroupList(
  26. workspaceId: string,
  27. loading?: Ref<boolean>,
  28. ): Promise<Result<UserGroup[]>> {
  29. return get(`workspace/${workspaceId}/user_group`, undefined, loading)
  30. }
  31. // 创建用户组
  32. export function createUserGroup(
  33. workspaceId: string,
  34. data: { name: string; desc?: string },
  35. loading?: Ref<boolean>,
  36. ): Promise<Result<UserGroup>> {
  37. return post(`workspace/${workspaceId}/user_group/create`, data, loading)
  38. }
  39. // 获取用户组详情
  40. export function getUserGroupDetail(
  41. workspaceId: string,
  42. groupId: string,
  43. loading?: Ref<boolean>,
  44. ): Promise<Result<UserGroup & { members: UserGroupMember[]; authorizations: UserGroupAuthorization[] }>> {
  45. return get(`workspace/${workspaceId}/user_group/${groupId}`, undefined, loading)
  46. }
  47. // 更新用户组
  48. export function updateUserGroup(
  49. workspaceId: string,
  50. groupId: string,
  51. data: { name?: string; desc?: string; is_active?: boolean },
  52. loading?: Ref<boolean>,
  53. ): Promise<Result<UserGroup>> {
  54. return put(`workspace/${workspaceId}/user_group/${groupId}`, data, loading)
  55. }
  56. // 删除用户组
  57. export function deleteUserGroup(
  58. workspaceId: string,
  59. groupId: string,
  60. loading?: Ref<boolean>,
  61. ): Promise<Result<boolean>> {
  62. return del(`workspace/${workspaceId}/user_group/${groupId}`, undefined, loading)
  63. }
  64. // 批量添加成员
  65. export function batchAddMembers(
  66. workspaceId: string,
  67. groupId: string,
  68. userIds: string[],
  69. loading?: Ref<boolean>,
  70. ): Promise<Result<{ added_count: number }>> {
  71. return post(`workspace/${workspaceId}/user_group/${groupId}/batch_add_members`, { user_ids: userIds }, loading)
  72. }
  73. // 批量移除成员
  74. export function batchRemoveMembers(
  75. workspaceId: string,
  76. groupId: string,
  77. userIds: string[],
  78. loading?: Ref<boolean>,
  79. ): Promise<Result<{ removed_count: number }>> {
  80. return post(`workspace/${workspaceId}/user_group/${groupId}/batch_remove_members`, { user_ids: userIds }, loading)
  81. }
  82. // 批量授权
  83. export function batchAuthorize(
  84. workspaceId: string,
  85. groupId: string,
  86. authorizations: Array<{
  87. resource_type: string
  88. resource_id: string
  89. permission?: string
  90. }>,
  91. loading?: Ref<boolean>,
  92. ): Promise<Result<{ added_count: number }>> {
  93. return post(`workspace/${workspaceId}/user_group/${groupId}/batch_authorize`, { authorizations }, loading)
  94. }
  95. // 批量撤销授权
  96. export function batchRevokeAuthorization(
  97. workspaceId: string,
  98. groupId: string,
  99. authIds: string[],
  100. loading?: Ref<boolean>,
  101. ): Promise<Result<{ removed_count: number }>> {
  102. return post(`workspace/${workspaceId}/user_group/${groupId}/batch_revoke`, { auth_ids: authIds }, loading)
  103. }