"refactor(api): 角色/职务剩余裸操作接入 gvsdsdk 服务层

- Role 级联搜索/当前角色/用户中心/用户详情角色列表改用 GetRolesForUser/GetUserRoleDetails/GetRoleByUUID
- PositionManager 11 个方法接入 position.py 全部视图
- 累计 20+ 处裸 ORM 操作统一走 gvsdsdk 服务层"
This commit is contained in:
TermiNexus committed 2026-08-07 01:24:44 +08:00
1 parent e27f3d3dd6
commit 10b8af2f2b
4 files changed
+11 -20

No files matched your search

+3 -6
View File
@@ -69,13 +69,10 @@ class UserCenterCardView(ELTAuthenticatedAPIView):
def get(self, request):
user = request.user
from gvsds.apps.gerp.models import UserRole, Role
from gvsdsdk.auth.managers import RoleManager
try:
# request.user 是 gvsdsdk.User,无 userrole_set 反向关系
user_role = UserRole.objects.filter(
UserUUID=user.UserUUID
).first()
role = Role.objects.filter(RoleUUID=user_role.RoleUUID).first() if user_role else None
# request.user 是 gvsdsdk.User,无 userrole_set 反向关系,经 RoleManager 获取角色
role = RoleManager.GetRolesForUser(user.UserUUID).first()
except Exception:
role = None
return Response({
+3 -2
View File
@@ -71,10 +71,11 @@ class UserDetailView(ELTAuthenticatedAPIView):
}
# 角色列表(通过 UserRole.CompanyUUID 获取关联公司)
from gvsdsdk.auth.managers import RoleManager
roles = []
user_roles = UserRole.objects.filter(UserUUID=user_uuid)
user_roles = RoleManager.GetUserRoleDetails(user_uuid)
for ur in user_roles:
role = Role.objects.filter(RoleUUID=ur.RoleUUID).first()
role = RoleManager.GetRoleByUUID(ur.RoleUUID)
if role:
company_name = ''
company_short = ''
+3 -9
View File
@@ -212,15 +212,9 @@ class RoleViewSet(TenantScopedMixin, viewsets.ModelViewSet):
# 无公司上下文:无法判断"同公司",返回空
qs = qs.none()
else:
ur_qs = UserRole.objects.filter(
UserUUID=user_uuid_bytes,
CompanyUUID=company_uuid,
)
bound_role_ids = set(ur_qs.values_list('RoleUUID', flat=True))
if bound_role_ids:
qs = qs.filter(RoleUUID__in=bound_role_ids)
else:
qs = qs.none()
from gvsdsdk.auth.managers import RoleManager
bound_roles = RoleManager.GetRolesForUser(user_uuid_bytes, company_uuid)
qs = qs.filter(RoleUUID__in=bound_roles.values_list('RoleUUID', flat=True))
offset = int(request.query_params.get('offset', 0))
serializer = self.get_serializer(qs[offset:offset + 20], many=True)
data = serializer.data
+2 -3
View File
@@ -89,9 +89,8 @@ def _ClearJwtCookies(response):
def _SetCurrentRoleCookie(response, user):
"""查询用户首个角色并设置 CurrentRoleUUID cookie"""
from gvsds.apps.gerp.models import UserRole as _UserRole
# UserRole.RoleUUID 是 UUIDField,不能 select_related
first_role = _UserRole.objects.filter(UserUUID=user.UserUUID).first()
from gvsdsdk.auth.managers import RoleManager
first_role = RoleManager.GetRolesForUser(user.UserUUID).first()
if first_role and first_role.RoleUUID:
max_age = int(settings.SIMPLE_JWT['REFRESH_TOKEN_LIFETIME'].total_seconds())
response.set_cookie(