@@ -542,7 +542,7 @@ class QiangdanView(APIView):
|
|||||||
if order.GrabRequirement == 1:
|
if order.GrabRequirement == 1:
|
||||||
return self._validate_huiyuan_requirement(order, dashou_yonghuid)
|
return self._validate_huiyuan_requirement(order, dashou_yonghuid)
|
||||||
elif order.GrabRequirement == 2:
|
elif order.GrabRequirement == 2:
|
||||||
return self._validate_yajin_requirement(order, dashou_profile, dashou_yonghuid)
|
return self._validate_yajin_requirement(order, dashou_profile)
|
||||||
return {'success': True, 'message': '验证通过'}
|
return {'success': True, 'message': '验证通过'}
|
||||||
|
|
||||||
def _validate_huiyuan_requirement(self, order, dashou_yonghuid):
|
def _validate_huiyuan_requirement(self, order, dashou_yonghuid):
|
||||||
@@ -567,26 +567,11 @@ class QiangdanView(APIView):
|
|||||||
return {'success': True, 'message': '会员验证通过'}
|
return {'success': True, 'message': '会员验证通过'}
|
||||||
return {'success': False, 'message': '未开通对应会员或会员已过期,无法抢此订单'}
|
return {'success': False, 'message': '未开通对应会员或会员已过期,无法抢此订单'}
|
||||||
|
|
||||||
def _validate_yajin_requirement(self, order, dashou_profile, dashou_yonghuid=None):
|
def _validate_yajin_requirement(self, order, dashou_profile):
|
||||||
"""
|
|
||||||
押金抢单:余额 + 提现冻结中押金均可用于抢单门槛。
|
|
||||||
提现/后台换人等其它场景仍只认实际 yajin 余额。
|
|
||||||
"""
|
|
||||||
from users.tixian_shenhe_services import pending_yajin_withdraw_frozen_amount
|
|
||||||
|
|
||||||
yajin_required = order.CommissionReq or 0
|
yajin_required = order.CommissionReq or 0
|
||||||
balance = dashou_profile.yajin or 0
|
dashou_yajin = dashou_profile.yajin or 0
|
||||||
yonghuid = dashou_yonghuid or getattr(
|
if dashou_yajin < yajin_required:
|
||||||
getattr(dashou_profile, 'user', None), 'UserUID', None
|
return {'success': False, 'message': f'押金不足,需要{yajin_required}元,当前有{dashou_yajin}元'}
|
||||||
)
|
|
||||||
frozen = pending_yajin_withdraw_frozen_amount(yonghuid) if yonghuid else Decimal('0')
|
|
||||||
effective = Decimal(str(balance)) + Decimal(str(frozen))
|
|
||||||
required = Decimal(str(yajin_required))
|
|
||||||
if effective < required:
|
|
||||||
return {
|
|
||||||
'success': False,
|
|
||||||
'message': f'押金不足,需要{required}元,当前可用{effective}元',
|
|
||||||
}
|
|
||||||
return {'success': True, 'message': '押金验证通过'}
|
return {'success': True, 'message': '押金验证通过'}
|
||||||
|
|
||||||
def _execute_qiangdan(self, order, dashou_profile, dashou_yonghuid):
|
def _execute_qiangdan(self, order, dashou_profile, dashou_yonghuid):
|
||||||
|
|||||||
@@ -91,42 +91,6 @@ def get_tixian_feilv(leixing, yonghuid=None, club_id=None):
|
|||||||
return _get_tixian_feilv_for_club(club_id, leixing)
|
return _get_tixian_feilv_for_club(club_id, leixing)
|
||||||
|
|
||||||
|
|
||||||
# 押金提现已扣款、尚未完结(仍视为「冻结中」)的审核状态
|
|
||||||
_YAJIN_FROZEN_AUDIT_STATUSES = (1, 6) # 审核中、待收款
|
|
||||||
|
|
||||||
|
|
||||||
def pending_yajin_withdraw_frozen_amount(yonghuid):
|
|
||||||
"""
|
|
||||||
押金提现申请时已从 UserDashou.yajin 扣走、尚未完结的金额。
|
|
||||||
|
|
||||||
仅供抢单资格把「冻结中」押金计入可用;提现/换人等其它场景不要调用。
|
|
||||||
"""
|
|
||||||
if not yonghuid:
|
|
||||||
return decimal.Decimal('0')
|
|
||||||
|
|
||||||
audit_sum = (
|
|
||||||
TixianShenheJilu.query.filter(
|
|
||||||
yonghuid=yonghuid,
|
|
||||||
leixing=5,
|
|
||||||
zhuangtai__in=_YAJIN_FROZEN_AUDIT_STATUSES,
|
|
||||||
).aggregate(total=Sum('shenqing_jine'))['total']
|
|
||||||
or decimal.Decimal('0')
|
|
||||||
)
|
|
||||||
|
|
||||||
# 旧手动提现:只写 Tixianjilu、无审核单;避免与自动流程双重累计
|
|
||||||
manual_sum = (
|
|
||||||
Tixianjilu.query.filter(
|
|
||||||
yonghuid=yonghuid,
|
|
||||||
leixing=5,
|
|
||||||
zhuangtai=1,
|
|
||||||
shenhe_jilu_id__isnull=True,
|
|
||||||
).aggregate(total=Sum('jine'))['total']
|
|
||||||
or decimal.Decimal('0')
|
|
||||||
)
|
|
||||||
|
|
||||||
return audit_sum + manual_sum
|
|
||||||
|
|
||||||
|
|
||||||
DAKUAN_MODE_MANUAL = 1
|
DAKUAN_MODE_MANUAL = 1
|
||||||
DAKUAN_MODE_AUTO = 2
|
DAKUAN_MODE_AUTO = 2
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user