修复了一些

This commit is contained in:
2026-06-18 18:02:45 +08:00
parent e67bc17fa2
commit 53049d1588
20 changed files with 3671 additions and 2541 deletions

View File

@@ -0,0 +1,392 @@
# Generated by Django 4.2.27 on 2026-06-18 17:46
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders', '0001_initial'),
]
operations = [
migrations.CreateModel(
name='ChatSession',
fields=[
('id', models.BigAutoField(primary_key=True, serialize=False, verbose_name='主键ID')),
('User1ID', models.CharField(db_column='user1_id', db_index=True, max_length=30, verbose_name='用户1标识')),
('User2ID', models.CharField(db_column='user2_id', db_index=True, max_length=30, verbose_name='用户2标识')),
('OrderID', models.CharField(db_column='dingdan_id', max_length=32, unique=True, verbose_name='订单ID')),
('Status', models.IntegerField(choices=[(1, '开启中'), (0, '已关闭')], db_column='zhuangtai', db_index=True, default=1, verbose_name='聊天状态')),
('CreateTime', models.DateTimeField(auto_now_add=True, db_column='create_time', verbose_name='创建时间')),
('UpdateTime', models.DateTimeField(auto_now=True, db_column='update_time', verbose_name='更新时间')),
],
options={
'db_table': 'liaotian',
},
),
migrations.CreateModel(
name='CommissionRate',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('Rate', models.DecimalField(db_column='lilu', decimal_places=4, max_digits=5, null=True, verbose_name='平台分成利率')),
('Platform', models.CharField(db_column='fadanpingtai', max_length=10, null=True, verbose_name='订单所属平台')),
('CreateTime', models.DateTimeField(auto_now_add=True, db_column='create_time', verbose_name='创建时间')),
('UpdateTime', models.DateTimeField(auto_now=True, db_column='update_time', verbose_name='更新时间')),
],
options={
'db_table': 'lilubiao',
},
),
migrations.CreateModel(
name='EscortOrder',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('OrderID', models.CharField(db_column='dingdan_id', db_index=True, max_length=32, unique=True, verbose_name='订单ID')),
('MainPlayerID', models.CharField(db_column='zhudashou_id', db_index=True, max_length=32, verbose_name='主打手ID')),
('Escort1ID', models.CharField(blank=True, db_column='peihu1_id', db_index=True, max_length=32, null=True, verbose_name='陪护1打手ID')),
('Escort2ID', models.CharField(blank=True, db_column='peihu2_id', db_index=True, max_length=32, null=True, verbose_name='陪护2打手ID')),
('Status', models.IntegerField(db_column='zhuangtai', default=1, verbose_name='陪护订单状态')),
('EscortCount', models.IntegerField(db_column='peihu_xuqiu_shuliang', default=1, verbose_name='陪护需求数量')),
('CommissionReq', models.DecimalField(blank=True, db_column='yongjin_yaoqiu', decimal_places=2, max_digits=10, null=True, verbose_name='抢单佣金要求')),
('Escort1LevelReq', models.PositiveIntegerField(blank=True, db_column='peihu1_dengji_xuqiu', null=True, verbose_name='陪护1等级需求(称号ID)')),
('Escort2LevelReq', models.PositiveIntegerField(blank=True, db_column='peihu2_dengji_xuqiu', null=True, verbose_name='陪护2等级需求(称号ID)')),
('Escort1BombLiability', models.CharField(blank=True, db_column='peihu1_zhadan_danze', max_length=10, null=True, verbose_name='陪护1炸单担责比例')),
('Escort2BombLiability', models.CharField(blank=True, db_column='peihu2_zhadan_danze', max_length=10, null=True, verbose_name='陪护2炸单担责比例')),
('Escort1BonusRate', models.CharField(blank=True, db_column='peihu1_fenhong', max_length=10, null=True, verbose_name='陪护1分红比例')),
('Escort2BonusRate', models.CharField(blank=True, db_column='peihu2_fenhong', max_length=10, null=True, verbose_name='陪护2分红比例')),
('AssignedEscort1', models.CharField(blank=True, db_column='zhiding_peihu1', max_length=32, null=True, verbose_name='指定陪护1 ID')),
('AssignedEscort2', models.CharField(blank=True, db_column='zhiding_peihu2', max_length=32, null=True, verbose_name='指定陪护2 ID')),
('CreateTime', models.DateTimeField(auto_now_add=True, db_column='create_time', verbose_name='创建时间')),
('UpdateTime', models.DateTimeField(auto_now=True, db_column='update_time', verbose_name='更新时间')),
],
options={
'verbose_name': '陪护订单',
'verbose_name_plural': '陪护订单',
'db_table': 'dingdan_peihu',
},
),
migrations.CreateModel(
name='MerchantOrderExt',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('MerchantID', models.CharField(blank=True, db_column='shangjia_id', db_index=True, max_length=32, null=True, verbose_name='商家ID')),
('MerchantReview', models.TextField(blank=True, db_column='shangjia_pingjia', null=True, verbose_name='商家评价')),
('PenaltyReason', models.TextField(blank=True, db_column='cfliyou', null=True, verbose_name='商家处罚理由')),
('PenaltyApplyStatus', models.IntegerField(blank=True, db_column='sqzhuangtai', default=0, null=True, verbose_name='处罚申请状态:0待处理,1成功,2驳回')),
('RejectReason', models.TextField(blank=True, db_column='bhliyou', null=True, verbose_name='驳回商家处罚理由')),
('MerchantNickname', models.CharField(db_column='sjnicheng', max_length=50, null=True, verbose_name='商家昵称')),
('PrevOrderID', models.CharField(blank=True, db_column='shangyige_dingdan_id', max_length=32, null=True, verbose_name='上一个订单ID')),
],
options={
'verbose_name': '商家订单扩展',
'verbose_name_plural': '商家订单扩展',
'db_table': 'dingdan_shangjia',
},
),
migrations.CreateModel(
name='Order',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('OrderID', models.CharField(db_column='dingdan_id', db_index=True, max_length=32, unique=True, verbose_name='订单ID')),
('Status', models.IntegerField(blank=True, db_column='zhuangtai', db_index=True, default=1, null=True, verbose_name='订单状态')),
('Platform', models.IntegerField(blank=True, db_column='fadan_pingtai', null=True, verbose_name='发单平台')),
('Amount', models.DecimalField(blank=True, db_column='jine', decimal_places=2, max_digits=10, null=True, verbose_name='订单金额')),
('PlayerCommission', models.DecimalField(blank=True, db_column='dashou_fencheng', decimal_places=2, max_digits=10, null=True, verbose_name='打手分成')),
('ManagerCommission', models.DecimalField(blank=True, db_column='guanshi_fencheng', decimal_places=2, default=0, max_digits=10, null=True, verbose_name='管事分成')),
('PlayerID', models.CharField(blank=True, db_column='jiedan_dashou_id', db_index=True, max_length=32, null=True, verbose_name='接单打手ID')),
('PlayerRemark', models.TextField(blank=True, db_column='dashou_liuyan', null=True, verbose_name='打手留言')),
('AssignedID', models.CharField(blank=True, db_column='zhiding_id', max_length=32, null=True, verbose_name='指定ID')),
('ProductID', models.IntegerField(blank=True, db_column='shangpin_id', null=True, verbose_name='商品ID')),
('ProductTypeID', models.PositiveIntegerField(blank=True, db_column='leixing_id', null=True, verbose_name='商品类型ID')),
('ImageURL', models.CharField(blank=True, db_column='tupian', max_length=500, null=True, verbose_name='商品图片URL')),
('GrabRequirement', models.PositiveIntegerField(blank=True, db_column='yaoqiuleixing', null=True, verbose_name='抢单要求类型')),
('MembershipID', models.CharField(blank=True, db_column='huiyuan_id', max_length=6, null=True, verbose_name='会员ID')),
('CommissionReq', models.DecimalField(blank=True, db_column='yongjin', decimal_places=2, max_digits=10, null=True, verbose_name='佣金要求')),
('Description', models.TextField(blank=True, db_column='jieshao', null=True, verbose_name='订单介绍')),
('Remark', models.TextField(blank=True, db_column='beizhu', null=True, verbose_name='订单备注')),
('Nickname', models.CharField(blank=True, db_column='nicheng', max_length=50, null=True, verbose_name='游戏昵称')),
('User1ID', models.CharField(db_column='user1_id', db_index=True, max_length=30, null=True, verbose_name='用户1标识')),
('User2ID', models.CharField(db_column='user2_id', db_index=True, max_length=30, null=True, verbose_name='用户2打手标识')),
('AutoTaskID', models.CharField(blank=True, db_column='auto_task_id', default='', max_length=255, verbose_name='延时任务ID')),
('AutoExpireAt', models.DateTimeField(blank=True, db_column='auto_expire_at', null=True, verbose_name='计划过期时间')),
('PendingDispatch', models.BooleanField(db_column='pending_dispatch', db_index=True, default=False, verbose_name='待调度标记')),
('SettlementTime', models.DateTimeField(blank=True, db_column='status_8_time', null=True, verbose_name='状态变为8的时间')),
('CreateTime', models.DateTimeField(auto_now_add=True, db_column='create_time', verbose_name='创建时间')),
('UpdateTime', models.DateTimeField(auto_now=True, db_column='update_time', verbose_name='更新时间')),
('AssignedCS', models.CharField(db_column='clkf', db_index=True, max_length=20, null=True, verbose_name='处理客服')),
('RefundReason', models.CharField(blank=True, db_column='tkly', max_length=500, null=True, verbose_name='退款/拒绝理由')),
('WechatTransactionID', models.CharField(blank=True, db_column='wechat_transaction_id', db_index=True, max_length=64, null=True, verbose_name='微信支付订单号')),
],
options={
'verbose_name': '订单',
'verbose_name_plural': '订单',
'db_table': 'dingdan',
},
),
migrations.CreateModel(
name='OrderPlayerHistory',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('OrderID', models.CharField(db_column='dingdan_id', db_index=True, max_length=32, verbose_name='订单ID')),
('PlayerID', models.CharField(db_column='dashou_id', db_index=True, max_length=7, verbose_name='打手ID')),
('Times', models.PositiveSmallIntegerField(verbose_name='第几次接单从1开始')),
('Operator', models.CharField(db_column='operator', max_length=11, verbose_name='操作客服ID')),
('CreateTime', models.DateTimeField(auto_now_add=True, db_column='create_time', verbose_name='创建时间')),
],
options={
'verbose_name': '订单打手变更历史',
'verbose_name_plural': '订单打手变更历史',
'db_table': 'order_dashou_history',
},
),
migrations.CreateModel(
name='Penalty',
fields=[
('id', models.AutoField(primary_key=True, serialize=False, verbose_name='自增主键')),
('PenalizedUserID', models.CharField(db_column='beichufa_id', db_index=True, max_length=20, verbose_name='被处罚用户ID')),
('ApplicantID', models.CharField(blank=True, db_column='shenqing_chufa', max_length=20, null=True, verbose_name='申请处罚者ID')),
('Identity', models.IntegerField(choices=[(1, '打手'), (2, '管事'), (3, '商家'), (4, '组长')], db_column='shenfen', default=1, verbose_name='被处罚者身份')),
('Reason', models.TextField(blank=True, db_column='chufaliyou', null=True, verbose_name='处罚理由')),
('FineAmount', models.DecimalField(db_column='fakuanjine', decimal_places=2, default=0.0, max_digits=10, verbose_name='罚款金额')),
('RelatedOrderID', models.CharField(blank=True, db_column='guanliandingdan_id', db_index=True, max_length=32, null=True, verbose_name='关联订单ID')),
('Status', models.IntegerField(choices=[(1, '待缴纳'), (2, '已缴纳'), (3, '申诉中'), (4, '已驳回')], db_column='zhuangtai', db_index=True, default=1, verbose_name='罚单状态')),
('AffectsGrabbing', models.IntegerField(choices=[(1, '影响抢单'), (0, '不影响抢单')], db_column='yingxiang_qiangdan', db_index=True, default=1, verbose_name='是否影响抢单')),
('AppealReason', models.TextField(blank=True, db_column='shensuliyou', null=True, verbose_name='申诉理由')),
('ApproveReason', models.TextField(blank=True, db_column='tongyi_chufaliyou', null=True, verbose_name='同意处罚理由')),
('RejectReason', models.TextField(blank=True, db_column='bohuiliyou', null=True, verbose_name='驳回理由')),
('CreateTime', models.DateTimeField(auto_now_add=True, db_column='create_time', verbose_name='创建时间')),
('UpdateTime', models.DateTimeField(auto_now=True, db_column='update_time', verbose_name='更新时间')),
('ApplicantIdentity', models.IntegerField(choices=[(1, '客服'), (2, '售后'), (3, '管理员'), (4, '店铺'), (5, '商家')], db_column='shenqingren_shenfen', default=1, verbose_name='申请处罚人身份')),
('ProcessorIdentity', models.IntegerField(choices=[(1, '客服'), (2, '售后'), (3, '管理员')], db_column='chulizhe_shenfen', default=2, verbose_name='处理者身份')),
('ProcessorID', models.CharField(blank=True, db_column='chulizhe', max_length=20, null=True, verbose_name='处理者')),
('ApplicantBonusAmount', models.DecimalField(db_column='shenqingren_fenhong_jine', decimal_places=2, default=0.0, max_digits=12, verbose_name='申请人分红金额')),
],
options={
'verbose_name': '罚单',
'verbose_name_plural': '罚单',
'db_table': 'fadan',
},
),
migrations.CreateModel(
name='PenaltyAppealImage',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('PenalizedUserID', models.CharField(db_column='beichufa_id', db_index=True, max_length=7, verbose_name='被处罚用户ID')),
('ImageURL', models.CharField(db_column='tupian_url', max_length=500, verbose_name='图片相对URL')),
('CreateTime', models.DateTimeField(auto_now_add=True, db_column='create_time', verbose_name='创建时间')),
('Purpose', models.IntegerField(choices=[(1, '处罚证据图片'), (2, '申诉图片')], db_column='yongtu', default=2, verbose_name='图片用途')),
],
options={
'verbose_name': '罚款申诉图片',
'verbose_name_plural': '罚款申诉图片',
'db_table': 'fadan_shensu_tupian',
},
),
migrations.CreateModel(
name='PenaltyBonus',
fields=[
('id', models.AutoField(primary_key=True, serialize=False, verbose_name='自增主键')),
('BeneficiaryID', models.CharField(db_column='fenhongzhe_id', db_index=True, max_length=20, verbose_name='分红者ID')),
('TotalAmount', models.DecimalField(db_column='zonge', decimal_places=2, default=0.0, max_digits=12, verbose_name='分红总额')),
('WithdrawableAmount', models.DecimalField(db_column='ketixian_fenhong', decimal_places=2, default=0.0, max_digits=12, verbose_name='可提现分红')),
('Identity', models.IntegerField(choices=[(1, '商家'), (2, '客服'), (3, '平台管理者'), (4, '店铺'), (5, '售后')], db_column='shenfen', default=1, verbose_name='分红者身份')),
('BonusCount', models.IntegerField(db_column='fenhong_cishu', default=0, verbose_name='分红次数')),
('IsIndividualRate', models.BooleanField(db_column='is_individual_rate', default=False, verbose_name='是否单独开启分红利率')),
('IndividualRate', models.DecimalField(db_column='yingde_lilv', decimal_places=4, default=0.0, max_digits=5, verbose_name='分红应得利率')),
('CreateTime', models.DateTimeField(auto_now_add=True, db_column='create_time', verbose_name='创建时间')),
('UpdateTime', models.DateTimeField(auto_now=True, db_column='update_time', verbose_name='更新时间')),
],
options={
'verbose_name': '罚款分红',
'verbose_name_plural': '罚款分红',
'db_table': 'fadan_fenhong',
},
),
migrations.CreateModel(
name='PenaltyBonusRate',
fields=[
('Identity', models.IntegerField(choices=[(1, '客服'), (2, '售后'), (3, '管理员'), (4, '店铺'), (5, '商家')], db_column='shenfen', primary_key=True, serialize=False, verbose_name='申请处罚人身份')),
('Rate', models.DecimalField(db_column='lilv', decimal_places=4, default=0.0, max_digits=5, verbose_name='分红费率')),
('CreateTime', models.DateTimeField(auto_now_add=True, db_column='create_time', verbose_name='创建时间')),
('UpdateTime', models.DateTimeField(auto_now=True, db_column='update_time', verbose_name='更新时间')),
],
options={
'verbose_name': '罚款分红费率配置',
'verbose_name_plural': '罚款分红费率配置',
'db_table': 'fadan_fenhong_lilv',
},
),
migrations.CreateModel(
name='PenaltyEvidenceImage',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('OrderID', models.CharField(db_column='dingdan_id', db_index=True, max_length=32, null=True, verbose_name='订单ID')),
('UserID', models.CharField(blank=True, db_column='yonghuid', db_index=True, max_length=32, null=True, verbose_name='用户ID')),
('ImageURL', models.CharField(blank=True, db_column='tupian', max_length=500, null=True, verbose_name='证据图片URL')),
('CreateTime', models.DateTimeField(auto_now_add=True, db_column='create_time', verbose_name='创建时间')),
('UpdateTime', models.DateTimeField(auto_now=True, db_column='update_time', verbose_name='更新时间')),
],
options={
'db_table': 'chufatupian',
},
),
migrations.CreateModel(
name='PenaltyRecord',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('PlayerID', models.CharField(db_column='dashouid', db_index=True, max_length=7, null=True, verbose_name='被罚打手ID')),
('ApplicantID', models.CharField(db_column='qingqiuid', db_index=True, max_length=11, null=True, verbose_name='请求处罚ID')),
('ProcessorID', models.CharField(db_column='chuliid', db_index=True, max_length=11, null=True, verbose_name='处理处罚ID')),
('PenaltyReason', models.TextField(blank=True, db_column='cfliyou', null=True, verbose_name='处罚理由')),
('AppealReason', models.TextField(blank=True, db_column='ssliyou', null=True, verbose_name='打手申诉理由')),
('ApplyStatus', models.IntegerField(blank=True, db_column='sqzhuangtai', default=0, null=True, verbose_name='处罚申请状态:0待处理,1成功,2驳回')),
('RejectReason', models.TextField(blank=True, db_column='bhliyou', null=True, verbose_name='驳回处罚理由')),
('DeductedPoints', models.IntegerField(db_column='jifen', default=0, verbose_name='扣除打手积分')),
('OrderID', models.CharField(db_column='dingdan_id', db_index=True, max_length=32, null=True, verbose_name='订单ID')),
('CreateTime', models.DateTimeField(auto_now_add=True, db_column='create_time', verbose_name='创建时间')),
('UpdateTime', models.DateTimeField(auto_now=True, db_column='update_time', verbose_name='更新时间')),
],
options={
'db_table': 'chufajilu',
},
),
migrations.CreateModel(
name='PlatformCashFlow',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('TotalIncome', models.DecimalField(blank=True, db_column='zonge', decimal_places=2, max_digits=10, null=True, verbose_name='收取总金额')),
('TotalPayout', models.DecimalField(blank=True, db_column='zhichuzonge', decimal_places=2, max_digits=10, null=True, verbose_name='支出总金额')),
('TotalProfit', models.DecimalField(blank=True, db_column='zongshouyi', decimal_places=2, max_digits=10, null=True, verbose_name='总收益')),
('DailyIncome', models.DecimalField(blank=True, db_column='rizonge', decimal_places=2, max_digits=10, null=True, verbose_name='日收取')),
('DailyPayout', models.DecimalField(blank=True, db_column='rizhichu', decimal_places=2, max_digits=10, null=True, verbose_name='日支出')),
('DailyProfit', models.DecimalField(blank=True, db_column='rishouyi', decimal_places=2, max_digits=10, null=True, verbose_name='日收益')),
('TotalIncomeCount', models.IntegerField(db_column='zongshoucishu', default=0, verbose_name='总收取次数')),
('DailyIncomeCount', models.IntegerField(db_column='rishoucishu', default=0, verbose_name='日收取次数')),
('TotalPayoutCount', models.IntegerField(db_column='zongzhichucishu', default=0, verbose_name='总支出次数')),
('DailyPayoutCount', models.IntegerField(db_column='rizhichucishu', default=0, verbose_name='日支出次数')),
],
options={
'db_table': 'ptliushui',
},
),
migrations.CreateModel(
name='PlatformOrderExt',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('BossID', models.CharField(blank=True, db_column='laoban_id', db_index=True, max_length=32, null=True, verbose_name='老板ID')),
('BossReview', models.TextField(blank=True, db_column='laoban_pingjia', null=True, verbose_name='老板评价')),
('RejectSettlementFlag', models.IntegerField(db_column='jjjs_biaoshi', default=0, verbose_name='拒绝结算标记(1表示拒绝结算)')),
('PlatformIncome', models.DecimalField(blank=True, db_column='pingtai_shouyi', decimal_places=2, default=0.0, max_digits=10, null=True, verbose_name='平台收益')),
('ShopIncome', models.DecimalField(blank=True, db_column='dianpu_shouyi', decimal_places=2, default=0.0, max_digits=10, null=True, verbose_name='店铺收益')),
('ShopID', models.PositiveIntegerField(blank=True, db_column='dianpu_id', db_index=True, null=True, verbose_name='所属店铺ID')),
('ParentShopID', models.PositiveIntegerField(blank=True, db_column='shangji_dianpu_id', db_index=True, null=True, verbose_name='该订单的上级店铺ID')),
('ParentBonus', models.DecimalField(blank=True, db_column='shangji_fenhong', decimal_places=2, default=0.0, max_digits=10, null=True, verbose_name='上级分红金额')),
],
options={
'verbose_name': '平台订单扩展',
'verbose_name_plural': '平台订单扩展',
'db_table': 'dingdan_pingtai',
},
),
migrations.CreateModel(
name='PlayerDeliveryImage',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('OrderID', models.CharField(db_column='dingdan_id', db_index=True, max_length=32, null=True, verbose_name='订单ID')),
('PlayerID', models.CharField(blank=True, db_column='dashou', db_index=True, max_length=32, null=True, verbose_name='接单打手ID')),
('ImageURL', models.CharField(blank=True, db_column='tupian', max_length=500, null=True, verbose_name='打手提交图片URL')),
('CreateTime', models.DateTimeField(auto_now_add=True, db_column='create_time', verbose_name='创建时间')),
('UpdateTime', models.DateTimeField(auto_now=True, db_column='update_time', verbose_name='更新时间')),
],
options={
'db_table': 'dashoutupian',
},
),
migrations.CreateModel(
name='PlayerRating',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('PlayerID', models.CharField(blank=True, db_column='dashou', db_index=True, max_length=32, null=True, verbose_name='接单打手ID')),
('TotalScore', models.PositiveIntegerField(db_column='zongfen', default=0, verbose_name='总分')),
('RatingCount', models.PositiveIntegerField(db_column='cishu', default=0, verbose_name='评分次数')),
('CreateTime', models.DateTimeField(auto_now_add=True, db_column='create_time', verbose_name='创建时间')),
('UpdateTime', models.DateTimeField(auto_now=True, db_column='update_time', verbose_name='更新时间')),
],
options={
'verbose_name': '评分表',
'db_table': 'pingfenbiao',
},
),
migrations.CreateModel(
name='RefundRecord',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('OrderID', models.CharField(db_column='dingdan_id', max_length=32, unique=True, verbose_name='订单ID')),
('PlayerID', models.CharField(db_column='dashouid', max_length=7, null=True, verbose_name='接单打手ID')),
('ApplicantID', models.CharField(db_column='qingqiuid', max_length=7, null=True, verbose_name='请求用户ID')),
('ProcessorID', models.CharField(db_column='chuliid', db_index=True, max_length=11, null=True, verbose_name='处理人ID')),
('Reason', models.TextField(blank=True, db_column='liyou', null=True, verbose_name='理由')),
('ApplyStatus', models.IntegerField(blank=True, db_column='sqzhuangtai', db_index=True, default=0, null=True, verbose_name='申请状态:0待处理,1成功,2驳回')),
('RejectReason', models.TextField(blank=True, db_column='bhliyou', null=True, verbose_name='驳回理由')),
('Amount', models.DecimalField(blank=True, db_column='jine', decimal_places=2, max_digits=10, null=True, verbose_name='订单金额')),
('PlayerCommission', models.DecimalField(blank=True, db_column='dashou_fencheng', decimal_places=2, max_digits=10, null=True, verbose_name='打手分成')),
('Description', models.TextField(blank=True, db_column='jieshao', null=True, verbose_name='订单介绍')),
('Remark', models.TextField(blank=True, db_column='beizhu', null=True, verbose_name='订单备注')),
('Nickname', models.CharField(blank=True, db_column='nicheng', max_length=50, null=True, verbose_name='游戏昵称')),
('CreateTime', models.DateTimeField(auto_now_add=True, db_column='create_time', verbose_name='创建时间')),
('UpdateTime', models.DateTimeField(auto_now=True, db_column='update_time', verbose_name='更新时间')),
],
options={
'db_table': 'tuikuanjilu',
},
),
migrations.DeleteModel(
name='Chufajilu',
),
migrations.DeleteModel(
name='Chufatupian',
),
migrations.DeleteModel(
name='Dashoutupian',
),
migrations.DeleteModel(
name='DingdanPeihu',
),
migrations.RemoveField(
model_name='dingdanpingtai',
name='dingdan',
),
migrations.RemoveField(
model_name='dingdanshangjia',
name='dingdan',
),
migrations.DeleteModel(
name='FadanFenhong',
),
migrations.DeleteModel(
name='FadanFenhongLilv',
),
migrations.RemoveField(
model_name='fadanshensutupian',
name='fadan',
),
migrations.DeleteModel(
name='Liaotian',
),
migrations.DeleteModel(
name='Lilubiao',
),
migrations.DeleteModel(
name='OrderDashouHistory',
),
migrations.DeleteModel(
name='Pingfen',
),
migrations.DeleteModel(
name='Ptliushui',
),
migrations.DeleteModel(
name='Tuikuanjilu',
),
]

