This commit is contained in:
27942
2026-01-13 17:25:35 +08:00
parent 10d4ce6e2f
commit 2f6289338a
2 changed files with 79 additions and 18 deletions

View File

@@ -137,30 +137,79 @@ class UserRegister(APIView):
content = "".join(content_parts)
# 使用统一的审核流程函数
approval, approvers_order_json, needs_approval = create_approval_with_team_logic(
team_name=team_name,
approvers=approvers,
title=username + "入职财务登记",
content=content,
approval_type="入职财务登记",
user_id=str(user.id),
business_record=user, # User对象没有approvers_order字段但可以更新state
today=formatted_date
)
try:
approval, approvers_order_json, needs_approval = create_approval_with_team_logic(
team_name=team_name,
approvers=approvers,
title=username + "入职财务登记",
content=content,
approval_type="入职财务登记",
user_id=str(user.id),
business_record=user, # User对象没有approvers_order字段但可以更新state
today=formatted_date
)
except Exception as e:
# 记录异常并返回错误信息
import logging
logger = logging.getLogger(__name__)
logger.error(f"创建入职财务登记审批失败: {str(e)}", exc_info=True)
return Response({
'status': 'error',
'message': f'创建审批流程失败: {str(e)},请检查团队配置和审核人信息',
'code': 1
}, status=status.HTTP_400_BAD_REQUEST)
# 如果返回None且需要审核说明缺少审核人
if approval is None and needs_approval:
# 检查团队是否配置了审核人
team_has_approvers = False
team_approvers_list = []
team_approvers_valid = []
if team and team.team_type == 'team':
team_has_approvers = team.approvers.filter(is_deleted=False).exists()
team_approvers = team.approvers.filter(is_deleted=False)
team_has_approvers = team_approvers.exists()
if team_has_approvers:
team_approvers_list = [approver.username for approver in team_approvers]
# 验证团队配置的审核人是否有效
for approver_name in team_approvers_list:
if User.objects.filter(username=approver_name, is_deleted=False).exists():
team_approvers_valid.append(approver_name)
# 检查传入的审核人是否存在
approvers_list = []
if approvers:
from User.utils import parse_approvers
approvers_list = parse_approvers(approvers)
# 验证审核人是否存在
invalid_approvers = []
for approver_name in approvers_list:
if not User.objects.filter(username=approver_name, is_deleted=False).exists():
invalid_approvers.append(approver_name)
if invalid_approvers:
return Response({
'status': 'error',
'message': f'审核人不存在或已被删除: {", ".join(invalid_approvers)},请检查审核人是否有效',
'code': 1
}, status=status.HTTP_400_BAD_REQUEST)
# 构建错误信息
if team_has_approvers:
# 团队已配置审核人,但可能审核人不存在或已被删除
error_message = '团队类型需要指定审核人请在前端传递approvers参数或检查团队配置的审核人是否有效'
if approvers_list:
# 传入了审核人但可能有问题(这种情况不应该发生,因为已经验证过了)
error_message = '团队类型需要指定有效的审核人请检查传入的approvers参数中的审核人是否有效'
else:
# 团队已配置审核人,但可能审核人不存在或已被删除
if team_approvers_valid:
# 团队有有效的审核人,但 create_approval_with_team_logic 返回了 None
# 这可能是其他原因导致的,提供通用错误信息
error_message = f'创建审批流程失败,请检查团队"{team_name}"配置。团队当前配置的审核人:{", ".join(team_approvers_valid)}'
else:
# 团队配置的审核人都无效
error_message = f'团队"{team_name}"配置的审核人无效或已被删除。团队当前配置的审核人:{", ".join(team_approvers_list) if team_approvers_list else ""}。请在前端传递approvers参数推荐格式[用户ID数组],如[1,2,3])或为团队重新配置有效的审核人'
else:
# 团队未配置审核人
error_message = '团队类型需要指定审核人请在前端传递approvers参数或配置团队审核人'
error_message = f'团队类型需要指定审核人。团队"{team_name}"未配置审核人请在前端传递approvers参数推荐格式[用户ID数组],如[1,2,3])或为团队配置审核人'
return Response({
'status': 'error',