Skip to content

Commit

Permalink
feat:删除用户组时将资源转移到默认用户组
Browse files Browse the repository at this point in the history
  • Loading branch information
zgqgit committed Jun 27, 2024
1 parent 5a2068f commit 74c0339
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 0 deletions.
5 changes: 5 additions & 0 deletions src/backend/bisheng/api/errcode/user.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,8 @@ class UserNotPasswordError(BaseErrorCode):
class UserPasswordError(BaseErrorCode):
Code: int = 10603
Msg: str = '当前密码错误'


class UserGroupNotDeleteError(BaseErrorCode):
Code: int = 10610
Msg: str = '用户组内还有用户,不能删除'
25 changes: 25 additions & 0 deletions src/backend/bisheng/api/services/role_group_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
from bisheng.api.services.assistant import AssistantService
from bisheng.api.services.audit_log import AuditLogService
from bisheng.api.services.user_service import UserPayload
from bisheng.api.errcode.user import UserGroupNotDeleteError
from bisheng.api.utils import get_request_ip
from bisheng.database.models.assistant import AssistantDao
from bisheng.database.models.flow import FlowDao
Expand Down Expand Up @@ -89,9 +90,33 @@ def delete_group(self, request: Request, login_user: UserPayload, group_id: int)
group_info = GroupDao.get_user_group(group_id)
if not group_info:
return None

# 判断组下是否还有用户
user_group_list = UserGroupDao.get_group_user(group_id)
if user_group_list:
return UserGroupNotDeleteError.return_resp()
GroupDao.delete_group(group_id)

def delete_group_hook(self, request: Request, login_user: UserPayload, group_info: int):
logger.info(f'act=delete_group_hook user={login_user.user_name} group_id={group_info.id}')
# 记录审计日志
AuditLogService.delete_user_group(login_user, get_request_ip(request), group_info)
# 将组下资源移到默认用户组
# 获取组下所有的资源
all_resource = GroupResourceDao.get_group_all_resource(group_info.id)
need_move_resource = []
for one in all_resource:
# 获取资源属于几个组,属于多个组则不用处理, 否则将资源转移到默认用户组
resourece_groups = GroupResourceDao.get_resource_group(ResourceTypeEnum(one.type), one.third_id)
if len(resourece_groups) > 1:
continue
else:
one.group_id = DefaultGroup
need_move_resource.append(one)
if need_move_resource:
GroupResourceDao.update_group_resource(need_move_resource)
GroupResourceDao.delete_group_resource_by_group_id(group_info.id)


def get_group_user_list(self, group_id: int, page_size: int, page_num: int) -> List[User]:
"""获取全量的group列表"""
Expand Down
23 changes: 23 additions & 0 deletions src/backend/bisheng/database/models/group_resource.py
Original file line number Diff line number Diff line change
Expand Up @@ -97,3 +97,26 @@ def delete_group_resource_by_third_id(cls, third_id: str, resource_type: Resourc
GroupResource.type == resource_type.value)
session.exec(statement)
session.commit()

@classmethod
def delete_group_resource_by_group_id(cls, group_id: int):
with (session_getter() as session):
statement = delete(GroupResource).where(GroupResource.group_id == group_id)
session.exec(statement)
session.commit()

@classmethod
def get_group_all_resource(cls, group_id: int) -> List[GroupResource]:
"""
获取分组下的所有资源
"""
with session_getter() as session:
return session.exec(
select(GroupResource).where(GroupResource.group_id == group_id))

@classmethod
def update_group_resource(cls, group_resources: List[GroupResource]) -> List[GroupResource]:
with (session_getter() as session):
session.add_all(group_resources)
session.commit()
return group_resources

0 comments on commit 74c0339

Please sign in to comment.