View File

@@ -0,0 +1,177 @@
# Generated by Django 4.2.27 on 2026-06-18 17:46
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('orders', '0002_chatsession_commissionrate_escortorder_and_more'),
('rank', '0002_alter_dashoubiaoxian_dingdan_and_more'),
]
operations = [
migrations.DeleteModel(
name='Dingdan',
),
migrations.DeleteModel(
name='DingdanPingtai',
),
migrations.DeleteModel(
name='DingdanShangjia',
),
migrations.DeleteModel(
name='Fadan',
),
migrations.DeleteModel(
name='FadanShensuTupian',
),
migrations.AddIndex(
model_name='refundrecord',
index=models.Index(fields=['ProcessorID'], name='tuikuanjilu_chuliid_0b0f16_idx'),
),
migrations.AddIndex(
model_name='refundrecord',
index=models.Index(fields=['ApplyStatus'], name='tuikuanjilu_sqzhuan_d89dc9_idx'),
),
migrations.AddIndex(
model_name='playerrating',
index=models.Index(fields=['PlayerID'], name='pingfenbiao_dashou_f62f10_idx'),
),
migrations.AddIndex(
model_name='playerdeliveryimage',
index=models.Index(fields=['PlayerID'], name='dashoutupia_dashou_7de8bd_idx'),
),
migrations.AddIndex(
model_name='playerdeliveryimage',
index=models.Index(fields=['OrderID'], name='dashoutupia_dingdan_97c685_idx'),
),
migrations.AddField(
model_name='platformorderext',
name='Order',
field=models.OneToOneField(db_column='dingdan_id', on_delete=django.db.models.deletion.CASCADE, related_name='pingtai_kuozhan', to='orders.order', verbose_name='订单'),
),
migrations.AddIndex(
model_name='penaltyrecord',
index=models.Index(fields=['PlayerID'], name='chufajilu_dashoui_07aac0_idx'),
),
migrations.AddIndex(
model_name='penaltyrecord',
index=models.Index(fields=['ApplicantID'], name='chufajilu_qingqiu_ac160e_idx'),
),
migrations.AddIndex(
model_name='penaltyrecord',
index=models.Index(fields=['ProcessorID'], name='chufajilu_chuliid_cd63ac_idx'),
),
migrations.AddIndex(
model_name='penaltyrecord',
index=models.Index(fields=['OrderID'], name='chufajilu_dingdan_b8f0c2_idx'),
),
migrations.AddIndex(
model_name='penaltyevidenceimage',
index=models.Index(fields=['UserID'], name='chufatupian_yonghui_71e585_idx'),
),
migrations.AddIndex(
model_name='penaltyevidenceimage',
index=models.Index(fields=['OrderID'], name='chufatupian_dingdan_ce0dd4_idx'),
),
migrations.AddIndex(
model_name='penaltybonus',
index=models.Index(fields=['BeneficiaryID'], name='fadan_fenhong_zhe_idx'),
),
migrations.AddIndex(
model_name='penaltybonus',
index=models.Index(fields=['Identity'], name='fadan_fenhong_sf_idx'),
),
migrations.AddField(
model_name='penaltyappealimage',
name='Penalty',
field=models.ForeignKey(db_column='fadan_id', on_delete=django.db.models.deletion.CASCADE, related_name='shensu_tupians', to='orders.penalty', verbose_name='关联罚单'),
),
migrations.AddIndex(
model_name='penalty',
index=models.Index(fields=['PenalizedUserID', 'AffectsGrabbing', 'Status'], name='fadan_qiangdan_check'),
),
migrations.AddIndex(
model_name='penalty',
index=models.Index(fields=['RelatedOrderID'], name='fadan_dingdan_idx'),
),
migrations.AddIndex(
model_name='orderplayerhistory',
index=models.Index(fields=['OrderID'], name='order_dasho_dingdan_1e79ab_idx'),
),
migrations.AddIndex(
model_name='orderplayerhistory',
index=models.Index(fields=['PlayerID'], name='order_dasho_dashou__0a637c_idx'),
),
migrations.AddIndex(
model_name='order',
index=models.Index(fields=['Status'], name='dingdan_zhuangt_2febe8_idx'),
),
migrations.AddIndex(
model_name='order',
index=models.Index(fields=['OrderID'], name='dingdan_dingdan_83dcb6_idx'),
),
migrations.AddIndex(
model_name='order',
index=models.Index(fields=['PlayerID'], name='dingdan_jiedan__921bfa_idx'),
),
migrations.AddIndex(
model_name='order',
index=models.Index(fields=['WechatTransactionID'], name='dingdan_wechat__278b79_idx'),
),
migrations.AddField(
model_name='merchantorderext',
name='Order',
field=models.OneToOneField(db_column='dingdan_id', on_delete=django.db.models.deletion.CASCADE, related_name='shangjia_kuozhan', to='orders.order', verbose_name='订单'),
),
migrations.AddIndex(
model_name='escortorder',
index=models.Index(fields=['MainPlayerID'], name='dingdan_pei_zhudash_583f4e_idx'),
),
migrations.AddIndex(
model_name='escortorder',
index=models.Index(fields=['Escort1ID'], name='dingdan_pei_peihu1__728279_idx'),
),
migrations.AddIndex(
model_name='escortorder',
index=models.Index(fields=['Escort2ID'], name='dingdan_pei_peihu2__77e45e_idx'),
),
migrations.AddIndex(
model_name='escortorder',
index=models.Index(fields=['Status'], name='dingdan_pei_zhuangt_22eaf6_idx'),
),
migrations.AddIndex(
model_name='chatsession',
index=models.Index(fields=['User1ID'], name='liaotian_user1_i_6be6cd_idx'),
),
migrations.AddIndex(
model_name='chatsession',
index=models.Index(fields=['User2ID'], name='liaotian_user2_i_9f61a4_idx'),
),
migrations.AddIndex(
model_name='chatsession',
index=models.Index(fields=['Status'], name='liaotian_zhuangt_5e8be5_idx'),
),
migrations.AddIndex(
model_name='platformorderext',
index=models.Index(fields=['BossID'], name='dingdan_pin_laoban__d55e6f_idx'),
),
migrations.AddIndex(
model_name='platformorderext',
index=models.Index(fields=['ShopID'], name='dingdan_pin_dianpu__9fbe27_idx'),
),
migrations.AddIndex(
model_name='penaltyappealimage',
index=models.Index(fields=['Penalty'], name='fadan_shens_fadan_i_78fab9_idx'),
),
migrations.AddIndex(
model_name='penaltyappealimage',
index=models.Index(fields=['PenalizedUserID'], name='fadan_shens_beichuf_59748e_idx'),
),
migrations.AddIndex(
model_name='merchantorderext',
index=models.Index(fields=['MerchantID'], name='dingdan_sha_shangji_64d28b_idx'),
),
]

