fix: 修复增量同步时软删除用户导致的重复username错误
Some checks failed
continuous-integration/drone/push Build is failing
Some checks failed
continuous-integration/drone/push Build is failing
This commit is contained in:
@@ -246,15 +246,23 @@ class EmployeeSyncService:
|
||||
logger.warning(f"员工 {full_name} 没有手机号,跳过")
|
||||
return None
|
||||
|
||||
# 检查用户是否已存在(通过手机号)
|
||||
stmt = select(User).where(
|
||||
User.phone == phone,
|
||||
User.is_deleted == False
|
||||
)
|
||||
# 检查用户是否已存在(通过手机号,包括已软删除的)
|
||||
stmt = select(User).where(User.phone == phone)
|
||||
result = await self.db.execute(stmt)
|
||||
existing_user = result.scalar_one_or_none()
|
||||
|
||||
if existing_user:
|
||||
# 如果是软删除用户,恢复它
|
||||
if existing_user.is_deleted:
|
||||
existing_user.is_deleted = False
|
||||
existing_user.full_name = full_name or existing_user.full_name
|
||||
existing_user.is_active = True
|
||||
dingtalk_id = employee_data.get('dingtalk_id')
|
||||
if dingtalk_id:
|
||||
existing_user.dingtalk_id = dingtalk_id
|
||||
logger.info(f"恢复软删除用户: {phone} ({full_name})")
|
||||
return existing_user
|
||||
|
||||
# 如果用户已存在但没有dingtalk_id,则更新
|
||||
dingtalk_id = employee_data.get('dingtalk_id')
|
||||
if dingtalk_id and not existing_user.dingtalk_id:
|
||||
|
||||
Reference in New Issue
Block a user