feat: 假单种子脚本、商家名称字段、返回随机顺序与时间

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
XingQue
2026-06-28 17:41:32 +08:00
parent b050a6895b
commit 7c9db3f360
6 changed files with 201 additions and 8 deletions

View File

@@ -1,7 +1,10 @@
"""抢单大厅假单:无资格/封禁打手仅展示假数据。"""
import random
from datetime import timedelta
from decimal import Decimal
from django.core.exceptions import ObjectDoesNotExist
from django.utils import timezone
from rest_framework.response import Response
from backend.utils import fmt_datetime, pick_leixing_id
@@ -36,14 +39,22 @@ def dashou_should_use_fake_pool(user):
return True
def _format_fake_row(row):
def _random_display_time_str():
"""返回给前端的创建时间:当前请求时刻 2~5 分钟前的随机时间。"""
seconds_ago = random.randint(120, 300)
dt = timezone.now() - timedelta(seconds=seconds_ago)
return fmt_datetime(dt)
def _format_fake_row(row, display_time=None):
"""字段与 DashouDingdanHuoquView 真实单列表保持一致。"""
avatar = DEFAULT_DISPATCHER_AVATAR
platform = int(row.Platform or 1)
oid = row.OrderID
price = float(row.Amount or 0)
ct = fmt_datetime(row.CreateTime)
ct = display_time or _random_display_time_str()
zid = (row.DispatcherUserID or '').strip()
sj_name = (getattr(row, 'MerchantNickname', None) or '').strip()
return {
'dingdan_id': oid,
@@ -59,7 +70,7 @@ def _format_fake_row(row):
'beizhu': row.Remark or '',
'creat_time': ct,
'create_time': ct,
'sjnicheng': '',
'sjnicheng': sj_name if platform == 2 else '',
'sj_avatar': avatar if platform == 2 else '',
'zhiding_uid': zid,
'zhiding_avatar': avatar,
@@ -85,12 +96,14 @@ def build_fake_order_pool_response(request):
if leixing_id is not None:
qs = qs.filter(ProductTypeID=leixing_id)
qs = qs.order_by('-SortOrder', '-CreateTime')
total = qs.count()
offset = (page - 1) * page_size
rows = list(qs[offset:offset + page_size])
rows = list(qs)
random.shuffle(rows)
formatted_list = [_format_fake_row(r) for r in rows]
total = len(rows)
offset = (page - 1) * page_size
page_rows = rows[offset:offset + page_size]
formatted_list = [_format_fake_row(r) for r in page_rows]
has_more = (page * page_size) < total
return Response({