feat: UFO 转盘购票与专区图标(不影响现有俱乐部点单)
新增转盘活动/奖品/机会表与 Czjilu leixing=7 履约;专区 tupian_url;hqsp/详情下发 shi_zhuanpan。普通点单与抢单主链路保持不变。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -59,6 +59,10 @@ class Shangpin(QModel):
|
||||
max_length=16, default='xq', db_index=True, verbose_name='所属俱乐部',
|
||||
help_text='公共商品按俱乐部隔离;历史数据默认星阙 xq',
|
||||
)
|
||||
# 转盘购票商品标记:True 时走转盘支付,不走普通点单进抢池;默认 False,xq/xzj 不受影响
|
||||
shi_zhuanpan = models.BooleanField(
|
||||
default=False, db_index=True, verbose_name='是否转盘购票商品',
|
||||
)
|
||||
|
||||
class Meta:
|
||||
db_table = 'shangpin'
|
||||
@@ -129,7 +133,11 @@ class ShangpinZhuanqu(QModel):
|
||||
max_length=16, default='xq', db_index=True, verbose_name='所属俱乐部',
|
||||
help_text='公共专区按俱乐部隔离;历史数据默认星阙 xq',
|
||||
)
|
||||
|
||||
# UFO 等点单端专区横滑图标(相对 OSS 路径或完整 URL);xq 可不填
|
||||
tupian_url = models.CharField(
|
||||
max_length=500, null=True, blank=True, default='',
|
||||
verbose_name='专区图标URL',
|
||||
)
|
||||
|
||||
class Meta:
|
||||
db_table = 'shangpin_zhuanqu'
|
||||
@@ -388,4 +396,85 @@ class ShangpinMeiriTongji(QModel):
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
self.clean()
|
||||
super().save(*args, **kwargs)
|
||||
super().save(*args, **kwargs)
|
||||
|
||||
|
||||
# ===========================================================================
|
||||
# 转盘单(UFO 等俱乐部可选能力;未配置活动则接口无数据,不影响 xq/xzj)
|
||||
# ===========================================================================
|
||||
|
||||
class ZhuanpanHuodong(QModel):
|
||||
"""转盘活动:一个俱乐部可有多个;购票价格取关联商品 jiage。"""
|
||||
id = models.AutoField(primary_key=True)
|
||||
club_id = models.CharField(max_length=16, db_index=True, verbose_name='俱乐部')
|
||||
mingzi = models.CharField(max_length=64, default='幸运转盘', verbose_name='活动名')
|
||||
shangpin_id = models.PositiveIntegerField(
|
||||
db_index=True, verbose_name='购票商品ID',
|
||||
help_text='对应 Shangpin.id,且该商品建议 shi_zhuanpan=True',
|
||||
)
|
||||
qiyong = models.BooleanField(default=True, db_index=True, verbose_name='是否启用')
|
||||
beizhu = models.CharField(max_length=200, blank=True, default='', verbose_name='备注')
|
||||
CreateTime = models.DateTimeField(auto_now_add=True)
|
||||
UpdateTime = models.DateTimeField(auto_now=True)
|
||||
|
||||
class Meta:
|
||||
db_table = 'zhuanpan_huodong'
|
||||
verbose_name = '转盘活动'
|
||||
verbose_name_plural = verbose_name
|
||||
indexes = [models.Index(fields=['club_id', 'qiyong'])]
|
||||
|
||||
|
||||
class ZhuanpanJiangpin(QModel):
|
||||
"""转盘奖品格:权重越高越易中;shi_xiexie=True 表示谢谢参与(不生成订单)。"""
|
||||
id = models.AutoField(primary_key=True)
|
||||
huodong_id = models.PositiveIntegerField(db_index=True, verbose_name='活动ID')
|
||||
mingzi = models.CharField(max_length=64, verbose_name='奖品名')
|
||||
tupian_url = models.CharField(max_length=500, blank=True, default='', verbose_name='奖品图')
|
||||
shangpin_id = models.PositiveIntegerField(
|
||||
null=True, blank=True, db_index=True, verbose_name='中奖后履约商品ID',
|
||||
)
|
||||
quanzhong = models.PositiveIntegerField(default=1, verbose_name='中奖权重')
|
||||
paixu = models.PositiveSmallIntegerField(default=0, verbose_name='格子序号')
|
||||
shi_xiexie = models.BooleanField(default=False, verbose_name='是否谢谢参与')
|
||||
CreateTime = models.DateTimeField(auto_now_add=True)
|
||||
UpdateTime = models.DateTimeField(auto_now=True)
|
||||
|
||||
class Meta:
|
||||
db_table = 'zhuanpan_jiangpin'
|
||||
verbose_name = '转盘奖品'
|
||||
verbose_name_plural = verbose_name
|
||||
indexes = [models.Index(fields=['huodong_id', 'paixu'])]
|
||||
|
||||
|
||||
class ZhuanpanJihui(QModel):
|
||||
"""转盘抽奖机会单:支付成功后待抽,不进抢单池;抽中后再写 Order。
|
||||
|
||||
zhuangtai: 9=待支付 1=已付待抽 2=已抽 3=关闭/作废
|
||||
"""
|
||||
id = models.AutoField(primary_key=True)
|
||||
club_id = models.CharField(max_length=16, db_index=True, verbose_name='俱乐部')
|
||||
yonghuid = models.CharField(max_length=32, db_index=True, verbose_name='用户UID')
|
||||
huodong_id = models.PositiveIntegerField(db_index=True, verbose_name='活动ID')
|
||||
czjilu_dingdan_id = models.CharField(
|
||||
max_length=64, unique=True, db_index=True, verbose_name='支付流水单号',
|
||||
)
|
||||
jine = models.DecimalField(max_digits=10, decimal_places=2, default=0, verbose_name='购票金额')
|
||||
zhuangtai = models.PositiveSmallIntegerField(default=9, db_index=True, verbose_name='状态')
|
||||
nicheng = models.CharField(max_length=50, blank=True, default='', verbose_name='游戏昵称')
|
||||
beizhu = models.CharField(max_length=200, blank=True, default='', verbose_name='备注')
|
||||
zhongjiang_jiangpin_id = models.PositiveIntegerField(null=True, blank=True, verbose_name='中奖奖品ID')
|
||||
zhongjiang_shangpin_id = models.PositiveIntegerField(null=True, blank=True, verbose_name='中奖商品ID')
|
||||
dingdan_id = models.CharField(
|
||||
max_length=32, blank=True, default='', db_index=True,
|
||||
verbose_name='中奖后生成的订单号',
|
||||
)
|
||||
CreateTime = models.DateTimeField(auto_now_add=True)
|
||||
UpdateTime = models.DateTimeField(auto_now=True)
|
||||
|
||||
class Meta:
|
||||
db_table = 'zhuanpan_jihui'
|
||||
verbose_name = '转盘抽奖机会'
|
||||
verbose_name_plural = verbose_name
|
||||
indexes = [
|
||||
models.Index(fields=['club_id', 'yonghuid', 'zhuangtai']),
|
||||
]
|
||||
Reference in New Issue
Block a user