""" 后台敏感操作统一写入 xiugaijilu(修改/操作日志)。 leixing 约定: 0=系统配置, 2=打手, 3=管事, 4=商家, 5=组长, 9=后台账号 """ from __future__ import annotations from decimal import Decimal from typing import Any, Optional from .models import Xiugaijilu LEIXING_SYSTEM = 0 LEIXING_DASHOU = 2 LEIXING_GUANSHI = 3 LEIXING_SHANGJIA = 4 LEIXING_ZUZHANG = 5 LEIXING_KEFU = 9 LEIXING_NAME = { LEIXING_SYSTEM: '系统配置', LEIXING_DASHOU: '打手', LEIXING_GUANSHI: '管事', LEIXING_SHANGJIA: '商家', LEIXING_ZUZHANG: '组长', LEIXING_KEFU: '后台账号', } # 冻结提现类型 → 操作日志用户类型 FREEZE_TO_XIUGAI_LEIXING = { 1: LEIXING_DASHOU, # 打手佣金 2: LEIXING_GUANSHI, # 管事 5: LEIXING_DASHOU, # 打手押金 6: LEIXING_SHANGJIA, # 商家 } FREEZE_LEIXING_NAME = { 1: '打手佣金', 2: '管事分红', 5: '打手押金', 6: '商家余额', } def _d(v: Any) -> Decimal: if v is None: return Decimal('0.00') if isinstance(v, Decimal): return v return Decimal(str(v)) def write_xiugai_log( *, yonghuid: str, operator_phone: str, leixing: int, qitashuoming: str = '', dashou_yue_before=None, dashou_yue_after=None, jifen_before=None, jifen_after=None, yajin_before=None, yajin_after=None, shangjia_yue_before=None, shangjia_yue_after=None, guanshi_yue_before=None, guanshi_yue_after=None, zuzhang_yue_before=None, zuzhang_yue_after=None, huiyuants: int = 0, huiyuan_id: Optional[str] = None, ) -> Xiugaijilu: """写入一条操作日志;金额类字段仅在传入时覆盖默认 0。""" kwargs = { 'yonghuid': str(yonghuid or '')[:7], 'xiugaiid': str(operator_phone or '')[:30], 'leixing': int(leixing), 'qitashuoming': (qitashuoming or '')[:2000] or None, 'huiyuants': int(huiyuants or 0), 'huiyuan_id': (str(huiyuan_id)[:6] if huiyuan_id else None), } if dashou_yue_before is not None or dashou_yue_after is not None: kwargs['xiugaitijiaoq'] = _d(dashou_yue_before) kwargs['xiugaitijiao'] = _d(dashou_yue_after) if jifen_before is not None or jifen_after is not None: kwargs['yjifen'] = int(jifen_before or 0) kwargs['jifen'] = int(jifen_after or 0) if yajin_before is not None or yajin_after is not None: kwargs['yyajin'] = _d(yajin_before) kwargs['yajin'] = _d(yajin_after) if shangjia_yue_before is not None or shangjia_yue_after is not None: kwargs['shangjiayueq'] = _d(shangjia_yue_before) kwargs['shangjiayue'] = _d(shangjia_yue_after) if guanshi_yue_before is not None or guanshi_yue_after is not None: kwargs['guanshiyueq'] = _d(guanshi_yue_before) kwargs['guanshiyue'] = _d(guanshi_yue_after) if zuzhang_yue_before is not None or zuzhang_yue_after is not None: kwargs['zuzhangyueq'] = _d(zuzhang_yue_before) kwargs['zuzhangyue'] = _d(zuzhang_yue_after) return Xiugaijilu.objects.create(**kwargs)