抢单池列表对押金单按可用押金(含冻结池)伪装门槛为0,前端无需改动即可抢单。
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -3813,11 +3813,18 @@ class DashouDingdanHuoquView(APIView):
|
||||
获取可抢订单列表(支持标签筛选)
|
||||
POST /dingdan/ddhq
|
||||
需要JWT Token认证
|
||||
|
||||
押金单特殊处理(前端不改也能抢):
|
||||
若当前打手「未冻结押金 + 冻结押金池」足够本单押金要求,
|
||||
则响应里把 yajin 写成 0,骗过前端本地校验;库中真实要求不变,
|
||||
真正抢单仍由 /dingdan/qiangdan 按可用押金(含冻结)校验。
|
||||
仅处理押金要求(yaoqiuleixing=2),与佣金无关。
|
||||
"""
|
||||
permission_classes = [IsAuthenticated]
|
||||
|
||||
def post(self, request):
|
||||
try:
|
||||
from decimal import Decimal
|
||||
# 1. 获取请求参数
|
||||
data = request.data
|
||||
leixing_id = data.get('leixing_id')
|
||||
@@ -3825,6 +3832,17 @@ class DashouDingdanHuoquView(APIView):
|
||||
page_size = int(data.get('page_size', 10))
|
||||
biaoqian_id = data.get('biaoqian_id')
|
||||
|
||||
# 当前打手押金快照(未冻结 + 冻结池),仅用于列表展示伪装
|
||||
free_yajin = Decimal('0')
|
||||
frozen_yajin = Decimal('0')
|
||||
try:
|
||||
dashou_profile = request.user.dashou_profile
|
||||
free_yajin = Decimal(str(dashou_profile.yajin or 0))
|
||||
frozen_yajin = Decimal(str(getattr(dashou_profile, 'dongjie_chi_yajin', 0) or 0))
|
||||
except Exception:
|
||||
pass
|
||||
usable_yajin = free_yajin + frozen_yajin
|
||||
|
||||
# 2. 构建基础查询条件
|
||||
base_query = Q(zhuangtai__in=[1, 7])
|
||||
if leixing_id:
|
||||
@@ -3859,6 +3877,13 @@ class DashouDingdanHuoquView(APIView):
|
||||
# 9. 转换为列表并格式化
|
||||
dingdan_list = []
|
||||
for order in dingdan_values:
|
||||
yaoqiu = order['yaoqiuleixing'] or 0
|
||||
# 列表里的 yajin 对押金单 = 订单押金要求(字段名历史遗留,存的是押金门槛)
|
||||
real_yajin_req = Decimal(str(order['yongjin'] or 0))
|
||||
show_yajin = float(real_yajin_req)
|
||||
# 仅押金单:可用押金(含冻结池)够门槛 → 返回 0,前端不再拦截
|
||||
if yaoqiu == 2 and real_yajin_req > 0 and usable_yajin >= real_yajin_req:
|
||||
show_yajin = 0.0
|
||||
dingdan_list.append({
|
||||
'dingdan_id': order['dingdan_id'],
|
||||
'zhuangtai': order['zhuangtai'],
|
||||
@@ -3868,9 +3893,9 @@ class DashouDingdanHuoquView(APIView):
|
||||
'zhiding_id': order['zhiding_id'] or '',
|
||||
'leixing_id': order['leixing_id'] or 0,
|
||||
'tupian': order['tupian'] or '',
|
||||
'yaoqiuleixing': order['yaoqiuleixing'] or 0,
|
||||
'yaoqiuleixing': yaoqiu,
|
||||
'huiyuan_id': order['huiyuan_id'] or '',
|
||||
'yajin': float(order['yongjin']) if order['yongjin'] else 0.0,
|
||||
'yajin': show_yajin,
|
||||
'yongjin': float(order['yongjin']) if order['yongjin'] else 0.0,
|
||||
'jieshao': order['jieshao'] or '',
|
||||
'beizhu': order['beizhu'] or '',
|
||||
|
||||
Reference in New Issue
Block a user