From 539999131caa6e5a97ac70421318509f77f2a459 Mon Sep 17 00:00:00 2001 From: wxy Date: Fri, 27 Mar 2026 14:26:46 +0800 Subject: [PATCH] feat: Update user controller --- api/app/controllers/user_controller.py | 58 ----------------------- api/app/repositories/tenant_repository.py | 24 +--------- api/app/services/tenant_service.py | 37 +-------------- 3 files changed, 2 insertions(+), 117 deletions(-) diff --git a/api/app/controllers/user_controller.py b/api/app/controllers/user_controller.py index 3626f169..cc16a6b4 100644 --- a/api/app/controllers/user_controller.py +++ b/api/app/controllers/user_controller.py @@ -147,64 +147,6 @@ def get_tenant_superusers( return success(data=superusers_schema, msg=t("users.list.superusers_success")) -@router.get("/tenant/users", response_model=ApiResponse) -def get_tenant_users( - page: int = 1, - size: int = 20, - is_active: bool = None, - is_superuser: bool = None, - search: str = None, - db: Session = Depends(get_db), - current_user: User = Depends(get_current_user), - t: Callable = Depends(get_translator) -): - """获取当前用户所在租户的用户列表(普通用户可访问)""" - api_logger.info(f"获取租户用户列表请求: tenant_id={current_user.tenant_id}, 操作者: {current_user.username}") - - if not current_user.tenant_id: - raise BusinessException("用户没有租户信息", code=BizCode.TENANT_NOT_FOUND) - - from app.services.tenant_service import TenantService - tenant_service = TenantService(db) - - skip = (page - 1) * size - users = tenant_service.get_tenant_users( - tenant_id=current_user.tenant_id, - skip=skip, - limit=size, - is_active=is_active, - is_superuser=is_superuser, - search=search - ) - total = tenant_service.count_tenant_users( - tenant_id=current_user.tenant_id, - is_active=is_active, - is_superuser=is_superuser, - search=search - ) - - users_schema = [user_schema.User.model_validate(u) for u in users] - for u_schema in users_schema: - user = users[[s.id for s in users_schema].index(u_schema.id)] - if user.external_source: - from premium.sso.models import SSOSource - source = db.query(SSOSource).filter(SSOSource.source_code == user.external_source).first() - u_schema.permissions = source.permissions if source and source.permissions else [] - else: - u_schema.permissions = ["all"] - - return success( - data={ - "users": users_schema, - "total": total, - "page": page, - "size": size, - }, - msg=t("users.list.get_success") - ) - - - @router.get("/{user_id}", response_model=ApiResponse) def get_user_info_by_id( user_id: uuid.UUID, diff --git a/api/app/repositories/tenant_repository.py b/api/app/repositories/tenant_repository.py index 2934dda3..462c75e5 100644 --- a/api/app/repositories/tenant_repository.py +++ b/api/app/repositories/tenant_repository.py @@ -100,15 +100,6 @@ class TenantRepository: db_tenant.is_active = False return True - def get_tenant_users(self, tenant_id: uuid.UUID, is_active: Optional[bool] = None) -> List[User]: - """获取租户下的所有用户""" - query = self.db.query(User).filter(User.tenant_id == tenant_id) - - if is_active is not None: - query = query.filter(User.is_active == is_active) - - return query.all() - def get_user_tenant(self, user_id: uuid.UUID) -> Optional[Tenants]: """获取用户所属的租户""" user = self.db.query(User).filter(User.id == user_id).first() @@ -130,15 +121,6 @@ class TenantRepository: user.tenant_id = tenant_id self.db.flush() - return True - - def count_tenant_users(self, tenant_id: uuid.UUID, is_active: Optional[bool] = None) -> int: - """统计租户下的用户数量""" - query = self.db.query(func.count(User.id)).filter(User.tenant_id == tenant_id) - - if is_active is not None: - query = query.filter(User.is_active == is_active) - return query.scalar() @@ -161,8 +143,4 @@ def get_tenants(db: Session, skip: int = 0, limit: int = 100) -> List[Tenants]: def get_user_tenant(db: Session, user_id: uuid.UUID) -> Optional[Tenants]: """获取用户所属的租户""" - return TenantRepository(db).get_user_tenant(user_id) - -def get_tenant_users(db: Session, tenant_id: uuid.UUID) -> List[User]: - """获取租户下的所有用户""" - return TenantRepository(db).get_tenant_users(tenant_id) \ No newline at end of file + return TenantRepository(db).get_user_tenant(user_id) \ No newline at end of file diff --git a/api/app/services/tenant_service.py b/api/app/services/tenant_service.py index 2ff7ff51..369327ba 100644 --- a/api/app/services/tenant_service.py +++ b/api/app/services/tenant_service.py @@ -138,42 +138,7 @@ class TenantService: except Exception as e: business_logger.error(f"删除租户失败: {str(e)}") - raise BusinessException(f"删除租户失败: {str(e)}", code=BizCode.DB_ERROR) - - # 租户用户管理 - def get_tenant_users( - self, - tenant_id: uuid.UUID, - skip: int = 0, - limit: int = 100, - is_active: Optional[bool] = None, - is_superuser: Optional[bool] = None, - search: Optional[str] = None - ) -> List[UserModel]: - """获取租户下的用户列表""" - return self.user_repo.get_users_by_tenant( - tenant_id=tenant_id, - skip=skip, - limit=limit, - is_active=is_active, - is_superuser=is_superuser, - search=search - ) - - def count_tenant_users( - self, - tenant_id: uuid.UUID, - is_active: Optional[bool] = None, - is_superuser: Optional[bool] = None, - search: Optional[str] = None - ) -> int: - """统计租户下的用户数量""" - return self.user_repo.count_users_by_tenant( - tenant_id=tenant_id, - is_active=is_active, - is_superuser=is_superuser, - search=search - ) + raise BusinessException(f"删除租户失败:{str(e)}", code=BizCode.DB_ERROR) def assign_user_to_tenant(self, user_id: uuid.UUID, tenant_id: uuid.UUID) -> bool: """将用户分配给租户"""