57 lines
2.0 KiB
Python
57 lines
2.0 KiB
Python
"""金额罚单 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), '未知')
|