fix: admin_audit_log 操作人ID支持手机号解析

This commit is contained in:
XingQue
2026-06-24 18:25:21 +08:00
parent 45123d5b6f
commit 8e5662c56f
3 changed files with 39 additions and 2 deletions

View File

@@ -0,0 +1,16 @@
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('jituan', '0001_initial'),
]
operations = [
migrations.AlterField(
model_name='adminauditlog',
name='operator_yonghuid',
field=models.CharField(db_index=True, max_length=16),
),
]

View File

@@ -74,7 +74,7 @@ class AdminAssignment(QModel):
class AdminAuditLog(QModel):
"""后台敏感操作审计(改余额等)。"""
club_id = models.CharField(max_length=16, null=True, blank=True, db_index=True)
operator_yonghuid = models.CharField(max_length=7, db_index=True)
operator_yonghuid = models.CharField(max_length=16, db_index=True)
operator_role_code = models.CharField(max_length=50, blank=True, default='')
target_yonghuid = models.CharField(max_length=7, null=True, blank=True)
action = models.CharField(max_length=64, db_index=True)

View File

@@ -87,6 +87,26 @@ def filter_xiugaijilu_by_request(qs, request):
return qs.filter(yonghuid__in=uid_list)
def resolve_operator_yonghuid(xiugaiid):
"""
xiugaijilu.xiugaiid 多为客服手机号admin_audit_log.operator_yonghuid 存 UserUID。
解析失败时回落为原值(列宽已放宽至 16
"""
s = str(xiugaiid or '').strip()
if not s:
return ''
if len(s) <= 7:
return s
from users.business_models import User
u = User.query.filter(Phone=s).first()
if u and getattr(u, 'UserUID', None):
return str(u.UserUID)
u = User.query.filter(UserUID=s).first()
if u and getattr(u, 'UserUID', None):
return str(u.UserUID)
return s[:16]
def log_admin_audit_from_xiugai(
*,
yonghuid,
@@ -99,9 +119,10 @@ def log_admin_audit_from_xiugai(
"""与 write_xiugai_log 同步写入 admin_audit_log失败不影响主流程"""
try:
cid = club_id or club_id_for_yonghuid(yonghuid)
operator_uid = resolve_operator_yonghuid(xiugaiid)
AdminAuditLog.query.create(
club_id=cid,
operator_yonghuid=str(xiugaiid),
operator_yonghuid=operator_uid,
target_yonghuid=str(yonghuid),
action='xiugaijilu',
resource_type='user',