彻底解决了 create_time 的问题,将所有字段都改为了 CreateTime
This commit is contained in:
@@ -20,7 +20,7 @@ class Migration(migrations.Migration):
|
||||
fields=[
|
||||
('bankuai_id', models.AutoField(primary_key=True, serialize=False, verbose_name='板块ID')),
|
||||
('mingcheng', models.CharField(db_index=True, max_length=50, unique=True, verbose_name='板块名称')),
|
||||
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
|
||||
('CreateTime', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': '板块',
|
||||
@@ -36,7 +36,7 @@ class Migration(migrations.Migration):
|
||||
('leixing', models.CharField(choices=[('dashou', '打手'), ('boss', '老板'), ('shangjia', '商家'), ('guanshi', '管事'), ('zuzhang', '组长')], max_length=10, verbose_name='称号类型')),
|
||||
('tubiao_url', models.CharField(blank=True, max_length=200, null=True, verbose_name='称号图标相对URL')),
|
||||
('texiao_miaoshu', models.TextField(blank=True, null=True, verbose_name='特效描述(JSON)')),
|
||||
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
|
||||
('CreateTime', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
|
||||
('kaohe_guize', models.TextField(blank=True, null=True, verbose_name='考核规则')),
|
||||
('kaioi_jinpai', models.BooleanField(default=False, verbose_name='是否同时开启金牌')),
|
||||
('bankuai', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='rank.bankuai', verbose_name='所属板块(空=全板块通用)')),
|
||||
@@ -61,7 +61,7 @@ class Migration(migrations.Migration):
|
||||
('shenheguan_id', models.CharField(blank=True, max_length=7, verbose_name='指定考核官ID')),
|
||||
('cishu', models.IntegerField(verbose_name='本次考核次数(预计算)')),
|
||||
('fee', models.DecimalField(decimal_places=2, max_digits=10, verbose_name='本次费用(分账单位)')),
|
||||
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
|
||||
('CreateTime', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': '考核支付临时表',
|
||||
@@ -78,8 +78,8 @@ class Migration(migrations.Migration):
|
||||
('zhuangtai', models.IntegerField(choices=[(0, '审核中'), (1, '通过'), (2, '未通过'), (3, '待审核')], default=0, verbose_name='审核状态')),
|
||||
('cishu', models.IntegerField(default=1, verbose_name='第几次审核')),
|
||||
('jiaofei_jine', models.DecimalField(decimal_places=2, default=0.0, max_digits=10, verbose_name='缴纳费用')),
|
||||
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
|
||||
('update_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
|
||||
('CreateTime', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
|
||||
('UpdateTime', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
|
||||
('jilu_id', models.CharField(db_index=True, max_length=32, unique=True, verbose_name='记录ID')),
|
||||
('guize_neirong', models.TextField(blank=True, null=True, verbose_name='规则内容')),
|
||||
('shenheguan_youxi_id', models.CharField(blank=True, max_length=50, null=True, verbose_name='审核官游戏ID')),
|
||||
@@ -101,7 +101,7 @@ class Migration(migrations.Migration):
|
||||
('cishu', models.IntegerField(verbose_name='对应次数')),
|
||||
('shenheguan_id', models.CharField(max_length=7, verbose_name='考核官用户ID')),
|
||||
('yuanyin', models.TextField(verbose_name='拒绝原因')),
|
||||
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
|
||||
('CreateTime', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
|
||||
('jilu', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rank.shenhejilu', to_field='jilu_id', verbose_name='审核记录')),
|
||||
],
|
||||
options={
|
||||
@@ -162,8 +162,8 @@ class Migration(migrations.Migration):
|
||||
('taidu_jingyan', models.DecimalField(decimal_places=2, default=0, max_digits=8, verbose_name='服务态度经验')),
|
||||
('zonghe_jingyan', models.DecimalField(decimal_places=2, default=0, max_digits=8, verbose_name='综合经验')),
|
||||
('dingdan_id', models.CharField(blank=True, db_index=True, max_length=32, null=True, verbose_name='关联订单ID')),
|
||||
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
|
||||
('update_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
|
||||
('CreateTime', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
|
||||
('UpdateTime', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
|
||||
('bankuai', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='rank.bankuai', verbose_name='所属板块')),
|
||||
],
|
||||
options={
|
||||
@@ -176,7 +176,7 @@ class Migration(migrations.Migration):
|
||||
name='DingdanBiaoqian',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
|
||||
('CreateTime', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
|
||||
('chenghao', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rank.chenghao', verbose_name='标签')),
|
||||
('dingdan', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='orders.dingdan', to_field='dingdan_id', verbose_name='订单')),
|
||||
],
|
||||
@@ -194,7 +194,7 @@ class Migration(migrations.Migration):
|
||||
('shangxian_sudu', models.PositiveSmallIntegerField(blank=True, null=True, verbose_name='上线速度评价(1-5)')),
|
||||
('fuwu_taidu', models.PositiveSmallIntegerField(blank=True, null=True, verbose_name='服务态度评价(1-5)')),
|
||||
('fanche_cishu', models.PositiveIntegerField(blank=True, null=True, verbose_name='翻车次数')),
|
||||
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
|
||||
('CreateTime', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
|
||||
('jiedan_time', models.DateTimeField(blank=True, null=True, verbose_name='接单时间')),
|
||||
('tijiao_time', models.DateTimeField(blank=True, null=True, verbose_name='提交时间')),
|
||||
('bankuai', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, to='rank.bankuai', verbose_name='所属板块')),
|
||||
@@ -256,7 +256,7 @@ class Migration(migrations.Migration):
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='jingyanjilu',
|
||||
index=models.Index(fields=['yonghu_id', 'bankuai', 'create_time'], name='jingyan_jil_yonghu__786992_idx'),
|
||||
index=models.Index(fields=['yonghu_id', 'bankuai', 'CreateTime'], name='jingyan_jil_yonghu__786992_idx'),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='dingdanbiaoqian',
|
||||
@@ -268,7 +268,7 @@ class Migration(migrations.Migration):
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='dashoubiaoxian',
|
||||
index=models.Index(fields=['dashou_id', 'bankuai', 'create_time'], name='dashou_biao_dashou__36e1c3_idx'),
|
||||
index=models.Index(fields=['dashou_id', 'bankuai', 'CreateTime'], name='dashou_biao_dashou__36e1c3_idx'),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='chenghao',
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
# Generated by Django 4.2.27 on 2026-06-19 19:15
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('rank', '0002_alter_dashoubiaoxian_dingdan_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RenameIndex(
|
||||
model_name='dashoubiaoxian',
|
||||
new_name='dashou_biao_dashou__502414_idx',
|
||||
old_name='dashou_biao_dashou__36e1c3_idx',
|
||||
),
|
||||
migrations.RenameIndex(
|
||||
model_name='jingyanjilu',
|
||||
new_name='jingyan_jil_yonghu__51d881_idx',
|
||||
old_name='jingyan_jil_yonghu__786992_idx',
|
||||
),
|
||||
]
|
||||
446
rank/models.py
446
rank/models.py
@@ -1,224 +1,224 @@
|
||||
from django.db import models
|
||||
from gvsdsdk.model_base import QModel
|
||||
from django.conf import settings
|
||||
from orders.models import Order
|
||||
|
||||
# ==================== 板块表 ====================
|
||||
class Bankuai(QModel):
|
||||
bankuai_id = models.AutoField(primary_key=True, verbose_name='板块ID')
|
||||
mingcheng = models.CharField(max_length=50, unique=True, db_index=True, verbose_name='板块名称')
|
||||
create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
|
||||
|
||||
class Meta:
|
||||
db_table = 'bankuai'
|
||||
verbose_name = '板块'
|
||||
verbose_name_plural = verbose_name
|
||||
|
||||
def __str__(self):
|
||||
return self.mingcheng
|
||||
|
||||
|
||||
# ==================== 打手订单表现记录 ====================
|
||||
class DashouBiaoxian(QModel):
|
||||
dingdan = models.ForeignKey('orders.Order', to_field='OrderID', on_delete=models.CASCADE, related_name='biaoxian', verbose_name='关联订单', db_index=True)
|
||||
|
||||
dashou_id = models.CharField(max_length=32, db_index=True, verbose_name='打手ID')
|
||||
bankuai = models.ForeignKey(Bankuai, on_delete=models.PROTECT, to_field='bankuai_id', verbose_name='所属板块', db_index=True,null=True)
|
||||
shangxian_sudu = models.PositiveSmallIntegerField(null=True, blank=True, verbose_name='上线速度评价(1-5)')
|
||||
fuwu_taidu = models.PositiveSmallIntegerField(null=True, blank=True, verbose_name='服务态度评价(1-5)')
|
||||
fanche_cishu = models.PositiveIntegerField(null=True, blank=True, verbose_name='翻车次数')
|
||||
create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
|
||||
jiedan_time = models.DateTimeField(null=True, blank=True, verbose_name='接单时间')
|
||||
tijiao_time = models.DateTimeField(null=True, blank=True, verbose_name='提交时间')
|
||||
|
||||
class Meta:
|
||||
db_table = 'dashou_biaoxian'
|
||||
verbose_name = '打手订单表现'
|
||||
verbose_name_plural = verbose_name
|
||||
indexes = [models.Index(fields=['dashou_id', 'bankuai', 'create_time'])]
|
||||
|
||||
|
||||
# ==================== 经验变动记录 ====================
|
||||
class JingyanJilu(QModel):
|
||||
yonghu_id = models.CharField(max_length=7, db_index=True, verbose_name='用户ID')
|
||||
yonghu_leixing = models.CharField(max_length=10, choices=[('dashou','打手'),('boss','老板'),('shangjia','商家'),('guanshi','管事'),('zuzhang','组长')], verbose_name='用户类型')
|
||||
bankuai = models.ForeignKey(Bankuai, on_delete=models.PROTECT, to_field='bankuai_id', verbose_name='所属板块', db_index=True)
|
||||
sudu_jingyan = models.DecimalField(max_digits=8, decimal_places=2, default=0, verbose_name='上线速度经验')
|
||||
shili_jingyan = models.DecimalField(max_digits=8, decimal_places=2, default=0, verbose_name='打手实力经验')
|
||||
taidu_jingyan = models.DecimalField(max_digits=8, decimal_places=2, default=0, verbose_name='服务态度经验')
|
||||
zonghe_jingyan = models.DecimalField(max_digits=8, decimal_places=2, default=0, verbose_name='综合经验')
|
||||
dingdan_id = models.CharField(max_length=32, null=True, blank=True, db_index=True, verbose_name='关联订单ID')
|
||||
create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
|
||||
update_time = models.DateTimeField(auto_now=True, verbose_name='更新时间')
|
||||
|
||||
|
||||
class Meta:
|
||||
db_table = 'jingyan_jilu'
|
||||
verbose_name = '经验变动记录'
|
||||
verbose_name_plural = verbose_name
|
||||
indexes = [models.Index(fields=['yonghu_id', 'bankuai', 'create_time'])]
|
||||
|
||||
|
||||
# ==================== 称号主表 ====================
|
||||
class Chenghao(QModel):
|
||||
mingcheng = models.CharField(max_length=50, unique=True, verbose_name='称号名称')
|
||||
leixing = models.CharField(max_length=10, choices=[('dashou','打手'),('boss','老板'),('shangjia','商家'),('guanshi','管事'),('zuzhang','组长')], verbose_name='称号类型')
|
||||
bankuai = models.ForeignKey(Bankuai, on_delete=models.PROTECT, to_field='bankuai_id', null=True, blank=True, verbose_name='所属板块(空=全板块通用)')
|
||||
tubiao_url = models.CharField(max_length=200, null=True, blank=True, verbose_name='称号图标相对URL')
|
||||
texiao_miaoshu = models.TextField(null=True, blank=True, verbose_name='特效描述(JSON)')
|
||||
create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
|
||||
kaohe_guize = models.TextField(null=True, blank=True, verbose_name='考核规则') # 新增
|
||||
kaioi_jinpai = models.BooleanField(default=False, verbose_name='是否同时开启金牌')
|
||||
|
||||
class Meta:
|
||||
db_table = 'chenghao'
|
||||
verbose_name = '称号'
|
||||
verbose_name_plural = verbose_name
|
||||
indexes = [models.Index(fields=['leixing', 'bankuai'])]
|
||||
|
||||
|
||||
# ==================== 用户 - 称号关联 ====================
|
||||
class YonghuChenghao(QModel):
|
||||
yonghu = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='chenghao_list', verbose_name='用户', db_index=True)
|
||||
chenghao = models.ForeignKey(Chenghao, on_delete=models.CASCADE, verbose_name='称号')
|
||||
huode_time = models.DateTimeField(auto_now_add=True, verbose_name='获得时间')
|
||||
|
||||
class Meta:
|
||||
db_table = 'yonghu_chenghao'
|
||||
verbose_name = '用户称号关联'
|
||||
verbose_name_plural = verbose_name
|
||||
unique_together = ('yonghu', 'chenghao')
|
||||
# 修复:只索引本表字段
|
||||
indexes = [models.Index(fields=['yonghu', 'chenghao'])]
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
class DingdanBiaoqian(QModel):
|
||||
"""订单需求标签关联表"""
|
||||
dingdan = models.ForeignKey(
|
||||
Order,
|
||||
to_field='OrderID', # 关联到字符串字段 OrderID
|
||||
on_delete=models.CASCADE,
|
||||
verbose_name='订单',
|
||||
db_index=True
|
||||
)
|
||||
chenghao = models.ForeignKey('rank.Chenghao', on_delete=models.CASCADE, verbose_name='标签')
|
||||
create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
|
||||
|
||||
class Meta:
|
||||
db_table = 'dingdan_biaoqian'
|
||||
verbose_name = '订单需求标签'
|
||||
verbose_name_plural = verbose_name
|
||||
unique_together = ('dingdan', 'chenghao')
|
||||
indexes = [models.Index(fields=['dingdan'])]
|
||||
|
||||
|
||||
|
||||
|
||||
class ShenheJilu(QModel):
|
||||
"""审核记录表"""
|
||||
shenqingren_id = models.CharField(max_length=7, verbose_name='申请人用户ID')
|
||||
shenheguan_id = models.CharField(max_length=7, null = True,verbose_name='审核官用户ID')
|
||||
zhuangtai = models.IntegerField(choices=[(0, '审核中'), (1, '通过'), (2, '未通过'), (3, '待审核')], default=0, verbose_name='审核状态')
|
||||
bankuai = models.ForeignKey(Bankuai, on_delete=models.PROTECT, to_field='bankuai_id', null=True, blank=True, verbose_name='审核板块')
|
||||
chenghao = models.ForeignKey(Chenghao, on_delete=models.PROTECT, null=True, blank=True, verbose_name='审核标签')
|
||||
cishu = models.IntegerField(default=1, verbose_name='第几次审核')
|
||||
jiaofei_jine = models.DecimalField(max_digits=10, decimal_places=2, default=0.00, verbose_name='缴纳费用')
|
||||
create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
|
||||
update_time = models.DateTimeField(auto_now=True, verbose_name='更新时间')
|
||||
jilu_id = models.CharField(max_length=32, unique=True, db_index=True, verbose_name='记录ID') # 新增
|
||||
guize_neirong = models.TextField(null=True, blank=True, verbose_name='规则内容')
|
||||
shenheguan_youxi_id = models.CharField(max_length=50, null=True, blank=True, verbose_name='审核官游戏ID')
|
||||
dashou_youxi_id = models.CharField(max_length=50, null=True, blank=True, verbose_name='打手游戏ID')
|
||||
dashou_beizhu = models.TextField(null=True, blank=True, verbose_name='打手备注')
|
||||
|
||||
class Meta:
|
||||
db_table = 'shenhe_jilu'
|
||||
verbose_name = '审核记录'
|
||||
verbose_name_plural = verbose_name
|
||||
indexes = [
|
||||
models.Index(fields=['shenqingren_id', 'zhuangtai']),
|
||||
models.Index(fields=['shenheguan_id']),
|
||||
]
|
||||
|
||||
|
||||
|
||||
class KaohePayTemp(QModel):
|
||||
"""考核支付临时上下文(仅用于支付成功后回调取参,不删除数据)"""
|
||||
dingdan_id = models.CharField(max_length=50, unique=True, db_index=True, verbose_name='订单ID')
|
||||
yonghuid = models.CharField(max_length=7, db_index=True, verbose_name='用户ID')
|
||||
tag_id = models.IntegerField(verbose_name='标签ID')
|
||||
game_nick = models.CharField(max_length=100, verbose_name='游戏昵称')
|
||||
remark = models.TextField(blank=True, verbose_name='备注')
|
||||
reapply = models.BooleanField(default=False, verbose_name='是否再次申请')
|
||||
jilu_id = models.CharField(max_length=32, null=True, blank=True, verbose_name='原记录ID(再次申请时)')
|
||||
shenheguan_id = models.CharField(max_length=7, blank=True, verbose_name='指定考核官ID')
|
||||
cishu = models.IntegerField(verbose_name='本次考核次数(预计算)')
|
||||
fee = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='本次费用(分账单位)')
|
||||
create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
|
||||
|
||||
class Meta:
|
||||
db_table = 'kaohe_pay_temp'
|
||||
verbose_name = '考核支付临时表'
|
||||
verbose_name_plural = verbose_name
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
class KaoheCishuFeiyong(QModel):
|
||||
"""各标签各考核次数所需缴纳金额"""
|
||||
chenghao = models.ForeignKey(Chenghao, on_delete=models.CASCADE, verbose_name='标签')
|
||||
cishu = models.IntegerField(verbose_name='第几次考核')
|
||||
feiyong = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='需缴纳金额')
|
||||
|
||||
class Meta:
|
||||
db_table = 'kaohe_cishu_feiyong'
|
||||
verbose_name = '考核次数费用'
|
||||
verbose_name_plural = verbose_name
|
||||
unique_together = ('chenghao', 'cishu')
|
||||
indexes = [models.Index(fields=['chenghao', 'cishu'])]
|
||||
|
||||
|
||||
class KaoheJujueJilu(QModel):
|
||||
"""考核拒绝原因记录"""
|
||||
jilu = models.ForeignKey(ShenheJilu, on_delete=models.CASCADE, to_field='jilu_id', verbose_name='审核记录')
|
||||
cishu = models.IntegerField(verbose_name='对应次数')
|
||||
shenheguan_id = models.CharField(max_length=7, verbose_name='考核官用户ID')
|
||||
yuanyin = models.TextField(verbose_name='拒绝原因')
|
||||
create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
|
||||
|
||||
class Meta:
|
||||
db_table = 'kaohe_jujue_jilu'
|
||||
verbose_name = '拒绝原因记录'
|
||||
verbose_name_plural = verbose_name
|
||||
indexes = [models.Index(fields=['jilu_id', 'cishu'])]
|
||||
|
||||
|
||||
class KaoheJiluFeiyong(QModel):
|
||||
"""每次考核记录实际缴纳的费用明细"""
|
||||
jilu = models.ForeignKey(ShenheJilu, on_delete=models.CASCADE, to_field='jilu_id', verbose_name='考核记录')
|
||||
cishu = models.IntegerField(verbose_name='第几次考核')
|
||||
jine = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='缴纳金额')
|
||||
|
||||
class Meta:
|
||||
db_table = 'kaohe_jilu_feiyong'
|
||||
verbose_name = '考核记录费用'
|
||||
verbose_name_plural = verbose_name
|
||||
unique_together = ('jilu', 'cishu')
|
||||
|
||||
|
||||
|
||||
class KaoheguanBankuai(QModel):
|
||||
"""考核官与板块多对多关联表"""
|
||||
kaoheguan_id = models.CharField(max_length=7, db_index=True, verbose_name='考核官用户ID')
|
||||
bankuai = models.ForeignKey(Bankuai, on_delete=models.CASCADE, to_field='bankuai_id', verbose_name='所属板块')
|
||||
|
||||
class Meta:
|
||||
db_table = 'kaoheguan_bankuai'
|
||||
verbose_name = '考核官板块关联'
|
||||
verbose_name_plural = verbose_name
|
||||
unique_together = ('kaoheguan_id', 'bankuai')
|
||||
from django.db import models
|
||||
from gvsdsdk.model_base import QModel
|
||||
from django.conf import settings
|
||||
from orders.models import Order
|
||||
|
||||
# ==================== 板块表 ====================
|
||||
class Bankuai(QModel):
|
||||
bankuai_id = models.AutoField(primary_key=True, verbose_name='板块ID')
|
||||
mingcheng = models.CharField(max_length=50, unique=True, db_index=True, verbose_name='板块名称')
|
||||
CreateTime = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
|
||||
|
||||
class Meta:
|
||||
db_table = 'bankuai'
|
||||
verbose_name = '板块'
|
||||
verbose_name_plural = verbose_name
|
||||
|
||||
def __str__(self):
|
||||
return self.mingcheng
|
||||
|
||||
|
||||
# ==================== 打手订单表现记录 ====================
|
||||
class DashouBiaoxian(QModel):
|
||||
dingdan = models.ForeignKey('orders.Order', to_field='OrderID', on_delete=models.CASCADE, related_name='biaoxian', verbose_name='关联订单', db_index=True)
|
||||
|
||||
dashou_id = models.CharField(max_length=32, db_index=True, verbose_name='打手ID')
|
||||
bankuai = models.ForeignKey(Bankuai, on_delete=models.PROTECT, to_field='bankuai_id', verbose_name='所属板块', db_index=True,null=True)
|
||||
shangxian_sudu = models.PositiveSmallIntegerField(null=True, blank=True, verbose_name='上线速度评价(1-5)')
|
||||
fuwu_taidu = models.PositiveSmallIntegerField(null=True, blank=True, verbose_name='服务态度评价(1-5)')
|
||||
fanche_cishu = models.PositiveIntegerField(null=True, blank=True, verbose_name='翻车次数')
|
||||
CreateTime = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
|
||||
jiedan_time = models.DateTimeField(null=True, blank=True, verbose_name='接单时间')
|
||||
tijiao_time = models.DateTimeField(null=True, blank=True, verbose_name='提交时间')
|
||||
|
||||
class Meta:
|
||||
db_table = 'dashou_biaoxian'
|
||||
verbose_name = '打手订单表现'
|
||||
verbose_name_plural = verbose_name
|
||||
indexes = [models.Index(fields=['dashou_id', 'bankuai', 'CreateTime'])]
|
||||
|
||||
|
||||
# ==================== 经验变动记录 ====================
|
||||
class JingyanJilu(QModel):
|
||||
yonghu_id = models.CharField(max_length=7, db_index=True, verbose_name='用户ID')
|
||||
yonghu_leixing = models.CharField(max_length=10, choices=[('dashou','打手'),('boss','老板'),('shangjia','商家'),('guanshi','管事'),('zuzhang','组长')], verbose_name='用户类型')
|
||||
bankuai = models.ForeignKey(Bankuai, on_delete=models.PROTECT, to_field='bankuai_id', verbose_name='所属板块', db_index=True)
|
||||
sudu_jingyan = models.DecimalField(max_digits=8, decimal_places=2, default=0, verbose_name='上线速度经验')
|
||||
shili_jingyan = models.DecimalField(max_digits=8, decimal_places=2, default=0, verbose_name='打手实力经验')
|
||||
taidu_jingyan = models.DecimalField(max_digits=8, decimal_places=2, default=0, verbose_name='服务态度经验')
|
||||
zonghe_jingyan = models.DecimalField(max_digits=8, decimal_places=2, default=0, verbose_name='综合经验')
|
||||
dingdan_id = models.CharField(max_length=32, null=True, blank=True, db_index=True, verbose_name='关联订单ID')
|
||||
CreateTime = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
|
||||
UpdateTime = models.DateTimeField(auto_now=True, verbose_name='更新时间')
|
||||
|
||||
|
||||
class Meta:
|
||||
db_table = 'jingyan_jilu'
|
||||
verbose_name = '经验变动记录'
|
||||
verbose_name_plural = verbose_name
|
||||
indexes = [models.Index(fields=['yonghu_id', 'bankuai', 'CreateTime'])]
|
||||
|
||||
|
||||
# ==================== 称号主表 ====================
|
||||
class Chenghao(QModel):
|
||||
mingcheng = models.CharField(max_length=50, unique=True, verbose_name='称号名称')
|
||||
leixing = models.CharField(max_length=10, choices=[('dashou','打手'),('boss','老板'),('shangjia','商家'),('guanshi','管事'),('zuzhang','组长')], verbose_name='称号类型')
|
||||
bankuai = models.ForeignKey(Bankuai, on_delete=models.PROTECT, to_field='bankuai_id', null=True, blank=True, verbose_name='所属板块(空=全板块通用)')
|
||||
tubiao_url = models.CharField(max_length=200, null=True, blank=True, verbose_name='称号图标相对URL')
|
||||
texiao_miaoshu = models.TextField(null=True, blank=True, verbose_name='特效描述(JSON)')
|
||||
CreateTime = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
|
||||
kaohe_guize = models.TextField(null=True, blank=True, verbose_name='考核规则') # 新增
|
||||
kaioi_jinpai = models.BooleanField(default=False, verbose_name='是否同时开启金牌')
|
||||
|
||||
class Meta:
|
||||
db_table = 'chenghao'
|
||||
verbose_name = '称号'
|
||||
verbose_name_plural = verbose_name
|
||||
indexes = [models.Index(fields=['leixing', 'bankuai'])]
|
||||
|
||||
|
||||
# ==================== 用户 - 称号关联 ====================
|
||||
class YonghuChenghao(QModel):
|
||||
yonghu = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='chenghao_list', verbose_name='用户', db_index=True)
|
||||
chenghao = models.ForeignKey(Chenghao, on_delete=models.CASCADE, verbose_name='称号')
|
||||
huode_time = models.DateTimeField(auto_now_add=True, verbose_name='获得时间')
|
||||
|
||||
class Meta:
|
||||
db_table = 'yonghu_chenghao'
|
||||
verbose_name = '用户称号关联'
|
||||
verbose_name_plural = verbose_name
|
||||
unique_together = ('yonghu', 'chenghao')
|
||||
# 修复:只索引本表字段
|
||||
indexes = [models.Index(fields=['yonghu', 'chenghao'])]
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
class DingdanBiaoqian(QModel):
|
||||
"""订单需求标签关联表"""
|
||||
dingdan = models.ForeignKey(
|
||||
Order,
|
||||
to_field='OrderID', # 关联到字符串字段 OrderID
|
||||
on_delete=models.CASCADE,
|
||||
verbose_name='订单',
|
||||
db_index=True
|
||||
)
|
||||
chenghao = models.ForeignKey('rank.Chenghao', on_delete=models.CASCADE, verbose_name='标签')
|
||||
CreateTime = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
|
||||
|
||||
class Meta:
|
||||
db_table = 'dingdan_biaoqian'
|
||||
verbose_name = '订单需求标签'
|
||||
verbose_name_plural = verbose_name
|
||||
unique_together = ('dingdan', 'chenghao')
|
||||
indexes = [models.Index(fields=['dingdan'])]
|
||||
|
||||
|
||||
|
||||
|
||||
class ShenheJilu(QModel):
|
||||
"""审核记录表"""
|
||||
shenqingren_id = models.CharField(max_length=7, verbose_name='申请人用户ID')
|
||||
shenheguan_id = models.CharField(max_length=7, null = True,verbose_name='审核官用户ID')
|
||||
zhuangtai = models.IntegerField(choices=[(0, '审核中'), (1, '通过'), (2, '未通过'), (3, '待审核')], default=0, verbose_name='审核状态')
|
||||
bankuai = models.ForeignKey(Bankuai, on_delete=models.PROTECT, to_field='bankuai_id', null=True, blank=True, verbose_name='审核板块')
|
||||
chenghao = models.ForeignKey(Chenghao, on_delete=models.PROTECT, null=True, blank=True, verbose_name='审核标签')
|
||||
cishu = models.IntegerField(default=1, verbose_name='第几次审核')
|
||||
jiaofei_jine = models.DecimalField(max_digits=10, decimal_places=2, default=0.00, verbose_name='缴纳费用')
|
||||
CreateTime = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
|
||||
UpdateTime = models.DateTimeField(auto_now=True, verbose_name='更新时间')
|
||||
jilu_id = models.CharField(max_length=32, unique=True, db_index=True, verbose_name='记录ID') # 新增
|
||||
guize_neirong = models.TextField(null=True, blank=True, verbose_name='规则内容')
|
||||
shenheguan_youxi_id = models.CharField(max_length=50, null=True, blank=True, verbose_name='审核官游戏ID')
|
||||
dashou_youxi_id = models.CharField(max_length=50, null=True, blank=True, verbose_name='打手游戏ID')
|
||||
dashou_beizhu = models.TextField(null=True, blank=True, verbose_name='打手备注')
|
||||
|
||||
class Meta:
|
||||
db_table = 'shenhe_jilu'
|
||||
verbose_name = '审核记录'
|
||||
verbose_name_plural = verbose_name
|
||||
indexes = [
|
||||
models.Index(fields=['shenqingren_id', 'zhuangtai']),
|
||||
models.Index(fields=['shenheguan_id']),
|
||||
]
|
||||
|
||||
|
||||
|
||||
class KaohePayTemp(QModel):
|
||||
"""考核支付临时上下文(仅用于支付成功后回调取参,不删除数据)"""
|
||||
dingdan_id = models.CharField(max_length=50, unique=True, db_index=True, verbose_name='订单ID')
|
||||
yonghuid = models.CharField(max_length=7, db_index=True, verbose_name='用户ID')
|
||||
tag_id = models.IntegerField(verbose_name='标签ID')
|
||||
game_nick = models.CharField(max_length=100, verbose_name='游戏昵称')
|
||||
remark = models.TextField(blank=True, verbose_name='备注')
|
||||
reapply = models.BooleanField(default=False, verbose_name='是否再次申请')
|
||||
jilu_id = models.CharField(max_length=32, null=True, blank=True, verbose_name='原记录ID(再次申请时)')
|
||||
shenheguan_id = models.CharField(max_length=7, blank=True, verbose_name='指定考核官ID')
|
||||
cishu = models.IntegerField(verbose_name='本次考核次数(预计算)')
|
||||
fee = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='本次费用(分账单位)')
|
||||
CreateTime = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
|
||||
|
||||
class Meta:
|
||||
db_table = 'kaohe_pay_temp'
|
||||
verbose_name = '考核支付临时表'
|
||||
verbose_name_plural = verbose_name
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
class KaoheCishuFeiyong(QModel):
|
||||
"""各标签各考核次数所需缴纳金额"""
|
||||
chenghao = models.ForeignKey(Chenghao, on_delete=models.CASCADE, verbose_name='标签')
|
||||
cishu = models.IntegerField(verbose_name='第几次考核')
|
||||
feiyong = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='需缴纳金额')
|
||||
|
||||
class Meta:
|
||||
db_table = 'kaohe_cishu_feiyong'
|
||||
verbose_name = '考核次数费用'
|
||||
verbose_name_plural = verbose_name
|
||||
unique_together = ('chenghao', 'cishu')
|
||||
indexes = [models.Index(fields=['chenghao', 'cishu'])]
|
||||
|
||||
|
||||
class KaoheJujueJilu(QModel):
|
||||
"""考核拒绝原因记录"""
|
||||
jilu = models.ForeignKey(ShenheJilu, on_delete=models.CASCADE, to_field='jilu_id', verbose_name='审核记录')
|
||||
cishu = models.IntegerField(verbose_name='对应次数')
|
||||
shenheguan_id = models.CharField(max_length=7, verbose_name='考核官用户ID')
|
||||
yuanyin = models.TextField(verbose_name='拒绝原因')
|
||||
CreateTime = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
|
||||
|
||||
class Meta:
|
||||
db_table = 'kaohe_jujue_jilu'
|
||||
verbose_name = '拒绝原因记录'
|
||||
verbose_name_plural = verbose_name
|
||||
indexes = [models.Index(fields=['jilu_id', 'cishu'])]
|
||||
|
||||
|
||||
class KaoheJiluFeiyong(QModel):
|
||||
"""每次考核记录实际缴纳的费用明细"""
|
||||
jilu = models.ForeignKey(ShenheJilu, on_delete=models.CASCADE, to_field='jilu_id', verbose_name='考核记录')
|
||||
cishu = models.IntegerField(verbose_name='第几次考核')
|
||||
jine = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='缴纳金额')
|
||||
|
||||
class Meta:
|
||||
db_table = 'kaohe_jilu_feiyong'
|
||||
verbose_name = '考核记录费用'
|
||||
verbose_name_plural = verbose_name
|
||||
unique_together = ('jilu', 'cishu')
|
||||
|
||||
|
||||
|
||||
class KaoheguanBankuai(QModel):
|
||||
"""考核官与板块多对多关联表"""
|
||||
kaoheguan_id = models.CharField(max_length=7, db_index=True, verbose_name='考核官用户ID')
|
||||
bankuai = models.ForeignKey(Bankuai, on_delete=models.CASCADE, to_field='bankuai_id', verbose_name='所属板块')
|
||||
|
||||
class Meta:
|
||||
db_table = 'kaoheguan_bankuai'
|
||||
verbose_name = '考核官板块关联'
|
||||
verbose_name_plural = verbose_name
|
||||
unique_together = ('kaoheguan_id', 'bankuai')
|
||||
indexes = [models.Index(fields=['kaoheguan_id'])]
|
||||
@@ -244,7 +244,7 @@ class ShenheDatingDataView(APIView):
|
||||
|
||||
total = query.count()
|
||||
offset = (page - 1) * page_size
|
||||
jilu_list = query.select_related('bankuai', 'chenghao').order_by('-create_time')[
|
||||
jilu_list = query.select_related('bankuai', 'chenghao').order_by('-CreateTime')[
|
||||
offset:offset + page_size]
|
||||
|
||||
records = []
|
||||
@@ -274,7 +274,7 @@ class ShenheDatingDataView(APIView):
|
||||
'chenghao_texiao_json': texiao_json,
|
||||
'guize_neirong': jl.guize_neirong or '',
|
||||
'kaohe_feiyong': kaohe_feiyong, # 新增
|
||||
'create_time': jl.create_time.strftime('%Y-%m-%d %H:%M:%S') if jl.create_time else '',
|
||||
'CreateTime': jl.CreateTime.strftime('%Y-%m-%d %H:%M:%S') if jl.CreateTime else '',
|
||||
})
|
||||
|
||||
has_more = (page * page_size) < total
|
||||
@@ -416,7 +416,7 @@ class ShenheXiangqingView(APIView):
|
||||
last_fail = KaoheJujueJilu.objects.filter(
|
||||
jilu=jl,
|
||||
cishu=jl.cishu - 1
|
||||
).order_by('-create_time').first()
|
||||
).order_by('-CreateTime').first()
|
||||
if last_fail:
|
||||
last_fail_reason = last_fail.yuanyin
|
||||
|
||||
@@ -435,7 +435,7 @@ class ShenheXiangqingView(APIView):
|
||||
'daishou_fei': daishou_fei, # 新增:待收考核费
|
||||
'last_fail_reason': last_fail_reason,
|
||||
'is_jinpai': is_jinpai,
|
||||
'create_time': jl.create_time.strftime('%Y-%m-%d %H:%M:%S') if jl.create_time else '',
|
||||
'CreateTime': jl.CreateTime.strftime('%Y-%m-%d %H:%M:%S') if jl.CreateTime else '',
|
||||
})
|
||||
|
||||
has_more = (page * page_size) < total
|
||||
@@ -685,7 +685,7 @@ class KaoheJiluView(APIView):
|
||||
)
|
||||
|
||||
total = query.count()
|
||||
records = query.order_by('-create_time')[(page-1)*page_size : page*page_size]
|
||||
records = query.order_by('-CreateTime')[(page-1)*page_size : page*page_size]
|
||||
|
||||
data = []
|
||||
for jl in records:
|
||||
@@ -695,7 +695,7 @@ class KaoheJiluView(APIView):
|
||||
)['total'] or 0.00
|
||||
|
||||
# 上次拒绝原因(最近一条)
|
||||
last_fail = KaoheJujueJilu.objects.filter(jilu=jl).order_by('-create_time').first()
|
||||
last_fail = KaoheJujueJilu.objects.filter(jilu=jl).order_by('-CreateTime').first()
|
||||
fail_reason = last_fail.yuanyin if last_fail else ''
|
||||
|
||||
# 考核官头像
|
||||
@@ -716,7 +716,7 @@ class KaoheJiluView(APIView):
|
||||
'cishu': jl.cishu,
|
||||
'total_fee': float(total_fee),
|
||||
'last_fail_reason': fail_reason,
|
||||
'create_time': jl.create_time.strftime('%Y-%m-%d %H:%M:%S'),
|
||||
'CreateTime': jl.CreateTime.strftime('%Y-%m-%d %H:%M:%S'),
|
||||
# 为再次申请预留标签对象数据(前端可能用到)
|
||||
'tag_obj': {
|
||||
'id': jl.chenghao_id,
|
||||
@@ -849,7 +849,7 @@ class KaoheJiluListView(APIView):
|
||||
# 4. 计数与分页
|
||||
total = base_query.count()
|
||||
offset = (page - 1) * page_size
|
||||
jilu_list = base_query.order_by('-create_time')[offset:offset + page_size]
|
||||
jilu_list = base_query.order_by('-CreateTime')[offset:offset + page_size]
|
||||
|
||||
# 5. 预取关联数据,减少查询次数
|
||||
jilu_list = jilu_list.select_related('bankuai', 'chenghao')
|
||||
@@ -875,7 +875,7 @@ class KaoheJiluListView(APIView):
|
||||
reject_dict[rej.jilu_id].append({
|
||||
'cishu': rej.cishu,
|
||||
'yuanyin': rej.yuanyin,
|
||||
'create_time': rej.create_time.strftime('%Y-%m-%d %H:%M:%S') if rej.create_time else ''
|
||||
'CreateTime': rej.CreateTime.strftime('%Y-%m-%d %H:%M:%S') if rej.CreateTime else ''
|
||||
})
|
||||
|
||||
# 6. 批量获取申请人信息(昵称和头像)
|
||||
@@ -927,8 +927,8 @@ class KaoheJiluListView(APIView):
|
||||
'dashou_beizhu': jl.dashou_beizhu or '',
|
||||
'shenheguan_youxi_id': jl.shenheguan_youxi_id or '',
|
||||
'guize_neirong': jl.guize_neirong or '',
|
||||
'create_time': jl.create_time.strftime('%Y-%m-%d %H:%M:%S') if jl.create_time else '',
|
||||
'update_time': jl.update_time.strftime('%Y-%m-%d %H:%M:%S') if jl.update_time else '',
|
||||
'CreateTime': jl.CreateTime.strftime('%Y-%m-%d %H:%M:%S') if jl.CreateTime else '',
|
||||
'UpdateTime': jl.UpdateTime.strftime('%Y-%m-%d %H:%M:%S') if jl.UpdateTime else '',
|
||||
'fee_list': fee_items,
|
||||
'reject_list': reject_dict.get(jl.jilu_id, []),
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user