155 lines
5.4 KiB
Python
155 lines
5.4 KiB
Python
"""写入抢单大厅假单种子数据。用法: python manage.py seed_fake_grab_orders --club-id xq --leixing-id 1"""
|
||
import random
|
||
import time
|
||
|
||
from django.core.management.base import BaseCommand
|
||
from django.utils import timezone
|
||
|
||
from orders.models import FakeGrabOrder
|
||
|
||
DEFAULT_AVATAR = 'beijing/morentouxiang.jpg'
|
||
|
||
COMMON_TAIL = (
|
||
'下单凑七套,不卡保底,不要私藏变卖,私藏变卖老板必退款,'
|
||
'陪护也不能私藏,不能藏一丁点装备和变卖,不然必退款和罚款。'
|
||
)
|
||
|
||
# 7 个模板(各生成 2 条 = 14 条)
|
||
TEMPLATE_ROWS = [
|
||
{
|
||
'title': '2100W',
|
||
'description': f'打手选图保底2100W,{COMMON_TAIL}',
|
||
'amount': '35.00',
|
||
},
|
||
{
|
||
'title': '4光子鸡',
|
||
'description': (
|
||
'单据4个光子鸡,不出,一直打,下单凑七套,装备和收益都归老板,'
|
||
'不卡保底,不要私藏变卖,私藏变卖老板必退款,陪护也不能私藏,'
|
||
'不能藏一丁点装备和变卖,不然必退款和罚款。'
|
||
),
|
||
'amount': '30.00',
|
||
},
|
||
{
|
||
'title': '3金光',
|
||
'description': (
|
||
'单局出3个金光,下单凑七套,装备和收益都归老板,'
|
||
'不卡保底,不要私藏变卖,私藏变卖老板必退款,陪护也不能私藏,'
|
||
'不能藏一丁点装备和变卖,不然必退款和罚款。'
|
||
),
|
||
'amount': '20.00',
|
||
},
|
||
{
|
||
'title': '1500W',
|
||
'description': f'打手选图保底1500W,{COMMON_TAIL}',
|
||
'amount': '25.00',
|
||
},
|
||
{
|
||
'title': '300W',
|
||
'description': f'保底,300w以上,{COMMON_TAIL}',
|
||
'amount': '6.00',
|
||
},
|
||
{
|
||
'title': '4金条',
|
||
'description': (
|
||
'单据4根,金条不出,一直打,下单凑七套,装备和收益都归老板,'
|
||
'不卡保底,不要私藏变卖,私藏变卖老板必退款,陪护也不能私藏,'
|
||
'不能藏一丁点装备和变卖,不然必退款和罚款。'
|
||
),
|
||
'amount': '18.00',
|
||
},
|
||
{
|
||
'title': '1000W',
|
||
'description': f'打手选图保底1000W,{COMMON_TAIL}',
|
||
'amount': '15.00',
|
||
},
|
||
]
|
||
|
||
MERCHANT_NAMES = [
|
||
'官方直营店',
|
||
'接单秒结',
|
||
'没实力的别接',
|
||
'骂老板4千家',
|
||
]
|
||
|
||
# 14 条:平台 5 + 商家 9;优质商家 6(仅商家单)
|
||
# 索引 0-13 对应 7 模板各 2 条
|
||
PLATFORM_INDEXES = {0, 1, 2, 3, 4}
|
||
PREMIUM_MERCHANT_INDEXES = {5, 6, 7, 8, 9, 10}
|
||
REMARK_INDEXES = {2, 5, 8, 11}
|
||
REMARK_TEXT = '打的好奖励鸡腿'
|
||
|
||
POOL_USER_IDS = ['3829104', '5829104', '1928374', '6649201', '7731045', '8812345']
|
||
|
||
|
||
def _gen_order_id(used):
|
||
while True:
|
||
oid = f'JD{int(time.time() * 1000)}{random.randint(1000, 9999)}'
|
||
if oid not in used:
|
||
used.add(oid)
|
||
return oid
|
||
|
||
|
||
class Command(BaseCommand):
|
||
help = '写入抢单大厅假单(7 模板 ×2 = 14 条,可重复执行会先清理同俱乐部+类型旧 JD 假单)'
|
||
|
||
def add_arguments(self, parser):
|
||
parser.add_argument('--club-id', default='xq', help='俱乐部 ID,默认 xq')
|
||
parser.add_argument('--leixing-id', type=int, default=1, help='商品类型 ID(与抢单大厅 Tab 一致)')
|
||
parser.add_argument('--no-clear', action='store_true', help='不清理旧 JD 假单,直接追加(可能 ID 冲突)')
|
||
|
||
def handle(self, *args, **options):
|
||
club_id = (options['club_id'] or 'xq').strip()
|
||
leixing_id = int(options['leixing_id'])
|
||
now = timezone.now()
|
||
|
||
if not options['no_clear']:
|
||
deleted, _ = FakeGrabOrder.query.filter(
|
||
ClubID=club_id,
|
||
ProductTypeID=leixing_id,
|
||
OrderID__startswith='JD',
|
||
).delete()
|
||
self.stdout.write(f'已清理旧假单 {deleted} 条(club={club_id}, leixing={leixing_id})')
|
||
|
||
used_ids = set()
|
||
expanded = []
|
||
for tpl in TEMPLATE_ROWS:
|
||
expanded.append(tpl)
|
||
expanded.append(tpl)
|
||
|
||
created = 0
|
||
for idx, tpl in enumerate(expanded):
|
||
is_platform = idx in PLATFORM_INDEXES
|
||
is_premium = idx in PREMIUM_MERCHANT_INDEXES and not is_platform
|
||
remark = REMARK_TEXT if idx in REMARK_INDEXES else ''
|
||
|
||
merchant_name = ''
|
||
if not is_platform:
|
||
merchant_name = MERCHANT_NAMES[idx % len(MERCHANT_NAMES)]
|
||
|
||
dispatcher_id = random.choice(POOL_USER_IDS)
|
||
|
||
FakeGrabOrder.query.create(
|
||
OrderID=_gen_order_id(used_ids),
|
||
Amount=tpl['amount'],
|
||
ProductTypeID=leixing_id,
|
||
Description=tpl['description'],
|
||
Remark=remark,
|
||
DispatcherUserID=dispatcher_id,
|
||
DispatcherAvatar=DEFAULT_AVATAR,
|
||
MerchantNickname=merchant_name,
|
||
IsPremiumMerchant=is_premium,
|
||
Platform=1 if is_platform else 2,
|
||
ClubID=club_id,
|
||
SortOrder=100 - idx,
|
||
CreateTime=now,
|
||
UpdateTime=now,
|
||
)
|
||
created += 1
|
||
|
||
self.stdout.write(self.style.SUCCESS(
|
||
f'假单种子完成:新增 {created} 条 | club={club_id} leixing_id={leixing_id} '
|
||
f'(平台单 {len(PLATFORM_INDEXES)} 商家单 {created - len(PLATFORM_INDEXES)} '
|
||
f'优质商家 {len(PREMIUM_MERCHANT_INDEXES)})'
|
||
))
|