fix: 修复财务接口字段名及后台角色权限/用户列表返回格式
This commit is contained in:
@@ -101,6 +101,20 @@ from .serializers import PopupPageSerializer
|
|||||||
logger = logging.getLogger('houtai')
|
logger = logging.getLogger('houtai')
|
||||||
SHOP_PRODUCT_PERMS = ['1199ab', '1199abc', '1199abd']
|
SHOP_PRODUCT_PERMS = ['1199ab', '1199abc', '1199abd']
|
||||||
|
|
||||||
|
|
||||||
|
def _serialize_permission_row(perm_row):
|
||||||
|
"""gvsdsdk Permission → 后台 Vue 约定的小写字段"""
|
||||||
|
if isinstance(perm_row, dict):
|
||||||
|
code = perm_row.get('PermCode') or perm_row.get('perm_code') or ''
|
||||||
|
name = perm_row.get('PermName') or perm_row.get('perm_name') or code
|
||||||
|
desc = perm_row.get('PermDesc') or perm_row.get('perm_desc') or ''
|
||||||
|
else:
|
||||||
|
code = perm_row.PermCode or ''
|
||||||
|
name = perm_row.PermName or code
|
||||||
|
desc = perm_row.PermDesc or ''
|
||||||
|
return {'perm_code': code, 'perm_name': name, 'perm_desc': desc}
|
||||||
|
|
||||||
|
|
||||||
class GetRolePermissionView(APIView):
|
class GetRolePermissionView(APIView):
|
||||||
"""
|
"""
|
||||||
获取所有角色、权限以及角色关联的用户数
|
获取所有角色、权限以及角色关联的用户数
|
||||||
@@ -124,25 +138,32 @@ class GetRolePermissionView(APIView):
|
|||||||
|
|
||||||
# 3. 获取所有权限
|
# 3. 获取所有权限
|
||||||
all_perms = Permission.objects.filter(PermStatus=1).values('PermCode', 'PermName', 'PermDesc')
|
all_perms = Permission.objects.filter(PermStatus=1).values('PermCode', 'PermName', 'PermDesc')
|
||||||
permissions_list = list(all_perms)
|
permissions_list = [_serialize_permission_row(p) for p in all_perms]
|
||||||
|
|
||||||
# 4. 获取所有角色,并统计每个角色下的用户数和关联的权限
|
# 4. 获取所有角色,并统计每个角色下的用户数(仅后台客服账号)
|
||||||
|
kefu_user_uuids = list(
|
||||||
|
User.objects.filter(KefuProfile__isnull=False).values_list('UserUUID', flat=True)
|
||||||
|
)
|
||||||
roles = Role.objects.filter(RoleStatus=1)
|
roles = Role.objects.filter(RoleStatus=1)
|
||||||
roles_data = []
|
roles_data = []
|
||||||
for role in roles:
|
for role in roles:
|
||||||
# 统计该角色下的用户数
|
user_count = UserRole.objects.filter(
|
||||||
user_count = UserRole.objects.filter(RoleUUID=role.RoleUUID).count()
|
RoleUUID=role.RoleUUID,
|
||||||
# 获取该角色绑定的权限
|
UserUUID__in=kefu_user_uuids,
|
||||||
|
).count()
|
||||||
role_perm_uuids = RolePermission.objects.filter(
|
role_perm_uuids = RolePermission.objects.filter(
|
||||||
RoleUUID=role.RoleUUID
|
RoleUUID=role.RoleUUID
|
||||||
).values_list('PermUUID', flat=True)
|
).values_list('PermUUID', flat=True)
|
||||||
perms_of_role = list(Permission.objects.filter(
|
perms_of_role = [
|
||||||
PermUUID__in=list(role_perm_uuids)
|
_serialize_permission_row(p)
|
||||||
).values('PermCode', 'PermName', 'PermDesc'))
|
for p in Permission.objects.filter(
|
||||||
|
PermUUID__in=list(role_perm_uuids)
|
||||||
|
).values('PermCode', 'PermName', 'PermDesc')
|
||||||
|
]
|
||||||
roles_data.append({
|
roles_data.append({
|
||||||
'role_code': role.RoleName,
|
'role_code': role.RoleName,
|
||||||
'role_name': role.RoleName,
|
'role_name': role.RoleName,
|
||||||
'description': role.RoleDesc,
|
'description': role.RoleDesc or '',
|
||||||
'user_count': user_count,
|
'user_count': user_count,
|
||||||
'permissions': perms_of_role
|
'permissions': perms_of_role
|
||||||
})
|
})
|
||||||
@@ -335,19 +356,13 @@ class GetAdminUserListView(APIView):
|
|||||||
|
|
||||||
# 关键修正:先求值为列表,再传入 phone__in
|
# 关键修正:先求值为列表,再传入 phone__in
|
||||||
if role_code:
|
if role_code:
|
||||||
# 通过 gvsdsdk UserRole 查询拥有该角色的用户
|
|
||||||
target_role = Role.objects.filter(RoleName=role_code).first()
|
target_role = Role.objects.filter(RoleName=role_code).first()
|
||||||
if target_role:
|
if target_role:
|
||||||
user_uuids = list(
|
user_uuids = list(
|
||||||
UserRole.objects.filter(RoleUUID=target_role.RoleUUID)
|
UserRole.objects.filter(RoleUUID=target_role.RoleUUID)
|
||||||
.values_list('UserUUID', flat=True)
|
.values_list('UserUUID', flat=True)
|
||||||
)
|
)
|
||||||
# 将 UserUUID 转为 phone 列表
|
users = users.filter(UserUUID__in=user_uuids)
|
||||||
user_phones = list(
|
|
||||||
User.objects.filter(UserUUID__in=user_uuids)
|
|
||||||
.values_list('Phone', flat=True)
|
|
||||||
)
|
|
||||||
users = users.filter(Phone__in=user_phones)
|
|
||||||
else:
|
else:
|
||||||
users = users.none()
|
users = users.none()
|
||||||
|
|
||||||
@@ -368,12 +383,15 @@ class GetAdminUserListView(APIView):
|
|||||||
for r in user_roles
|
for r in user_roles
|
||||||
]
|
]
|
||||||
data_list.append({
|
data_list.append({
|
||||||
'phone': user.Phone,
|
'phone': user.Phone or '',
|
||||||
|
'yonghuid': user.UserUID or '',
|
||||||
'nicheng': user.KefuProfile.nicheng,
|
'nicheng': user.KefuProfile.nicheng,
|
||||||
'roles': roles_data,
|
'roles': roles_data,
|
||||||
'status': user.KefuProfile.zhuangtai,
|
'status': user.KefuProfile.zhuangtai,
|
||||||
'CreateTime': user.UserCreateTime.strftime('%Y-%m-%d %H:%M:%S') if hasattr(user, 'UserCreateTime') else '',
|
'create_time': user.UserCreateTime.strftime('%Y-%m-%d %H:%M:%S') if getattr(user, 'UserCreateTime', None) else '',
|
||||||
'UpdateTime': user.UpdateTime.strftime('%Y-%m-%d %H:%M:%S') if hasattr(user, 'UpdateTime') else '',
|
'update_time': user.KefuProfile.UpdateTime.strftime('%Y-%m-%d %H:%M:%S') if getattr(user.KefuProfile, 'UpdateTime', None) else '',
|
||||||
|
'CreateTime': user.UserCreateTime.strftime('%Y-%m-%d %H:%M:%S') if getattr(user, 'UserCreateTime', None) else '',
|
||||||
|
'UpdateTime': user.KefuProfile.UpdateTime.strftime('%Y-%m-%d %H:%M:%S') if getattr(user.KefuProfile, 'UpdateTime', None) else '',
|
||||||
})
|
})
|
||||||
|
|
||||||
return Response({
|
return Response({
|
||||||
@@ -6377,7 +6395,7 @@ class CaiwuView(APIView):
|
|||||||
amount_sum = Czjilu.query.filter(
|
amount_sum = Czjilu.query.filter(
|
||||||
CreateTime__gte=today_start,
|
CreateTime__gte=today_start,
|
||||||
CreateTime__lt=today_end,
|
CreateTime__lt=today_end,
|
||||||
UserUID__in=new_huiyuan_user_ids,
|
yonghuid__in=new_huiyuan_user_ids,
|
||||||
leixing=1,
|
leixing=1,
|
||||||
zhuangtai=3
|
zhuangtai=3
|
||||||
).aggregate(total=Sum('jine'))
|
).aggregate(total=Sum('jine'))
|
||||||
|
|||||||
Reference in New Issue
Block a user