feat: cms softdelet bug fix

This commit is contained in:
2026-06-11 13:57:46 +08:00
parent 32915bc6b4
commit f2dcf3d490
6 changed files with 60 additions and 8 deletions
+7 -2
View File
@@ -81,11 +81,14 @@ class CmsUserWriteSerializer(serializers.ModelSerializer):
value = (value or '').strip()
if not re.match(r'^1[3-9]\d{9}$', value):
raise AppError('CMS_VALIDATION_ERROR', '手机号格式不合法', status_code=400)
# 含已停用账号:手机号唯一约束对软删行仍生效,提示需复用应先恢复/换号
qs = User.all_objects.filter(phone=value)
if self.instance is not None:
qs = qs.exclude(pk=self.instance.pk)
if qs.exists():
raise AppError('CMS_USER_PHONE_EXISTS', '手机号已存在', status_code=400)
raise AppError('CMS_USER_PHONE_EXISTS',
'手机号已存在(含已停用账号),如需复用请先恢复或更换手机号',
status_code=400)
return value
def validate(self, attrs):
@@ -131,7 +134,9 @@ class CmsUserWriteSerializer(serializers.ModelSerializer):
username=phone, password=f'Pass{phone}', **validated_data
)
except IntegrityError:
raise AppError('CMS_USER_PHONE_EXISTS', '手机号已存在', status_code=400)
raise AppError('CMS_USER_PHONE_EXISTS',
'手机号已存在(含已停用账号),如需复用请先恢复或更换手机号',
status_code=400)
def update(self, instance, validated_data):
for key, val in validated_data.items():