Files
Django/utils/penalty_status.py

57 lines
2.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""金额罚单 fadan 状态常量(与 orders.models.Penalty.Status 一致)"""
PENALTY_PENDING_PAY = 1 # 待缴纳(平台审核通过后)
PENALTY_PAID = 2 # 已缴纳
PENALTY_APPEALING = 3 # 申诉中
PENALTY_REJECTED = 4 # 已驳回 / 打手申诉成功
PENALTY_PLATFORM_AUDIT = 5 # 平台审核中(商家提交后,审核通过前)
# 影响抢单:仅平台审核通过后的未结案罚单
PENALTY_GRAB_BLOCK_STATUSES = (PENALTY_PENDING_PAY, PENALTY_APPEALING)
# 影响提现:含平台审核中
PENALTY_WITHDRAW_BLOCK_STATUSES = (PENALTY_PENDING_PAY, PENALTY_APPEALING, PENALTY_PLATFORM_AUDIT)
PENALTY_STATUS_LABELS = {
1: '待缴纳',
2: '已缴纳',
3: '申诉中',
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), '未知')