fix: 平台审核队列兼容旧商家罚款+列表筛选
This commit is contained in:
@@ -6404,12 +6404,18 @@ class FaKuanTongJiView(APIView):
|
||||
if not has_fadan_view_permission(permissions, username):
|
||||
return Response({'code': 403, 'msg': '无权限查看罚款统计'})
|
||||
|
||||
from utils.penalty_status import penalty_platform_audit_pending_q, APPLICANT_MERCHANT
|
||||
pending_q = penalty_platform_audit_pending_q()
|
||||
legacy_pending_q = Q(
|
||||
Status=1, ApplicantIdentity=APPLICANT_MERCHANT,
|
||||
) & (Q(ProcessorID__isnull=True) | Q(ProcessorID=''))
|
||||
stats = filter_penalty_qs(Penalty.query.all(), request).aggregate(
|
||||
total=Count('id'),
|
||||
daijiaona=Count('id', filter=Q(Status=1)),
|
||||
daijiaona=Count('id', filter=Q(Status=1) & ~legacy_pending_q),
|
||||
shensuzhong=Count('id', filter=Q(Status=3)),
|
||||
yijiaona=Count('id', filter=Q(Status=2)),
|
||||
yibohui=Count('id', filter=Q(Status=4)),
|
||||
pingtai_shenhe=Count('id', filter=pending_q),
|
||||
)
|
||||
data = {k: v or 0 for k, v in stats.items()}
|
||||
from jituan.services.club_user_access import list_response_meta
|
||||
@@ -6446,10 +6452,25 @@ class FaKuanLieBiaoView(APIView):
|
||||
|
||||
qs = filter_penalty_qs(Penalty.query.all(), request)
|
||||
|
||||
# 状态筛选
|
||||
zhuangtai = request.data.get('zhuangtai')
|
||||
if zhuangtai is not None and int(zhuangtai) in [1, 2, 3, 4]:
|
||||
qs = qs.filter(Status=int(zhuangtai))
|
||||
# 状态筛选(5=平台审核队列,含旧版商家直写待缴纳未审)
|
||||
from utils.penalty_status import (
|
||||
penalty_platform_audit_pending_q, APPLICANT_MERCHANT,
|
||||
)
|
||||
zhuangtai_raw = request.data.get('zhuangtai')
|
||||
if zhuangtai_raw is not None and str(zhuangtai_raw).strip() != '':
|
||||
try:
|
||||
zt = int(zhuangtai_raw)
|
||||
if zt == 5:
|
||||
qs = qs.filter(penalty_platform_audit_pending_q())
|
||||
elif zt == 1:
|
||||
legacy_pending_q = Q(
|
||||
Status=1, ApplicantIdentity=APPLICANT_MERCHANT,
|
||||
) & (Q(ProcessorID__isnull=True) | Q(ProcessorID=''))
|
||||
qs = qs.filter(Status=1).exclude(legacy_pending_q)
|
||||
elif zt in (2, 3, 4):
|
||||
qs = qs.filter(Status=zt)
|
||||
except (ValueError, TypeError):
|
||||
pass
|
||||
|
||||
# 被处罚人ID
|
||||
PenalizedUserID = request.data.get('PenalizedUserID', '').strip()
|
||||
@@ -6498,6 +6519,8 @@ class FaKuanLieBiaoView(APIView):
|
||||
else:
|
||||
shensu_map.setdefault(fid, []).append(url)
|
||||
|
||||
from utils.penalty_status import penalty_display_status, is_penalty_platform_audit_pending
|
||||
|
||||
# 组装列表数据
|
||||
results = []
|
||||
for r in records:
|
||||
@@ -6512,6 +6535,8 @@ class FaKuanLieBiaoView(APIView):
|
||||
'fakuanjine': str(r.FineAmount),
|
||||
'guanliandingdan_id': r.RelatedOrderID or '',
|
||||
'zhuangtai': r.Status,
|
||||
'zhuangtai_text': penalty_display_status(r),
|
||||
'platform_audit_pending': is_penalty_platform_audit_pending(r),
|
||||
'yingxiang_qiangdan': r.AffectsGrabbing,
|
||||
'shensuliyou': r.AppealReason or '',
|
||||
'bohuiliyou': r.RejectReason or '',
|
||||
@@ -6641,7 +6666,8 @@ class FaKuanPingTaiShenHeView(APIView):
|
||||
def post(self, request):
|
||||
try:
|
||||
from utils.penalty_status import (
|
||||
PENALTY_PLATFORM_AUDIT, PENALTY_PENDING_PAY, PENALTY_APPEALING, PENALTY_REJECTED,
|
||||
PENALTY_PENDING_PAY, PENALTY_APPEALING, PENALTY_REJECTED,
|
||||
is_penalty_platform_audit_pending,
|
||||
)
|
||||
username = request.data.get('username', '').strip()
|
||||
penalty_id = request.data.get('penalty_id') or request.data.get('fadan_id')
|
||||
@@ -6665,7 +6691,7 @@ class FaKuanPingTaiShenHeView(APIView):
|
||||
if deny:
|
||||
return deny
|
||||
|
||||
if penalty.Status != PENALTY_PLATFORM_AUDIT:
|
||||
if not is_penalty_platform_audit_pending(penalty):
|
||||
return Response({'code': 400, 'msg': '当前状态不可平台审核'})
|
||||
|
||||
if not check_fadan_permission(permissions, penalty.Identity):
|
||||
|
||||
@@ -19,3 +19,38 @@ PENALTY_STATUS_LABELS = {
|
||||
4: '已驳回',
|
||||
5: '平台审核中',
|
||||
}
|
||||
|
||||
# 商家身份(ApplicantIdentity)
|
||||
APPLICANT_MERCHANT = 5
|
||||
|
||||
|
||||
def penalty_platform_audit_pending_q():
|
||||
"""
|
||||
待平台审核队列:
|
||||
- 新流程:zhuangtai=5
|
||||
- 旧数据:商家提交直写 zhuangtai=1 且尚未有平台处理人
|
||||
"""
|
||||
from django.db.models import Q
|
||||
|
||||
legacy_merchant_pending = Q(
|
||||
Status=PENALTY_PENDING_PAY,
|
||||
ApplicantIdentity=APPLICANT_MERCHANT,
|
||||
) & (Q(ProcessorID__isnull=True) | Q(ProcessorID=''))
|
||||
return Q(Status=PENALTY_PLATFORM_AUDIT) | legacy_merchant_pending
|
||||
|
||||
|
||||
def is_penalty_platform_audit_pending(penalty):
|
||||
"""单条罚单是否处于平台审核队列(含旧数据)。"""
|
||||
status = getattr(penalty, 'Status', None)
|
||||
if status == PENALTY_PLATFORM_AUDIT:
|
||||
return True
|
||||
if status == PENALTY_PENDING_PAY and getattr(penalty, 'ApplicantIdentity', None) == APPLICANT_MERCHANT:
|
||||
return not (getattr(penalty, 'ProcessorID', None) or '').strip()
|
||||
return False
|
||||
|
||||
|
||||
def penalty_display_status(penalty):
|
||||
"""列表/详情展示用状态文案。"""
|
||||
if is_penalty_platform_audit_pending(penalty):
|
||||
return PENALTY_STATUS_LABELS[PENALTY_PLATFORM_AUDIT]
|
||||
return PENALTY_STATUS_LABELS.get(getattr(penalty, 'Status', None), '未知')
|
||||
|
||||
Reference in New Issue
Block a user