Skip to content

Commit

Permalink
feat: 删除用户组时,发布redis删除channel,清理用户组管理员 (#720)
Browse files Browse the repository at this point in the history
  • Loading branch information
zgqgit committed Jul 2, 2024
2 parents 25cc900 + 85adad2 commit aa94174
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 1 deletion.
6 changes: 5 additions & 1 deletion src/backend/bisheng/api/services/role_group_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -127,8 +127,12 @@ def delete_group_hook(self, request: Request, login_user: UserPayload, group_inf
GroupResourceDao.delete_group_resource_by_group_id(group_info.id)
# 删除用户组下的角色列表
RoleDao.delete_role_by_group_id(group_info.id)
# 删除用户组的管理员
UserGroupDao.delete_group_all_admin(group_info.id)
# 将删除事件发到redis队列中
redis_client.rpush('delete_group', json.dumps({"id": group_info.id}))
delete_message = json.dumps({"id": group_info.id})
redis_client.rpush('delete_group', delete_message)
redis_client.publish('delete_group', delete_message)

def get_group_user_list(self, group_id: int, page_size: int, page_num: int) -> List[User]:
"""获取全量的group列表"""
Expand Down
7 changes: 7 additions & 0 deletions src/backend/bisheng/cache/redis.py
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,13 @@ def rpush(self, key, value):
finally:
self.close()

def publish(self, key, value):
try:
self.cluster_nodes(key)
return self.connection.publish(key, value)
finally:
self.close()

def exists(self, key):
try:
self.cluster_nodes(key)
Expand Down
12 changes: 12 additions & 0 deletions src/backend/bisheng/database/models/user_group.py
Original file line number Diff line number Diff line change
Expand Up @@ -191,3 +191,15 @@ def delete_group_admins(cls, group_id: int, admin_ids: List[int]) -> None:
UserGroup.is_group_admin == 1)
session.exec(statement)
session.commit()

@classmethod
def delete_group_all_admin(cls, group_id: int) -> None:
"""
删除用户组下所有的管理员
"""
with session_getter() as session:
statement = delete(UserGroup).where(
UserGroup.group_id == group_id).where(
UserGroup.is_group_admin == 1)
session.exec(statement)
session.commit()

0 comments on commit aa94174

Please sign in to comment.