From 8e5662c56f1a09f71ea6d4dbfb5f6ba1d2e80b92 Mon Sep 17 00:00:00 2001 From: XingQue Date: Wed, 24 Jun 2026 18:25:21 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20admin=5Faudit=5Flog=20=E6=93=8D=E4=BD=9C?= =?UTF-8?q?=E4=BA=BAID=E6=94=AF=E6=8C=81=E6=89=8B=E6=9C=BA=E5=8F=B7?= =?UTF-8?q?=E8=A7=A3=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../0002_admin_audit_operator_widen.py | 16 +++++++++++++ jituan/models.py | 2 +- jituan/services/admin_audit.py | 23 ++++++++++++++++++- 3 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 jituan/migrations/0002_admin_audit_operator_widen.py diff --git a/jituan/migrations/0002_admin_audit_operator_widen.py b/jituan/migrations/0002_admin_audit_operator_widen.py new file mode 100644 index 0000000..72ca2e4 --- /dev/null +++ b/jituan/migrations/0002_admin_audit_operator_widen.py @@ -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), + ), + ] diff --git a/jituan/models.py b/jituan/models.py index ad24e95..3a18b72 100644 --- a/jituan/models.py +++ b/jituan/models.py @@ -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) diff --git a/jituan/services/admin_audit.py b/jituan/services/admin_audit.py index 8888e14..10fea19 100644 --- a/jituan/services/admin_audit.py +++ b/jituan/services/admin_audit.py @@ -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',