File diff suppressed because it is too large Load Diff

View File

@@ -14,7 +14,7 @@ def dingdan_guangbo(self, order_info):
异步并发广播订单模板消息给所有关注服务号的用户
order_info 字典字段示例:
{
'dingdan_id': 'PT123456',
'OrderID': 'PT123456',
'game_type': '王者荣耀',
'amount': '88.00',
'order_desc': '星耀上王者'
@@ -22,7 +22,7 @@ def dingdan_guangbo(self, order_info):
"""
sender = WeixinBroadcastSender()
template_data = sender.build_order_message_data(order_info)
order_id = order_info.get('dingdan_id')
order_id = order_info.get('OrderID')
# 查询所有已关注用户
try:

View File

@@ -39,7 +39,7 @@ def ensure_redis_loaded():
# 预加载redis模块
ensure_redis_loaded()
@receiver(pre_save, sender='orders.Dingdan')
@receiver(pre_save, sender='orders.Order')
def handle_order_status_8(sender, instance, **kwargs):
"""
订单状态变为8时的信号处理。
@@ -49,15 +49,15 @@ def handle_order_status_8(sender, instance, **kwargs):
if instance.pk is None:
return
try:
from orders.models import Dingdan
old = Dingdan.query.filter(pk=instance.pk).values_list('zhuangtai', flat=True).first()
if old != 8 and instance.zhuangtai == 8:
instance.status_8_time = timezone.now()
from orders.models import Order
old = Order.query.filter(pk=instance.pk).values_list('Status', flat=True).first()
if old != 8 and instance.Status == 8:
instance.SettlementTime = timezone.now()
instance.pending_dispatch = False
instance.auto_task_id = ''
instance.auto_expire_at = None
elif old == 8 and instance.zhuangtai != 8:
instance.status_8_time = None
elif old == 8 and instance.Status != 8:
instance.SettlementTime = None
instance.pending_dispatch = False
instance.auto_task_id = ''
except Exception as e:

View File

@@ -14,7 +14,7 @@ from decimal import Decimal
import logging
# 导入模型 - 确保路径正确
from orders.models import Dingdan
from orders.models import Order
from users.models import UserDashou, UserShangjia
from gvsdsdk.models import User
from utils.celery_utils import safe_decimal_operation, log_task_execution, rollback_on_failure
@@ -40,25 +40,25 @@ def process_expired_order(self, dingdan_id):
with transaction.atomic():
# 获取订单,同时锁定记录
order = Dingdan.objects.select_for_update().get(
dingdan_id=dingdan_id
order = Order.objects.select_for_update().get(
OrderID=dingdan_id
)
# 再次检查订单状态是否为8
if order.zhuangtai != 8:
logger.info(f"订单{dingdan_id}状态已不是8当前:{order.zhuangtai}),跳过处理")
if order.Status != 8:
logger.info(f"订单{dingdan_id}状态已不是8当前:{order.Status}),跳过处理")
return f"订单{dingdan_id}状态已变更,跳过处理"
# 获取发单平台类型
fadan_pingtai = order.fadan_pingtai
fadan_pingtai = order.Platform
# 获取打手ID和分成金额
dashou_id = order.jiedan_dashou_id
dashou_fencheng = safe_decimal_operation(order.dashou_fencheng)
dashou_id = order.PlayerID
dashou_fencheng = safe_decimal_operation(order.PlayerCommission)
# 1. 更新订单状态为3已完成
order.zhuangtai = 3
order.save(update_fields=['zhuangtai'])
order.Status = 3
order.save(update_fields=['Status'])
# 2. 更新打手信息(如果存在)
updated_dashou = False
@@ -121,7 +121,7 @@ def process_expired_order(self, dingdan_id):
log_task_execution(f"自动结算订单 {dingdan_id}", True, result_msg)
return result_msg
except Dingdan.DoesNotExist:
except Order.DoesNotExist:
error_msg = f"订单{dingdan_id}不存在"
logger.warning(error_msg)
return error_msg
@@ -155,10 +155,10 @@ def check_order_expire_task():
check_time = timezone.now() - timedelta(seconds=settings.ORDER_EXPIRE_SECONDS + 86400) # 48+24=72小时
# 查询状态为8且创建时间早于检查时间的订单
expired_orders = Dingdan.query.filter(
zhuangtai=8,
create_time__lt=check_time
).values_list('dingdan_id', flat=True)
expired_orders = Order.query.filter(
Status=8,
CreateTime__lt=check_time
).values_list('OrderID', flat=True)
expired_count = expired_orders.count()

View File

@@ -6,7 +6,7 @@ from django.db import transaction
from django.db.models import F
from config.models import DailyIncomeStat, DailyPayoutStat
from orders.models import Dingdan, DingdanPingtai, DingdanShangjia, Lilubiao
from orders.models import Order, PlatformOrderExt, MerchantOrderExt, CommissionRate
from products.models import Gsfenhong
from users.models import UserDashou, UserGuanshi
@@ -16,17 +16,17 @@ logger = logging.getLogger(__name__)
def get_order_user_id(order):
if order.fadan_pingtai == 1:
if order.Platform == 1:
try:
ext = DingdanPingtai.objects.get(dingdan=order)
return ext.laoban_id
except DingdanPingtai.DoesNotExist:
ext = PlatformOrderExt.objects.get(Order=order)
return ext.BossID
except PlatformOrderExt.DoesNotExist:
return None
elif order.fadan_pingtai == 2:
elif order.Platform == 2:
try:
ext = DingdanShangjia.objects.get(dingdan=order)
return ext.shangjia_id
except DingdanShangjia.DoesNotExist:
ext = MerchantOrderExt.objects.get(Order=order)
return ext.MerchantID
except MerchantOrderExt.DoesNotExist:
return None
return None
@@ -111,15 +111,15 @@ def calc_shangjia_order_fencheng(jine):
"""
jine = Decimal(str(jine))
try:
lilu_obj = Lilubiao.objects.get(fadanpingtai='3')
rate_dashou = Decimal(str(lilu_obj.lilu)) if lilu_obj.lilu and lilu_obj.lilu > 0 else Decimal('1')
except Lilubiao.DoesNotExist:
lilu_obj = CommissionRate.objects.get(Platform='3')
rate_dashou = Decimal(str(lilu_obj.Rate)) if lilu_obj.Rate and lilu_obj.Rate > 0 else Decimal('1')
except CommissionRate.DoesNotExist:
rate_dashou = Decimal('1')
lilu_guanshi_obj = Lilubiao.objects.filter(fadanpingtai='13').first()
lilu_guanshi_obj = CommissionRate.objects.filter(Platform='13').first()
rate_guanshi = (
Decimal(str(lilu_guanshi_obj.lilu))
if lilu_guanshi_obj and lilu_guanshi_obj.lilu is not None
Decimal(str(lilu_guanshi_obj.Rate))
if lilu_guanshi_obj and lilu_guanshi_obj.Rate is not None
else Decimal('0')
)
@@ -139,15 +139,15 @@ def settle_shangjia_order_guanshi_fenhong(order, dashou_id):
商家订单结单时结算管事分红(幂等,失败不抛异常阻断主流程)。
"""
if getattr(order, 'fadan_pingtai', None) != 2:
if getattr(order, 'Platform', None) != 2:
return
guanshi_fencheng = order.guanshi_fencheng or Decimal('0')
guanshi_fencheng = order.ManagerCommission or Decimal('0')
if guanshi_fencheng <= 0:
return
if Gsfenhong.objects.filter(dingdan_id=order.dingdan_id).exists():
logger.info(f"商家订单管事分红已处理: {order.dingdan_id}")
if Gsfenhong.objects.filter(dingdan_id=order.OrderID).exists():
logger.info(f"商家订单管事分红已处理: {order.OrderID}")
return
if not dashou_id:
@@ -174,7 +174,7 @@ def settle_shangjia_order_guanshi_fenhong(order, dashou_id):
user_main = dashou.user
Gsfenhong.objects.create(
dingdan_id=order.dingdan_id,
dingdan_id=order.OrderID,
guanshi=guanshi_id,
dashouid=dashou_id,
shuoming='商家订单分红',
@@ -184,7 +184,7 @@ def settle_shangjia_order_guanshi_fenhong(order, dashou_id):
fenhong_leixing=3,
)
logger.info(
f"商家订单管事分红成功: 订单{order.dingdan_id}, 管事{guanshi_id}, "
f"商家订单管事分红成功: 订单{order.OrderID}, 管事{guanshi_id}, "
f"打手{dashou_id}, 金额{guanshi_fencheng}"
)
except UserGuanshi.DoesNotExist:

File diff suppressed because it is too large Load Diff