回滚到了最近一个可行的生产版本(分支 2)

This commit is contained in:
2026-06-17 13:51:51 +08:00
parent 61ddf81fb0
commit 72770ad73b
95 changed files with 4116 additions and 1510 deletions

View File

@@ -1,4 +1,4 @@
# Generated by Django 4.2.27 on 2026-06-17 01:34
# Generated by Django 4.2.27 on 2026-04-06 23:31
from django.db import migrations, models
import django.db.models.deletion
@@ -8,268 +8,289 @@ class Migration(migrations.Migration):
initial = True
dependencies = [
]
dependencies = []
operations = [
migrations.CreateModel(
name='AbnormalUserLog',
name="AbnormalUserLog",
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('account_id', models.CharField(db_index=True, max_length=20, verbose_name='账号IDphone')),
('ip_address', models.GenericIPAddressField(blank=True, null=True, verbose_name='IP地址')),
('real_ip', models.GenericIPAddressField(blank=True, null=True, verbose_name='真实IP穿透代理后')),
('x_forwarded_for', models.CharField(blank=True, default='', max_length=255, verbose_name='X-Forwarded-For')),
('user_agent', models.CharField(blank=True, default='', max_length=500, verbose_name='User-Agent')),
('request_method', models.CharField(blank=True, default='', max_length=10, verbose_name='请求方法')),
('request_path', models.CharField(blank=True, default='', max_length=500, verbose_name='请求路径')),
('request_params', models.TextField(blank=True, default='', verbose_name='请求参数GET/POST')),
('request_body', models.TextField(blank=True, default='', verbose_name='请求体(原始)')),
('request_headers', models.TextField(blank=True, default='', verbose_name='请求头JSON格式')),
('attempt_type', models.CharField(blank=True, default='', max_length=50, verbose_name='攻击类型')),
('detail', models.TextField(blank=True, default='', verbose_name='详细描述')),
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"account_id",
models.CharField(
db_index=True, max_length=20, verbose_name="账号IDphone"
),
),
(
"ip_address",
models.GenericIPAddressField(
blank=True, null=True, verbose_name="IP地址"
),
),
(
"real_ip",
models.GenericIPAddressField(
blank=True, null=True, verbose_name="真实IP穿透代理后"
),
),
(
"x_forwarded_for",
models.CharField(
blank=True,
default="",
max_length=255,
verbose_name="X-Forwarded-For",
),
),
(
"user_agent",
models.CharField(
blank=True,
default="",
max_length=500,
verbose_name="User-Agent",
),
),
(
"request_method",
models.CharField(
blank=True, default="", max_length=10, verbose_name="请求方法"
),
),
(
"request_path",
models.CharField(
blank=True, default="", max_length=500, verbose_name="请求路径"
),
),
(
"request_params",
models.TextField(
blank=True, default="", verbose_name="请求参数GET/POST"
),
),
(
"request_body",
models.TextField(
blank=True, default="", verbose_name="请求体(原始)"
),
),
(
"request_headers",
models.TextField(
blank=True, default="", verbose_name="请求头JSON格式"
),
),
(
"attempt_type",
models.CharField(
blank=True, default="", max_length=50, verbose_name="攻击类型"
),
),
(
"detail",
models.TextField(blank=True, default="", verbose_name="详细描述"),
),
(
"create_time",
models.DateTimeField(auto_now_add=True, verbose_name="创建时间"),
),
],
options={
'verbose_name': '异常用户日志',
'verbose_name_plural': '异常用户日志',
'db_table': 'abnormal_user_log',
"verbose_name": "异常用户日志",
"verbose_name_plural": "异常用户日志",
"db_table": "abnormal_user_log",
},
),
migrations.CreateModel(
name='DashouRiTongji',
name="Permission",
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('yonghuid', models.CharField(db_index=True, max_length=7, verbose_name='打手用户ID')),
('riqi', models.DateField(db_index=True, verbose_name='日期')),
('jiedan_zongliang', models.IntegerField(default=0, verbose_name='接单总量')),
('chengjiao_zongliang', models.IntegerField(default=0, verbose_name='成交单总量')),
('jiedan_zonge', models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name='接单总金额')),
('chengjiao_zonge', models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name='成交总金额')),
('tuikuan_liang', models.IntegerField(default=0, verbose_name='退款订单量')),
('tuikuan_jine', models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name='退款总金额')),
(
"perm_id",
models.AutoField(
primary_key=True, serialize=False, verbose_name="权限ID"
),
),
(
"perm_code",
models.CharField(
db_index=True,
max_length=100,
unique=True,
verbose_name="权限编码",
),
),
(
"perm_name",
models.CharField(max_length=100, verbose_name="权限名称"),
),
(
"description",
models.CharField(
blank=True, default="", max_length=200, verbose_name="权限描述"
),
),
(
"create_time",
models.DateTimeField(auto_now_add=True, verbose_name="创建时间"),
),
(
"update_time",
models.DateTimeField(auto_now=True, verbose_name="更新时间"),
),
],
options={
'verbose_name': '打手每日统计',
'db_table': 'dashou_ri_tongji',
"verbose_name": "权限",
"verbose_name_plural": "权限",
"db_table": "permission",
},
),
migrations.CreateModel(
name='GuanshiRiTongji',
name="Role",
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('yonghuid', models.CharField(db_index=True, max_length=7, verbose_name='管事用户ID')),
('riqi', models.DateField(db_index=True, verbose_name='日期')),
('yaoqing_dashou_shu', models.IntegerField(default=0, verbose_name='邀请打手总数')),
('chongzhi_dashou_shu', models.IntegerField(default=0, verbose_name='充值打手数量')),
('shouru_zonge', models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name='收入总额')),
(
"role_id",
models.AutoField(
primary_key=True, serialize=False, verbose_name="角色ID"
),
),
(
"role_code",
models.CharField(
db_index=True,
max_length=50,
unique=True,
verbose_name="角色编码",
),
),
("role_name", models.CharField(max_length=50, verbose_name="角色名称")),
(
"description",
models.CharField(
blank=True, default="", max_length=200, verbose_name="角色描述"
),
),
(
"create_time",
models.DateTimeField(auto_now_add=True, verbose_name="创建时间"),
),
(
"update_time",
models.DateTimeField(auto_now=True, verbose_name="更新时间"),
),
],
options={
'verbose_name': '管事每日统计',
'db_table': 'guanshi_ri_tongji',
"verbose_name": "角色",
"verbose_name_plural": "角色",
"db_table": "role",
},
),
migrations.CreateModel(
name='GuanshiXufeiRiTongji',
name="UserRole",
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('yonghuid', models.CharField(db_index=True, max_length=7, verbose_name='管事用户ID')),
('riqi', models.DateField(db_index=True, verbose_name='日期')),
('xufei_zongshu', models.IntegerField(default=0, verbose_name='今日续费总数')),
('xufei_shouyi', models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name='续费收益金额')),
("id", models.AutoField(primary_key=True, serialize=False)),
(
"account_id",
models.CharField(
db_index=True, max_length=11, verbose_name="账号ID"
),
),
(
"create_time",
models.DateTimeField(auto_now_add=True, verbose_name="创建时间"),
),
(
"update_time",
models.DateTimeField(auto_now=True, verbose_name="更新时间"),
),
(
"role",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
to="backend.role",
verbose_name="角色",
),
),
],
options={
'verbose_name': '管事续费每日统计',
'db_table': 'guanshi_xufei_ri_tongji',
"verbose_name": "用户角色关联",
"verbose_name_plural": "用户角色关联",
"db_table": "user_role",
},
),
migrations.CreateModel(
name='Permission',
name="RolePermission",
fields=[
('perm_id', models.AutoField(primary_key=True, serialize=False, verbose_name='权限ID')),
('perm_code', models.CharField(db_index=True, max_length=100, unique=True, verbose_name='权限编码')),
('perm_name', models.CharField(max_length=100, verbose_name='权限名称')),
('description', models.CharField(blank=True, default='', max_length=200, verbose_name='权限描述')),
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
],
options={
'verbose_name': '权限',
'verbose_name_plural': '权限',
'db_table': 'permission',
},
("id", models.AutoField(primary_key=True, serialize=False)),
(
"create_time",
models.DateTimeField(auto_now_add=True, verbose_name="创建时间"),
),
migrations.CreateModel(
name='Role',
fields=[
('role_id', models.AutoField(primary_key=True, serialize=False, verbose_name='角色ID')),
('role_code', models.CharField(db_index=True, max_length=50, unique=True, verbose_name='角色编码')),
('role_name', models.CharField(max_length=50, verbose_name='角色名称')),
('description', models.CharField(blank=True, default='', max_length=200, verbose_name='角色描述')),
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
],
options={
'verbose_name': '角色',
'verbose_name_plural': '角色',
'db_table': 'role',
},
(
"permission",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
to="backend.permission",
verbose_name="权限",
),
migrations.CreateModel(
name='ZuzhangRiTongji',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('yonghuid', models.CharField(db_index=True, max_length=7, verbose_name='组长用户ID')),
('riqi', models.DateField(db_index=True, verbose_name='日期')),
('yaoqing_guanshi_shu', models.IntegerField(default=0, verbose_name='邀请管事总数')),
('shouru_zonge', models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name='收入总额(分佣)')),
('fenyong_jine', models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name='分佣金额')),
],
options={
'verbose_name': '组长每日统计',
'db_table': 'zuzhang_ri_tongji',
'indexes': [models.Index(fields=['riqi', '-yaoqing_guanshi_shu'], name='zuzhang_ri__riqi_87169e_idx'), models.Index(fields=['riqi', '-shouru_zonge'], name='zuzhang_ri__riqi_1d7e51_idx')],
'unique_together': {('yonghuid', 'riqi')},
},
),
migrations.CreateModel(
name='UserRole',
fields=[
('id', models.AutoField(primary_key=True, serialize=False)),
('account_id', models.CharField(db_index=True, max_length=11, verbose_name='账号ID')),
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
('role', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='backend.role', verbose_name='角色')),
],
options={
'verbose_name': '用户角色关联',
'verbose_name_plural': '用户角色关联',
'db_table': 'user_role',
},
(
"role",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
to="backend.role",
verbose_name="角色",
),
migrations.CreateModel(
name='TixianRiTongji',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('riqi', models.DateField(db_index=True, verbose_name='日期')),
('leixing', models.IntegerField(choices=[(1, '打手'), (2, '管事'), (3, '组长'), (4, '考核官'), (5, '打手押金'), (6, '商家余额')], verbose_name='用户类型')),
('total_amount', models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name='当天提现总额(元)')),
],
options={
'verbose_name': '每日提现统计',
'db_table': 'tixian_ri_tongji',
'indexes': [models.Index(fields=['riqi', 'leixing'], name='tixian_ri_t_riqi_c18bb2_idx')],
'unique_together': {('riqi', 'leixing')},
},
),
migrations.CreateModel(
name='ShangjiaRiTongji',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('yonghuid', models.CharField(db_index=True, max_length=7, verbose_name='商家用户ID')),
('riqi', models.DateField(db_index=True, verbose_name='日期')),
('paifa_dingdan_shu', models.IntegerField(default=0, verbose_name='派发订单总数')),
('paifa_jine', models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name='派发订单总金额')),
('jiesuan_dingdan_shu', models.IntegerField(default=0, verbose_name='结算订单总数')),
('jiesuan_jine', models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name='结算总金额')),
('tuikuan_dingdan_shu', models.IntegerField(default=0, verbose_name='退款订单总数')),
('tuikuan_jine', models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name='退款总金额')),
],
options={
'verbose_name': '商家每日统计',
'db_table': 'shangjia_ri_tongji',
'indexes': [models.Index(fields=['riqi', '-paifa_jine'], name='shangjia_ri_riqi_d00f7f_idx'), models.Index(fields=['riqi', '-jiesuan_jine'], name='shangjia_ri_riqi_25772a_idx'), models.Index(fields=['riqi', '-paifa_dingdan_shu'], name='shangjia_ri_riqi_e05c54_idx')],
'unique_together': {('yonghuid', 'riqi')},
},
),
migrations.CreateModel(
name='RolePermission',
fields=[
('id', models.AutoField(primary_key=True, serialize=False)),
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('permission', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='backend.permission', verbose_name='权限')),
('role', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='backend.role', verbose_name='角色')),
],
options={
'verbose_name': '角色权限关联',
'verbose_name_plural': '角色权限关联',
'db_table': 'role_permission',
"verbose_name": "角色权限关联",
"verbose_name_plural": "角色权限关联",
"db_table": "role_permission",
},
),
migrations.AddIndex(
model_name='role',
index=models.Index(fields=['role_code'], name='role_role_co_b9f497_idx'),
model_name="role",
index=models.Index(fields=["role_code"], name="role_role_co_b9f497_idx"),
),
migrations.AddIndex(
model_name='permission',
index=models.Index(fields=['perm_code'], name='permission_perm_co_56cbe3_idx'),
model_name="permission",
index=models.Index(
fields=["perm_code"], name="permission_perm_co_56cbe3_idx"
),
),
migrations.AddIndex(
model_name='guanshixufeiritongji',
index=models.Index(fields=['riqi', '-xufei_zongshu'], name='guanshi_xuf_riqi_7c128f_idx'),
model_name="abnormaluserlog",
index=models.Index(
fields=["account_id"], name="abnormal_us_account_425899_idx"
),
),
migrations.AddIndex(
model_name='guanshixufeiritongji',
index=models.Index(fields=['riqi', '-xufei_shouyi'], name='guanshi_xuf_riqi_8f09b5_idx'),
model_name="abnormaluserlog",
index=models.Index(
fields=["ip_address"], name="abnormal_us_ip_addr_3d612b_idx"
),
),
migrations.AddIndex(
model_name="abnormaluserlog",
index=models.Index(
fields=["create_time"], name="abnormal_us_create__ee16da_idx"
),
),
migrations.AlterUniqueTogether(
name='guanshixufeiritongji',
unique_together={('yonghuid', 'riqi')},
),
migrations.AddIndex(
model_name='guanshiritongji',
index=models.Index(fields=['riqi', '-yaoqing_dashou_shu'], name='guanshi_ri__riqi_075e1a_idx'),
),
migrations.AddIndex(
model_name='guanshiritongji',
index=models.Index(fields=['riqi', '-chongzhi_dashou_shu'], name='guanshi_ri__riqi_78a79d_idx'),
),
migrations.AddIndex(
model_name='guanshiritongji',
index=models.Index(fields=['riqi', '-shouru_zonge'], name='guanshi_ri__riqi_334f52_idx'),
name="userrole",
unique_together={("account_id", "role")},
),
migrations.AlterUniqueTogether(
name='guanshiritongji',
unique_together={('yonghuid', 'riqi')},
),
migrations.AddIndex(
model_name='dashouritongji',
index=models.Index(fields=['riqi', '-jiedan_zongliang'], name='dashou_ri_t_riqi_95a785_idx'),
),
migrations.AddIndex(
model_name='dashouritongji',
index=models.Index(fields=['riqi', '-chengjiao_zongliang'], name='dashou_ri_t_riqi_ad9c1a_idx'),
),
migrations.AddIndex(
model_name='dashouritongji',
index=models.Index(fields=['riqi', '-jiedan_zonge'], name='dashou_ri_t_riqi_5da703_idx'),
),
migrations.AddIndex(
model_name='dashouritongji',
index=models.Index(fields=['riqi', '-chengjiao_zonge'], name='dashou_ri_t_riqi_0a3156_idx'),
),
migrations.AlterUniqueTogether(
name='dashouritongji',
unique_together={('yonghuid', 'riqi')},
),
migrations.AddIndex(
model_name='abnormaluserlog',
index=models.Index(fields=['account_id'], name='abnormal_us_account_425899_idx'),
),
migrations.AddIndex(
model_name='abnormaluserlog',
index=models.Index(fields=['ip_address'], name='abnormal_us_ip_addr_3d612b_idx'),
),
migrations.AddIndex(
model_name='abnormaluserlog',
index=models.Index(fields=['create_time'], name='abnormal_us_create__ee16da_idx'),
),
migrations.AlterUniqueTogether(
name='userrole',
unique_together={('account_id', 'role')},
),
migrations.AlterUniqueTogether(
name='rolepermission',
unique_together={('role', 'permission')},
name="rolepermission",
unique_together={("role", "permission")},
),
]

View File

@@ -0,0 +1,339 @@
# Generated by Django 4.2.27 on 2026-04-09 14:53
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("backend", "0001_initial"),
]
operations = [
migrations.CreateModel(
name="ZuzhangRiTongji",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"yonghuid",
models.CharField(
db_index=True, max_length=7, verbose_name="组长用户ID"
),
),
("riqi", models.DateField(db_index=True, verbose_name="日期")),
(
"yaoqing_guanshi_shu",
models.IntegerField(default=0, verbose_name="邀请管事总数"),
),
(
"shouru_zonge",
models.DecimalField(
decimal_places=2,
default=0.0,
max_digits=12,
verbose_name="收入总额(分佣)",
),
),
(
"fenyong_jine",
models.DecimalField(
decimal_places=2,
default=0.0,
max_digits=12,
verbose_name="分佣金额",
),
),
],
options={
"verbose_name": "组长每日统计",
"db_table": "zuzhang_ri_tongji",
"indexes": [
models.Index(
fields=["riqi", "-yaoqing_guanshi_shu"],
name="zuzhang_ri__riqi_87169e_idx",
),
models.Index(
fields=["riqi", "-shouru_zonge"],
name="zuzhang_ri__riqi_1d7e51_idx",
),
],
"unique_together": {("yonghuid", "riqi")},
},
),
migrations.CreateModel(
name="ShangjiaRiTongji",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"yonghuid",
models.CharField(
db_index=True, max_length=7, verbose_name="商家用户ID"
),
),
("riqi", models.DateField(db_index=True, verbose_name="日期")),
(
"paifa_dingdan_shu",
models.IntegerField(default=0, verbose_name="派发订单总数"),
),
(
"paifa_jine",
models.DecimalField(
decimal_places=2,
default=0.0,
max_digits=12,
verbose_name="派发订单总金额",
),
),
(
"jiesuan_dingdan_shu",
models.IntegerField(default=0, verbose_name="结算订单总数"),
),
(
"jiesuan_jine",
models.DecimalField(
decimal_places=2,
default=0.0,
max_digits=12,
verbose_name="结算总金额",
),
),
(
"tuikuan_dingdan_shu",
models.IntegerField(default=0, verbose_name="退款订单总数"),
),
(
"tuikuan_jine",
models.DecimalField(
decimal_places=2,
default=0.0,
max_digits=12,
verbose_name="退款总金额",
),
),
],
options={
"verbose_name": "商家每日统计",
"db_table": "shangjia_ri_tongji",
"indexes": [
models.Index(
fields=["riqi", "-paifa_jine"],
name="shangjia_ri_riqi_d00f7f_idx",
),
models.Index(
fields=["riqi", "-jiesuan_jine"],
name="shangjia_ri_riqi_25772a_idx",
),
models.Index(
fields=["riqi", "-paifa_dingdan_shu"],
name="shangjia_ri_riqi_e05c54_idx",
),
],
"unique_together": {("yonghuid", "riqi")},
},
),
migrations.CreateModel(
name="GuanshiXufeiRiTongji",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"yonghuid",
models.CharField(
db_index=True, max_length=7, verbose_name="管事用户ID"
),
),
("riqi", models.DateField(db_index=True, verbose_name="日期")),
(
"xufei_zongshu",
models.IntegerField(default=0, verbose_name="今日续费总数"),
),
(
"xufei_shouyi",
models.DecimalField(
decimal_places=2,
default=0.0,
max_digits=12,
verbose_name="续费收益金额",
),
),
],
options={
"verbose_name": "管事续费每日统计",
"db_table": "guanshi_xufei_ri_tongji",
"indexes": [
models.Index(
fields=["riqi", "-xufei_zongshu"],
name="guanshi_xuf_riqi_7c128f_idx",
),
models.Index(
fields=["riqi", "-xufei_shouyi"],
name="guanshi_xuf_riqi_8f09b5_idx",
),
],
"unique_together": {("yonghuid", "riqi")},
},
),
migrations.CreateModel(
name="GuanshiRiTongji",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"yonghuid",
models.CharField(
db_index=True, max_length=7, verbose_name="管事用户ID"
),
),
("riqi", models.DateField(db_index=True, verbose_name="日期")),
(
"yaoqing_dashou_shu",
models.IntegerField(default=0, verbose_name="邀请打手总数"),
),
(
"chongzhi_dashou_shu",
models.IntegerField(default=0, verbose_name="充值打手数量"),
),
(
"shouru_zonge",
models.DecimalField(
decimal_places=2,
default=0.0,
max_digits=12,
verbose_name="收入总额",
),
),
],
options={
"verbose_name": "管事每日统计",
"db_table": "guanshi_ri_tongji",
"indexes": [
models.Index(
fields=["riqi", "-yaoqing_dashou_shu"],
name="guanshi_ri__riqi_075e1a_idx",
),
models.Index(
fields=["riqi", "-chongzhi_dashou_shu"],
name="guanshi_ri__riqi_78a79d_idx",
),
models.Index(
fields=["riqi", "-shouru_zonge"],
name="guanshi_ri__riqi_334f52_idx",
),
],
"unique_together": {("yonghuid", "riqi")},
},
),
migrations.CreateModel(
name="DashouRiTongji",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"yonghuid",
models.CharField(
db_index=True, max_length=7, verbose_name="打手用户ID"
),
),
("riqi", models.DateField(db_index=True, verbose_name="日期")),
(
"jiedan_zongliang",
models.IntegerField(default=0, verbose_name="接单总量"),
),
(
"chengjiao_zongliang",
models.IntegerField(default=0, verbose_name="成交单总量"),
),
(
"jiedan_zonge",
models.DecimalField(
decimal_places=2,
default=0.0,
max_digits=12,
verbose_name="接单总金额",
),
),
(
"chengjiao_zonge",
models.DecimalField(
decimal_places=2,
default=0.0,
max_digits=12,
verbose_name="成交总金额",
),
),
(
"tuikuan_liang",
models.IntegerField(default=0, verbose_name="退款订单量"),
),
(
"tuikuan_jine",
models.DecimalField(
decimal_places=2,
default=0.0,
max_digits=12,
verbose_name="退款总金额",
),
),
],
options={
"verbose_name": "打手每日统计",
"db_table": "dashou_ri_tongji",
"indexes": [
models.Index(
fields=["riqi", "-jiedan_zongliang"],
name="dashou_ri_t_riqi_95a785_idx",
),
models.Index(
fields=["riqi", "-chengjiao_zongliang"],
name="dashou_ri_t_riqi_ad9c1a_idx",
),
models.Index(
fields=["riqi", "-jiedan_zonge"],
name="dashou_ri_t_riqi_5da703_idx",
),
models.Index(
fields=["riqi", "-chengjiao_zonge"],
name="dashou_ri_t_riqi_0a3156_idx",
),
],
"unique_together": {("yonghuid", "riqi")},
},
),
]

View File

@@ -0,0 +1,54 @@
# Generated by Django 4.2.27 on 2026-04-10 18:05
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("backend", "0002_zuzhangritongji_shangjiaritongji_and_more"),
]
operations = [
migrations.CreateModel(
name="TixianRiTongji",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("riqi", models.DateField(db_index=True, verbose_name="日期")),
(
"leixing",
models.IntegerField(
choices=[(1, "打手"), (2, "管事"), (3, "组长")],
verbose_name="用户类型",
),
),
(
"total_amount",
models.DecimalField(
decimal_places=2,
default=0.0,
max_digits=12,
verbose_name="当天提现总额(元)",
),
),
],
options={
"verbose_name": "每日提现统计",
"db_table": "tixian_ri_tongji",
"indexes": [
models.Index(
fields=["riqi", "leixing"], name="tixian_ri_t_riqi_c18bb2_idx"
)
],
"unique_together": {("riqi", "leixing")},
},
),
]

View File

@@ -0,0 +1,34 @@
# Generated by Django 4.2.27 on 2026-06-15 01:42
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('backend', '0003_tixianritongji'),
]
operations = [
migrations.AlterField(
model_name='rolepermission',
name='permission',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='backend.permission', verbose_name='权限'),
),
migrations.AlterField(
model_name='rolepermission',
name='role',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='backend.role', verbose_name='角色'),
),
migrations.AlterField(
model_name='tixianritongji',
name='leixing',
field=models.IntegerField(choices=[(1, '打手'), (2, '管事'), (3, '组长'), (4, '考核官'), (5, '打手押金'), (6, '商家余额')], verbose_name='用户类型'),
),
migrations.AlterField(
model_name='userrole',
name='role',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='backend.role', verbose_name='角色'),
),
]

View File

@@ -1,7 +1,6 @@
# Generated by Django 4.2.27 on 2026-06-17 01:32
# Generated by Django 5.2.10 on 2026-01-14 19:59
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
@@ -42,50 +41,6 @@ class Migration(migrations.Migration):
'db_table': 'lunbo',
},
),
migrations.CreateModel(
name='PopupConfig',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('popup_id', models.CharField(max_length=50, verbose_name='弹窗唯一ID')),
('title', models.CharField(blank=True, max_length=200, verbose_name='标题(后台用)')),
('description', models.TextField(blank=True, verbose_name='描述(后台用)')),
('strategy_type', models.CharField(choices=[('once', '仅一次'), ('daily', '每日'), ('weekly', '每周'), ('monthly', '每月'), ('yearly', '每年'), ('always', '始终'), ('count', '周期内次数限制')], default='once', max_length=20)),
('max_count', models.PositiveIntegerField(default=1, verbose_name='周期内最大展示次数')),
('reset_interval', models.CharField(blank=True, choices=[('day', ''), ('week', ''), ('month', ''), ('year', '')], max_length=20, verbose_name='重置周期count类型时使用')),
('duration', models.PositiveIntegerField(default=0, verbose_name='强制阅读秒数0=无强制)')),
('force_even_muted', models.BooleanField(default=False, verbose_name='强制弹出(忽略用户今日屏蔽)')),
('sort_order', models.PositiveIntegerField(default=0, verbose_name='展示顺序')),
('is_active', models.BooleanField(default=True, verbose_name='是否启用')),
('start_time', models.DateTimeField(blank=True, null=True, verbose_name='生效开始时间')),
('end_time', models.DateTimeField(blank=True, null=True, verbose_name='生效结束时间')),
('created_at', models.DateTimeField(auto_now_add=True)),
('updated_at', models.DateTimeField(auto_now=True)),
],
options={
'verbose_name': '弹窗配置',
'verbose_name_plural': '弹窗配置',
'db_table': 'popup_config',
'ordering': ['sort_order', 'id'],
},
),
migrations.CreateModel(
name='PopupPage',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('page_key', models.CharField(db_index=True, max_length=50, unique=True, verbose_name='页面标识')),
('name', models.CharField(max_length=100, verbose_name='页面名称')),
('description', models.TextField(blank=True, verbose_name='描述')),
('is_active', models.BooleanField(default=True, verbose_name='是否启用')),
('created_at', models.DateTimeField(auto_now_add=True)),
('updated_at', models.DateTimeField(auto_now=True)),
('ignore_user_mute', models.BooleanField(default=False, verbose_name='忽略用户今日屏蔽')),
],
options={
'verbose_name': '弹窗页面',
'verbose_name_plural': '弹窗页面',
'db_table': 'popup_page',
},
),
migrations.CreateModel(
name='Qunpeizhi',
fields=[
@@ -119,21 +74,6 @@ class Migration(migrations.Migration):
'db_table': 'szjilu',
},
),
migrations.CreateModel(
name='TixianQuotaDefault',
fields=[
('id', models.AutoField(primary_key=True, serialize=False)),
('leixing', models.IntegerField(choices=[(1, '打手'), (2, '管事'), (3, '组长'), (4, '考核官'), (5, '打手押金'), (6, '商家余额')], unique=True, verbose_name='用户类型')),
('default_quota', models.DecimalField(decimal_places=2, default=20.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='更新时间')),
],
options={
'verbose_name': '默认提现限额',
'verbose_name_plural': '默认提现限额',
'db_table': 'tixian_quota_default',
},
),
migrations.CreateModel(
name='Tupianpeizhi',
fields=[
@@ -142,7 +82,6 @@ class Migration(migrations.Migration):
('leixing', models.PositiveIntegerField(blank=True, null=True, verbose_name='提现类型1:打手规则图片2默认头像图片')),
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, verbose_name='更改时间')),
('fangwen_cishu', models.PositiveIntegerField(default=0, verbose_name='访问次数')),
],
options={
'verbose_name': '配置图片',
@@ -150,147 +89,4 @@ class Migration(migrations.Migration):
'db_table': 'tupianpeizhi',
},
),
migrations.CreateModel(
name='WithdrawConfig',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('mode', models.IntegerField(choices=[(1, '自动提现'), (2, '手动提现')], default=2, verbose_name='提现模式')),
('created_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('updated_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
],
options={
'verbose_name': '提现模式配置',
'verbose_name_plural': '提现模式配置',
'db_table': 'withdraw_config',
},
),
migrations.CreateModel(
name='ShangjiaMoban',
fields=[
('id', models.AutoField(primary_key=True, serialize=False, verbose_name='模板ID')),
('yonghu_id', models.CharField(db_index=True, max_length=7, verbose_name='用户ID')),
('leixing_id', models.PositiveIntegerField(db_index=True, verbose_name='商品类型ID')),
('moban_jieshao', models.CharField(max_length=500, verbose_name='模板介绍')),
('jiage', models.DecimalField(decimal_places=2, help_text='单位:元', max_digits=10, verbose_name='模板价格')),
('fabu_shuliang', models.PositiveIntegerField(default=0, verbose_name='发布数量')),
('yongjin_qiangdan', models.BooleanField(default=False, verbose_name='是否开启佣金抢单')),
('yongjin_jiage', models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True, verbose_name='佣金价格')),
('chenghao_id', models.IntegerField(blank=True, null=True, verbose_name='关联称号ID')),
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
],
options={
'verbose_name': '商家订单模板',
'verbose_name_plural': '商家订单模板',
'db_table': 'shangjia_moban',
'indexes': [models.Index(fields=['yonghu_id', 'leixing_id'], name='shangjia_mo_yonghu__bb287d_idx'), models.Index(fields=['yonghu_id', 'leixing_id', 'id'], name='shangjia_mo_yonghu__4240d0_idx')],
'unique_together': {('yonghu_id', 'leixing_id', 'moban_jieshao')},
},
),
migrations.CreateModel(
name='ShangjiaLianjie',
fields=[
('id', models.AutoField(primary_key=True, serialize=False, verbose_name='链接ID')),
('yonghu_id', models.CharField(db_index=True, max_length=7, verbose_name='用户ID')),
('leixing_id', models.PositiveIntegerField(db_index=True, verbose_name='商品类型ID')),
('moban_id', models.PositiveIntegerField(db_index=True, verbose_name='模板ID')),
('lianjie', models.CharField(max_length=500, unique=True, verbose_name='链接地址')),
('dingdan_id', models.CharField(blank=True, db_index=True, max_length=32, null=True, verbose_name='订单ID')),
('is_used', models.BooleanField(db_index=True, default=False, verbose_name='是否已使用')),
('shiyongzhe_ip', models.CharField(blank=True, max_length=50, null=True, verbose_name='使用者IP')),
('youxiao_shijian', models.DateTimeField(blank=True, null=True, verbose_name='有效截止时间')),
('lianjie_token', models.CharField(blank=True, db_index=True, max_length=32, null=True, unique=True, verbose_name='链接Token')),
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
('previous_lianjie_id', models.PositiveIntegerField(blank=True, db_index=True, null=True, verbose_name='上一个链接ID')),
('previous_dingdan_id', models.CharField(blank=True, db_index=True, max_length=32, null=True, verbose_name='上一个订单ID')),
],
options={
'verbose_name': '商家链接',
'verbose_name_plural': '商家链接',
'db_table': 'shangjia_lianjie',
'indexes': [models.Index(fields=['yonghu_id', 'moban_id', 'leixing_id'], name='shangjia_li_yonghu__9f2b25_idx'), models.Index(fields=['lianjie_token'], name='shangjia_li_lianjie_99014c_idx'), models.Index(fields=['dingdan_id'], name='shangjia_li_dingdan_95b682_idx')],
},
),
migrations.CreateModel(
name='PopupImage',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('image_url', models.CharField(max_length=500, verbose_name='图片相对路径')),
('text', models.TextField(blank=True, verbose_name='图片上方文字')),
('sort_order', models.PositiveIntegerField(default=0, verbose_name='展示顺序')),
('created_at', models.DateTimeField(auto_now_add=True)),
('popup_config', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='images', to='config.popupconfig')),
],
options={
'verbose_name': '弹窗图片',
'verbose_name_plural': '弹窗图片',
'db_table': 'popup_image',
'ordering': ['sort_order', 'id'],
},
),
migrations.AddField(
model_name='popupconfig',
name='page',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='popups', to='config.popuppage'),
),
migrations.CreateModel(
name='DailyPayoutStat',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('date', models.DateField(db_index=True, unique=True, verbose_name='统计日期')),
('year', models.PositiveSmallIntegerField(verbose_name='年份')),
('month', models.PositiveSmallIntegerField(verbose_name='月份')),
('day', models.PositiveSmallIntegerField(verbose_name='日期')),
('total_amount', models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name='出款总额')),
('total_count', models.PositiveIntegerField(default=0, verbose_name='出款总笔数')),
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
],
options={
'verbose_name': '每日出款统计',
'verbose_name_plural': '每日出款统计',
'db_table': 'daily_payout_stat',
'indexes': [models.Index(fields=['date'], name='daily_payou_date_b534ec_idx'), models.Index(fields=['year', 'month', 'day'], name='daily_payou_year_6376ca_idx')],
},
),
migrations.CreateModel(
name='DailyIncomeStat',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('date', models.DateField(db_index=True, unique=True, verbose_name='统计日期')),
('year', models.PositiveSmallIntegerField(verbose_name='年份')),
('month', models.PositiveSmallIntegerField(verbose_name='月份')),
('day', models.PositiveSmallIntegerField(verbose_name='日期')),
('total_amount', models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name='总收入金额')),
('total_count', models.PositiveIntegerField(default=0, verbose_name='总收入笔数')),
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
],
options={
'verbose_name': '每日收入统计',
'verbose_name_plural': '每日收入统计',
'db_table': 'daily_income_stat',
'indexes': [models.Index(fields=['date'], name='daily_incom_date_75e6df_idx'), models.Index(fields=['year', 'month', 'day'], name='daily_incom_year_d85d10_idx')],
},
),
migrations.CreateModel(
name='AccountPermission',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('account_id', models.CharField(db_index=True, max_length=11, verbose_name='账号ID')),
('permission_code', models.IntegerField(verbose_name='权限代码')),
('is_enabled', models.BooleanField(default=False, verbose_name='是否开启')),
],
options={
'verbose_name': '账号权限',
'verbose_name_plural': '账号权限',
'db_table': 'account_permission',
'unique_together': {('account_id', 'permission_code')},
},
),
migrations.AlterUniqueTogether(
name='popupconfig',
unique_together={('page', 'popup_id')},
),
]

View File

@@ -0,0 +1,56 @@
# Generated by Django 4.2.27 on 2026-01-27 12:18
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('config', '0001_initial'),
]
operations = [
migrations.CreateModel(
name='ShangjiaMoban',
fields=[
('id', models.AutoField(primary_key=True, serialize=False, verbose_name='模板ID')),
('yonghu_id', models.CharField(db_index=True, max_length=7, verbose_name='用户ID')),
('leixing_id', models.PositiveIntegerField(db_index=True, verbose_name='商品类型ID')),
('moban_jieshao', models.CharField(max_length=500, verbose_name='模板介绍')),
('jiage', models.DecimalField(decimal_places=2, help_text='单位:元', max_digits=10, verbose_name='模板价格')),
('fabu_shuliang', models.PositiveIntegerField(default=0, verbose_name='发布数量')),
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
],
options={
'verbose_name': '商家订单模板',
'verbose_name_plural': '商家订单模板',
'db_table': 'shangjia_moban',
'indexes': [models.Index(fields=['yonghu_id', 'leixing_id'], name='shangjia_mo_yonghu__bb287d_idx'), models.Index(fields=['yonghu_id', 'leixing_id', 'id'], name='shangjia_mo_yonghu__4240d0_idx')],
'unique_together': {('yonghu_id', 'leixing_id', 'moban_jieshao')},
},
),
migrations.CreateModel(
name='ShangjiaLianjie',
fields=[
('id', models.AutoField(primary_key=True, serialize=False, verbose_name='链接ID')),
('yonghu_id', models.CharField(db_index=True, max_length=7, verbose_name='用户ID')),
('leixing_id', models.PositiveIntegerField(db_index=True, verbose_name='商品类型ID')),
('moban_id', models.PositiveIntegerField(db_index=True, verbose_name='模板ID')),
('lianjie', models.CharField(max_length=500, unique=True, verbose_name='链接地址')),
('dingdan_id', models.CharField(blank=True, db_index=True, max_length=32, null=True, verbose_name='订单ID')),
('is_used', models.BooleanField(db_index=True, default=False, verbose_name='是否已使用')),
('shiyongzhe_ip', models.CharField(blank=True, max_length=50, null=True, verbose_name='使用者IP')),
('youxiao_shijian', models.DateTimeField(blank=True, null=True, verbose_name='有效截止时间')),
('lianjie_token', models.CharField(blank=True, db_index=True, max_length=32, null=True, unique=True, verbose_name='链接Token')),
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
],
options={
'verbose_name': '商家链接',
'verbose_name_plural': '商家链接',
'db_table': 'shangjia_lianjie',
'indexes': [models.Index(fields=['yonghu_id', 'moban_id', 'leixing_id'], name='shangjia_li_yonghu__9f2b25_idx'), models.Index(fields=['lianjie_token'], name='shangjia_li_lianjie_99014c_idx'), models.Index(fields=['dingdan_id'], name='shangjia_li_dingdan_95b682_idx')],
},
),
]

View File

@@ -0,0 +1,18 @@
# Generated by Django 4.2.27 on 2026-03-16 17:04
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('config', '0002_shangjiamoban_shangjialianjie'),
]
operations = [
migrations.AddField(
model_name='tupianpeizhi',
name='fangwen_cishu',
field=models.PositiveIntegerField(default=0, verbose_name='访问次数'),
),
]

View File

@@ -0,0 +1,28 @@
# Generated by Django 4.2.27 on 2026-03-20 15:50
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('config', '0003_tupianpeizhi_fangwen_cishu'),
]
operations = [
migrations.CreateModel(
name='TixianQuotaDefault',
fields=[
('id', models.AutoField(primary_key=True, serialize=False)),
('leixing', models.IntegerField(choices=[(1, '打手'), (2, '管事')], unique=True, verbose_name='用户类型')),
('default_quota', models.DecimalField(decimal_places=2, default=20.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='更新时间')),
],
options={
'verbose_name': '默认提现限额',
'verbose_name_plural': '默认提现限额',
'db_table': 'tixian_quota_default',
},
),
]

View File

@@ -0,0 +1,76 @@
# Generated by Django 4.2.27 on 2026-03-24 17:34
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('config', '0004_tixianquotadefault'),
]
operations = [
migrations.CreateModel(
name='OrderTypeMapping',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('partner_club_id', models.CharField(db_index=True, max_length=6, verbose_name='对方俱乐部ID')),
('partner_type_id', models.PositiveIntegerField(verbose_name='对方订单类型ID')),
('partner_type_name', models.CharField(max_length=100, verbose_name='对方订单类型名称')),
('our_type_id', models.PositiveIntegerField(verbose_name='我方订单类型ID')),
('our_type_name', models.CharField(max_length=100, verbose_name='我方订单类型名称')),
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
],
options={
'verbose_name': '订单类型映射',
'verbose_name_plural': '订单类型映射',
'db_table': 'order_type_mapping',
'unique_together': {('partner_club_id', 'partner_type_id')},
},
),
migrations.CreateModel(
name='DailyDispatchStat',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('date', models.DateField(db_index=True, verbose_name='统计日期')),
('year', models.PositiveSmallIntegerField(verbose_name='年份')),
('month', models.PositiveSmallIntegerField(verbose_name='月份')),
('day', models.PositiveSmallIntegerField(verbose_name='日期')),
('direction', models.PositiveSmallIntegerField(choices=[(1, '我方派单'), (2, '对方派单')], verbose_name='派单方向')),
('partner_club_id', models.CharField(db_index=True, max_length=6, verbose_name='对方俱乐部ID')),
('dispatch_count', models.PositiveIntegerField(default=0, verbose_name='派单数')),
('dispatch_amount', models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name='派单总额')),
('success_count', models.PositiveIntegerField(default=0, verbose_name='成交订单数')),
('success_amount', models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name='成交总额')),
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
],
options={
'verbose_name': '每日派单统计',
'verbose_name_plural': '每日派单统计',
'db_table': 'daily_dispatch_stat',
'indexes': [models.Index(fields=['year', 'month', 'day', 'direction', 'partner_club_id'], name='daily_dispa_year_f98f91_idx'), models.Index(fields=['date'], name='daily_dispa_date_9ac7fe_idx')],
},
),
migrations.CreateModel(
name='Club',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('club_id', models.CharField(db_index=True, max_length=6, verbose_name='本俱乐部ID')),
('partner_club_id', models.CharField(max_length=6, unique=True, verbose_name='对方俱乐部ID')),
('is_interop_enabled', models.BooleanField(default=False, verbose_name='是否开启平台互通')),
('is_receive_enabled', models.BooleanField(default=False, verbose_name='是否同意接收对方订单')),
('dashou_rate', models.DecimalField(decimal_places=4, default=1.0, max_digits=5, verbose_name='打手分红费率')),
('partner_domain', models.URLField(blank=True, verbose_name='对方服务器域名')),
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
],
options={
'verbose_name': '俱乐部',
'verbose_name_plural': '俱乐部',
'db_table': 'club',
'indexes': [models.Index(fields=['club_id'], name='club_club_id_e75636_idx'), models.Index(fields=['partner_club_id'], name='club_partner_b76039_idx')],
},
),
]

View File

@@ -0,0 +1,52 @@
# Generated by Django 4.2.27 on 2026-04-01 09:22
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('config', '0005_ordertypemapping_dailydispatchstat_club'),
]
operations = [
migrations.CreateModel(
name='ClubConfig',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('club_id', models.CharField(db_index=True, max_length=6, verbose_name='俱乐部ID')),
('club_nickname', models.CharField(blank=True, default='', max_length=50, verbose_name='俱乐部昵称')),
('club_avatar', models.CharField(blank=True, default='', max_length=500, verbose_name='俱乐部头像地址')),
('backend_domain', models.CharField(blank=True, default='', max_length=200, verbose_name='后台域名')),
('chat_api_key', models.CharField(blank=True, default='', max_length=200, verbose_name='聊天API密钥')),
('chat_api_id', models.CharField(blank=True, default='', max_length=200, verbose_name='聊天API ID')),
('customer_service_api_url', models.CharField(blank=True, default='', max_length=200, verbose_name='客服API URL')),
('customer_service_corp_id', models.CharField(blank=True, default='', max_length=100, verbose_name='客服企业ID')),
('storage_bucket_domain', models.CharField(blank=True, default='', max_length=500, verbose_name='存储桶域名')),
('is_self', models.SmallIntegerField(choices=[(0, '对方'), (1, '我方')], db_index=True, default=0, verbose_name='是否我方俱乐部')),
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
],
options={
'verbose_name': '俱乐部配置',
'verbose_name_plural': '俱乐部配置',
'db_table': 'club_config',
'unique_together': {('club_id',)},
},
),
migrations.CreateModel(
name='AccountPermission',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('account_id', models.CharField(db_index=True, max_length=11, verbose_name='账号ID')),
('permission_code', models.IntegerField(verbose_name='权限代码')),
('is_enabled', models.BooleanField(default=False, verbose_name='是否开启')),
],
options={
'verbose_name': '账号权限',
'verbose_name_plural': '账号权限',
'db_table': 'account_permission',
'unique_together': {('account_id', 'permission_code')},
},
),
]

View File

@@ -0,0 +1,28 @@
# Generated by Django 4.2.27 on 2026-04-02 13:31
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('config', '0006_clubconfig_accountpermission'),
]
operations = [
migrations.AddField(
model_name='club',
name='receive_rate',
field=models.DecimalField(decimal_places=4, default=1.0, max_digits=5, verbose_name='接收打手分红费率'),
),
migrations.AddField(
model_name='dailydispatchstat',
name='claimed_amount',
field=models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name='抢单总额'),
),
migrations.AddField(
model_name='dailydispatchstat',
name='claimed_count',
field=models.PositiveIntegerField(default=0, verbose_name='抢单数'),
),
]

View File

@@ -0,0 +1,18 @@
# Generated by Django 4.2.27 on 2026-04-04 18:51
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('config', '0007_club_receive_rate_dailydispatchstat_claimed_amount_and_more'),
]
operations = [
migrations.AddField(
model_name='clubconfig',
name='storage_bucket_name',
field=models.CharField(blank=True, default='', max_length=100, verbose_name='存储桶名称'),
),
]

View File

@@ -0,0 +1,53 @@
# Generated by Django 4.2.27 on 2026-04-05 13:34
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('config', '0008_clubconfig_storage_bucket_name'),
]
operations = [
migrations.CreateModel(
name='DailyPayoutStat',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('date', models.DateField(db_index=True, unique=True, verbose_name='统计日期')),
('year', models.PositiveSmallIntegerField(verbose_name='年份')),
('month', models.PositiveSmallIntegerField(verbose_name='月份')),
('day', models.PositiveSmallIntegerField(verbose_name='日期')),
('total_amount', models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name='出款总额')),
('total_count', models.PositiveIntegerField(default=0, verbose_name='出款总笔数')),
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
],
options={
'verbose_name': '每日出款统计',
'verbose_name_plural': '每日出款统计',
'db_table': 'daily_payout_stat',
'indexes': [models.Index(fields=['date'], name='daily_payou_date_b534ec_idx'), models.Index(fields=['year', 'month', 'day'], name='daily_payou_year_6376ca_idx')],
},
),
migrations.CreateModel(
name='DailyIncomeStat',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('date', models.DateField(db_index=True, unique=True, verbose_name='统计日期')),
('year', models.PositiveSmallIntegerField(verbose_name='年份')),
('month', models.PositiveSmallIntegerField(verbose_name='月份')),
('day', models.PositiveSmallIntegerField(verbose_name='日期')),
('total_amount', models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name='总收入金额')),
('total_count', models.PositiveIntegerField(default=0, verbose_name='总收入笔数')),
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
],
options={
'verbose_name': '每日收入统计',
'verbose_name_plural': '每日收入统计',
'db_table': 'daily_income_stat',
'indexes': [models.Index(fields=['date'], name='daily_incom_date_75e6df_idx'), models.Index(fields=['year', 'month', 'day'], name='daily_incom_year_d85d10_idx')],
},
),
]

View File

@@ -0,0 +1,84 @@
# Generated by Django 4.2.27 on 2026-04-22 11:24
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('config', '0009_dailypayoutstat_dailyincomestat'),
]
operations = [
migrations.CreateModel(
name='PopupConfig',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('popup_id', models.CharField(max_length=50, verbose_name='弹窗唯一ID')),
('title', models.CharField(blank=True, max_length=200, verbose_name='标题(后台用)')),
('description', models.TextField(blank=True, verbose_name='描述(后台用)')),
('strategy_type', models.CharField(choices=[('once', '仅一次'), ('daily', '每日'), ('weekly', '每周'), ('monthly', '每月'), ('yearly', '每年'), ('always', '始终'), ('count', '周期内次数限制')], default='once', max_length=20)),
('max_count', models.PositiveIntegerField(default=1, verbose_name='周期内最大展示次数')),
('reset_interval', models.CharField(blank=True, choices=[('day', ''), ('week', ''), ('month', ''), ('year', '')], max_length=20, verbose_name='重置周期count类型时使用')),
('duration', models.PositiveIntegerField(default=0, verbose_name='强制阅读秒数0=无强制)')),
('force_even_muted', models.BooleanField(default=False, verbose_name='强制弹出(忽略用户今日屏蔽)')),
('sort_order', models.PositiveIntegerField(default=0, verbose_name='展示顺序')),
('is_active', models.BooleanField(default=True, verbose_name='是否启用')),
('start_time', models.DateTimeField(blank=True, null=True, verbose_name='生效开始时间')),
('end_time', models.DateTimeField(blank=True, null=True, verbose_name='生效结束时间')),
('created_at', models.DateTimeField(auto_now_add=True)),
('updated_at', models.DateTimeField(auto_now=True)),
],
options={
'verbose_name': '弹窗配置',
'verbose_name_plural': '弹窗配置',
'db_table': 'popup_config',
'ordering': ['sort_order', 'id'],
},
),
migrations.CreateModel(
name='PopupPage',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('page_key', models.CharField(db_index=True, max_length=50, unique=True, verbose_name='页面标识')),
('name', models.CharField(max_length=100, verbose_name='页面名称')),
('description', models.TextField(blank=True, verbose_name='描述')),
('is_active', models.BooleanField(default=True, verbose_name='是否启用')),
('created_at', models.DateTimeField(auto_now_add=True)),
('updated_at', models.DateTimeField(auto_now=True)),
('ignore_user_mute', models.BooleanField(default=False, verbose_name='忽略用户今日屏蔽')),
],
options={
'verbose_name': '弹窗页面',
'verbose_name_plural': '弹窗页面',
'db_table': 'popup_page',
},
),
migrations.CreateModel(
name='PopupImage',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('image_url', models.CharField(max_length=500, verbose_name='图片相对路径')),
('text', models.TextField(blank=True, verbose_name='图片上方文字')),
('sort_order', models.PositiveIntegerField(default=0, verbose_name='展示顺序')),
('created_at', models.DateTimeField(auto_now_add=True)),
('popup_config', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='images', to='config.popupconfig')),
],
options={
'verbose_name': '弹窗图片',
'verbose_name_plural': '弹窗图片',
'db_table': 'popup_image',
'ordering': ['sort_order', 'id'],
},
),
migrations.AddField(
model_name='popupconfig',
name='page',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='popups', to='config.popuppage'),
),
migrations.AlterUniqueTogether(
name='popupconfig',
unique_together={('page', 'popup_id')},
),
]

View File

@@ -0,0 +1,27 @@
# Generated by Django 4.2.27 on 2026-04-25 12:05
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('config', '0010_popupconfig_popuppage_popupimage_popupconfig_page_and_more'),
]
operations = [
migrations.CreateModel(
name='WithdrawConfig',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('mode', models.IntegerField(choices=[(1, '自动提现'), (2, '手动提现')], default=2, verbose_name='提现模式')),
('created_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('updated_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
],
options={
'verbose_name': '提现模式配置',
'verbose_name_plural': '提现模式配置',
'db_table': 'withdraw_config',
},
),
]

View File

@@ -0,0 +1,28 @@
# Generated by Django 4.2.27 on 2026-05-17 18:57
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('config', '0011_withdrawconfig'),
]
operations = [
migrations.AddField(
model_name='shangjiamoban',
name='chenghao_id',
field=models.IntegerField(blank=True, null=True, verbose_name='关联称号ID'),
),
migrations.AddField(
model_name='shangjiamoban',
name='yongjin_jiage',
field=models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True, verbose_name='佣金价格'),
),
migrations.AddField(
model_name='shangjiamoban',
name='yongjin_qiangdan',
field=models.BooleanField(default=False, verbose_name='是否开启佣金抢单'),
),
]

View File

@@ -0,0 +1,23 @@
# Generated by Django 4.2.27 on 2026-05-26 03:25
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('config', '0012_shangjiamoban_chenghao_id_and_more'),
]
operations = [
migrations.AddField(
model_name='shangjialianjie',
name='previous_dingdan_id',
field=models.CharField(blank=True, db_index=True, max_length=32, null=True, verbose_name='上一个订单ID'),
),
migrations.AddField(
model_name='shangjialianjie',
name='previous_lianjie_id',
field=models.PositiveIntegerField(blank=True, db_index=True, null=True, verbose_name='上一个链接ID'),
),
]

View File

@@ -0,0 +1,30 @@
# Generated by Django 4.2.27 on 2026-06-15 01:42
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('config', '0013_shangjialianjie_previous_dingdan_id_and_more'),
]
operations = [
migrations.DeleteModel(
name='Club',
),
migrations.DeleteModel(
name='ClubConfig',
),
migrations.DeleteModel(
name='DailyDispatchStat',
),
migrations.DeleteModel(
name='OrderTypeMapping',
),
migrations.AlterField(
model_name='tixianquotadefault',
name='leixing',
field=models.IntegerField(choices=[(1, '打手'), (2, '管事'), (3, '组长'), (4, '考核官'), (5, '打手押金'), (6, '商家余额')], unique=True, verbose_name='用户类型'),
),
]

View File

@@ -0,0 +1,90 @@
# Generated by Django 6.0.5 on 2026-06-13 12:29
import datetime
import gvsdsdk.models
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('gvsdsdk', '0001_initial'),
]
operations = [
migrations.CreateModel(
name='Position',
fields=[
('PositionUUID', gvsdsdk.models.UUIDField(binary_length=16, db_column='PositionUUID', primary_key=True, serialize=False)),
('CompanyUUID', gvsdsdk.models.UUIDField(binary_length=16, db_column='CompanyUUID')),
('PositionName', models.CharField(db_column='PositionName', max_length=128)),
('PositionCode', models.CharField(db_column='PositionCode', default='', max_length=64)),
('PositionLevel', models.SmallIntegerField(db_column='PositionLevel', default=0)),
('PositionStatus', models.SmallIntegerField(db_column='PositionStatus', default=1)),
('PositionDesc', models.CharField(db_column='PositionDesc', default='', max_length=512)),
('CreateTime', models.DateTimeField(db_column='CreateTime', default=datetime.datetime.utcnow)),
('UpdateTime', models.DateTimeField(db_column='UpdateTime', default=datetime.datetime.utcnow)),
],
options={
'verbose_name': '职务',
'verbose_name_plural': '职务',
'db_table': 'Position',
'managed': True,
},
),
migrations.CreateModel(
name='RolePosition',
fields=[
('RolePositionUUID', gvsdsdk.models.UUIDField(binary_length=16, db_column='RolePositionUUID', primary_key=True, serialize=False)),
('RoleUUID', gvsdsdk.models.UUIDField(binary_length=16, db_column='RoleUUID')),
('PositionUUID', gvsdsdk.models.UUIDField(binary_length=16, db_column='PositionUUID')),
('IsMainPosition', models.SmallIntegerField(db_column='IsMainPosition', default=0)),
('CreateTime', models.DateTimeField(db_column='CreateTime', default=datetime.datetime.utcnow)),
],
options={
'verbose_name': '角色职务关联',
'verbose_name_plural': '角色职务关联',
'db_table': 'RolePosition',
'managed': True,
},
),
migrations.CreateModel(
name='RoleShop',
fields=[
('RoleShopUUID', gvsdsdk.models.UUIDField(binary_length=16, db_column='RoleShopUUID', primary_key=True, serialize=False)),
('RoleUUID', gvsdsdk.models.UUIDField(binary_length=16, db_column='RoleUUID')),
('ShopUUID', gvsdsdk.models.UUIDField(binary_length=16, db_column='ShopUUID')),
('IsMainShop', models.SmallIntegerField(db_column='IsMainShop', default=0)),
('CreateTime', models.DateTimeField(db_column='CreateTime', default=datetime.datetime.utcnow)),
],
options={
'verbose_name': '角色商铺关联',
'verbose_name_plural': '角色商铺关联',
'db_table': 'RoleShop',
'managed': True,
},
),
migrations.CreateModel(
name='Shop',
fields=[
('ShopUUID', gvsdsdk.models.UUIDField(binary_length=16, db_column='ShopUUID', primary_key=True, serialize=False)),
('CompanyUUID', gvsdsdk.models.UUIDField(binary_length=16, db_column='CompanyUUID')),
('ShopName', models.CharField(db_column='ShopName', max_length=128)),
('ShopCode', models.CharField(db_column='ShopCode', default='', max_length=64)),
('ShopType', models.SmallIntegerField(db_column='ShopType', default=0)),
('ShopStatus', models.SmallIntegerField(db_column='ShopStatus', default=1)),
('ShopAddress', models.CharField(db_column='ShopAddress', default='', max_length=512)),
('ShopContact', models.CharField(db_column='ShopContact', default='', max_length=128)),
('ShopPhone', models.CharField(db_column='ShopPhone', default='', max_length=32)),
('ShopDesc', models.CharField(db_column='ShopDesc', default='', max_length=512)),
('CreateTime', models.DateTimeField(db_column='CreateTime', default=datetime.datetime.utcnow)),
('UpdateTime', models.DateTimeField(db_column='UpdateTime', default=datetime.datetime.utcnow)),
],
options={
'verbose_name': '商铺',
'verbose_name_plural': '商铺',
'db_table': 'Shop',
'managed': True,
},
),
]

View File

@@ -1,7 +1,7 @@
# Generated by Django 4.2.27 on 2026-06-17 01:32
# Generated by Django 5.2.10 on 2026-01-14 19:59
from django.db import migrations, models
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
@@ -12,201 +12,6 @@ class Migration(migrations.Migration):
]
operations = [
migrations.CreateModel(
name='Chufajilu',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('dashouid', models.CharField(db_index=True, max_length=7, null=True, verbose_name='被罚打手ID')),
('qingqiuid', models.CharField(db_index=True, max_length=11, null=True, verbose_name='请求处罚ID')),
('chuliid', models.CharField(db_index=True, max_length=11, null=True, verbose_name='处理处罚ID')),
('cfliyou', models.TextField(blank=True, null=True, verbose_name='处罚理由')),
('ssliyou', models.TextField(blank=True, null=True, verbose_name='打手申诉理由')),
('sqzhuangtai', models.IntegerField(blank=True, default=0, null=True, verbose_name='处罚申请状态:0待处理,1成功,2驳回')),
('bhliyou', models.TextField(blank=True, null=True, verbose_name='驳回处罚理由')),
('jifen', models.IntegerField(default=0, verbose_name='扣除打手积分')),
('dingdan_id', models.CharField(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='更新时间')),
],
options={
'db_table': 'chufajilu',
},
),
migrations.CreateModel(
name='Chufatupian',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('dingdan_id', models.CharField(db_index=True, max_length=32, null=True, verbose_name='订单ID')),
('yonghuid', models.CharField(blank=True, db_index=True, max_length=32, null=True, verbose_name='用户ID')),
('tupian', models.CharField(blank=True, max_length=500, null=True, verbose_name='证据图片URL')),
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
],
options={
'db_table': 'chufatupian',
},
),
migrations.CreateModel(
name='Dashoutupian',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('dingdan_id', models.CharField(db_index=True, max_length=32, null=True, verbose_name='订单ID')),
('dashou', models.CharField(blank=True, db_index=True, max_length=32, null=True, verbose_name='接单打手ID')),
('tupian', models.CharField(blank=True, max_length=500, null=True, verbose_name='打手提交图片URL')),
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
],
options={
'db_table': 'dashoutupian',
},
),
migrations.CreateModel(
name='Dingdan',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('dingdan_id', models.CharField(db_index=True, max_length=32, unique=True, verbose_name='订单ID')),
('zhuangtai', models.IntegerField(blank=True, db_index=True, default=1, null=True, verbose_name='订单状态')),
('fadan_pingtai', models.IntegerField(blank=True, null=True, verbose_name='发单平台')),
('jine', models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True, verbose_name='订单金额')),
('dashou_fencheng', models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True, verbose_name='打手分成')),
('guanshi_fencheng', models.DecimalField(blank=True, decimal_places=2, default=0, max_digits=10, null=True, verbose_name='管事分成')),
('jiedan_dashou_id', models.CharField(blank=True, db_index=True, max_length=32, null=True, verbose_name='接单打手ID')),
('dashou_liuyan', models.TextField(blank=True, null=True, verbose_name='打手留言')),
('zhiding_id', models.CharField(blank=True, max_length=32, null=True, verbose_name='指定ID')),
('shangpin_id', models.IntegerField(blank=True, null=True, verbose_name='商品ID')),
('leixing_id', models.PositiveIntegerField(blank=True, null=True, verbose_name='商品类型ID')),
('tupian', models.CharField(blank=True, max_length=500, null=True, verbose_name='商品图片URL')),
('yaoqiuleixing', models.PositiveIntegerField(blank=True, null=True, verbose_name='抢单要求类型')),
('huiyuan_id', models.CharField(blank=True, max_length=6, null=True, verbose_name='会员ID')),
('yongjin', models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True, verbose_name='佣金要求')),
('jieshao', models.TextField(blank=True, null=True, verbose_name='订单介绍')),
('beizhu', models.TextField(blank=True, null=True, verbose_name='订单备注')),
('nicheng', models.CharField(blank=True, max_length=50, null=True, verbose_name='游戏昵称')),
('user1_id', models.CharField(db_index=True, max_length=30, null=True, verbose_name='用户1标识')),
('user2_id', models.CharField(db_index=True, max_length=30, null=True, verbose_name='用户2打手标识')),
('auto_task_id', models.CharField(blank=True, default='', max_length=255, verbose_name='延时任务ID')),
('auto_expire_at', models.DateTimeField(blank=True, null=True, verbose_name='计划过期时间')),
('pending_dispatch', models.BooleanField(db_index=True, default=False, verbose_name='待调度标记')),
('status_8_time', models.DateTimeField(blank=True, null=True, verbose_name='状态变为8的时间')),
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
('clkf', models.CharField(db_index=True, max_length=20, null=True, verbose_name='处理客服')),
('tkly', models.CharField(blank=True, max_length=500, null=True, verbose_name='退款/拒绝理由')),
('wechat_transaction_id', models.CharField(blank=True, db_index=True, max_length=64, null=True, verbose_name='微信支付订单号')),
],
options={
'verbose_name': '订单',
'verbose_name_plural': '订单',
'db_table': 'dingdan',
},
),
migrations.CreateModel(
name='DingdanPeihu',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('dingdan_id', models.CharField(db_index=True, max_length=32, unique=True, verbose_name='订单ID')),
('zhudashou_id', models.CharField(db_index=True, max_length=32, verbose_name='主打手ID')),
('peihu1_id', models.CharField(blank=True, db_index=True, max_length=32, null=True, verbose_name='陪护1打手ID')),
('peihu2_id', models.CharField(blank=True, db_index=True, max_length=32, null=True, verbose_name='陪护2打手ID')),
('zhuangtai', models.IntegerField(default=1, verbose_name='陪护订单状态')),
('peihu_xuqiu_shuliang', models.IntegerField(default=1, verbose_name='陪护需求数量')),
('yongjin_yaoqiu', models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True, verbose_name='抢单佣金要求')),
('peihu1_dengji_xuqiu', models.PositiveIntegerField(blank=True, null=True, verbose_name='陪护1等级需求(称号ID)')),
('peihu2_dengji_xuqiu', models.PositiveIntegerField(blank=True, null=True, verbose_name='陪护2等级需求(称号ID)')),
('peihu1_zhadan_danze', models.CharField(blank=True, max_length=10, null=True, verbose_name='陪护1炸单担责比例')),
('peihu2_zhadan_danze', models.CharField(blank=True, max_length=10, null=True, verbose_name='陪护2炸单担责比例')),
('peihu1_fenhong', models.CharField(blank=True, max_length=10, null=True, verbose_name='陪护1分红比例')),
('peihu2_fenhong', models.CharField(blank=True, max_length=10, null=True, verbose_name='陪护2分红比例')),
('zhiding_peihu1', models.CharField(blank=True, max_length=32, null=True, verbose_name='指定陪护1 ID')),
('zhiding_peihu2', models.CharField(blank=True, max_length=32, null=True, verbose_name='指定陪护2 ID')),
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
],
options={
'verbose_name': '陪护订单',
'verbose_name_plural': '陪护订单',
'db_table': 'dingdan_peihu',
},
),
migrations.CreateModel(
name='DingdanPingtai',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('laoban_id', models.CharField(blank=True, db_index=True, max_length=32, null=True, verbose_name='老板ID')),
('laoban_pingjia', models.TextField(blank=True, null=True, verbose_name='老板评价')),
('jjjs_biaoshi', models.IntegerField(default=0, verbose_name='拒绝结算标记(1表示拒绝结算)')),
('pingtai_shouyi', models.DecimalField(blank=True, decimal_places=2, default=0.0, max_digits=10, null=True, verbose_name='平台收益')),
('dianpu_shouyi', models.DecimalField(blank=True, decimal_places=2, default=0.0, max_digits=10, null=True, verbose_name='店铺收益')),
('dianpu_id', models.PositiveIntegerField(blank=True, db_index=True, null=True, verbose_name='所属店铺ID')),
('shangji_dianpu_id', models.PositiveIntegerField(blank=True, db_index=True, null=True, verbose_name='该订单的上级店铺ID')),
('shangji_fenhong', models.DecimalField(blank=True, 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='DingdanShangjia',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('shangjia_id', models.CharField(blank=True, db_index=True, max_length=32, null=True, verbose_name='商家ID')),
('shangjia_pingjia', models.TextField(blank=True, null=True, verbose_name='商家评价')),
('cfliyou', models.TextField(blank=True, null=True, verbose_name='商家处罚理由')),
('sqzhuangtai', models.IntegerField(blank=True, default=0, null=True, verbose_name='处罚申请状态:0待处理,1成功,2驳回')),
('bhliyou', models.TextField(blank=True, null=True, verbose_name='驳回商家处罚理由')),
('sjnicheng', models.CharField(max_length=50, null=True, verbose_name='商家昵称')),
('shangyige_dingdan_id', models.CharField(blank=True, max_length=32, null=True, verbose_name='上一个订单ID')),
],
options={
'verbose_name': '商家订单扩展',
'verbose_name_plural': '商家订单扩展',
'db_table': 'dingdan_shangjia',
},
),
migrations.CreateModel(
name='Fadan',
fields=[
('id', models.AutoField(primary_key=True, serialize=False, verbose_name='自增主键')),
('beichufa_id', models.CharField(db_index=True, max_length=20, verbose_name='被处罚用户ID')),
('shenqing_chufa', models.CharField(blank=True, max_length=20, null=True, verbose_name='申请处罚者ID')),
('shenfen', models.IntegerField(choices=[(1, '打手'), (2, '管事'), (3, '商家'), (4, '组长')], default=1, verbose_name='被处罚者身份')),
('chufaliyou', models.TextField(blank=True, null=True, verbose_name='处罚理由')),
('fakuanjine', models.DecimalField(decimal_places=2, default=0.0, max_digits=10, verbose_name='罚款金额')),
('guanliandingdan_id', models.CharField(blank=True, db_index=True, max_length=32, null=True, verbose_name='关联订单ID')),
('zhuangtai', models.IntegerField(choices=[(1, '待缴纳'), (2, '已缴纳'), (3, '申诉中'), (4, '已驳回')], db_index=True, default=1, verbose_name='罚单状态')),
('yingxiang_qiangdan', models.IntegerField(choices=[(1, '影响抢单'), (0, '不影响抢单')], db_index=True, default=1, verbose_name='是否影响抢单')),
('shensuliyou', models.TextField(blank=True, null=True, verbose_name='申诉理由')),
('tongyi_chufaliyou', models.TextField(blank=True, null=True, verbose_name='同意处罚理由')),
('bohuiliyou', models.TextField(blank=True, null=True, verbose_name='驳回理由')),
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
('shenqingren_shenfen', models.IntegerField(choices=[(1, '客服'), (2, '售后'), (3, '管理员'), (4, '店铺'), (5, '商家')], default=1, verbose_name='申请处罚人身份')),
('chulizhe_shenfen', models.IntegerField(choices=[(1, '客服'), (2, '售后'), (3, '管理员')], default=2, verbose_name='处理者身份')),
('chulizhe', models.CharField(blank=True, max_length=20, null=True, verbose_name='处理者')),
('shenqingren_fenhong_jine', models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name='申请人分红金额')),
],
options={
'verbose_name': '罚单',
'verbose_name_plural': '罚单',
'db_table': 'fadan',
},
),
migrations.CreateModel(
name='FadanFenhongLilv',
fields=[
('shenfen', models.IntegerField(choices=[(1, '客服'), (2, '售后'), (3, '管理员'), (4, '店铺'), (5, '商家')], primary_key=True, serialize=False, verbose_name='申请处罚人身份')),
('lilv', models.DecimalField(decimal_places=4, default=0.0, max_digits=5, verbose_name='分红费率')),
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
],
options={
'verbose_name': '罚款分红费率配置',
'verbose_name_plural': '罚款分红费率配置',
'db_table': 'fadan_fenhong_lilv',
},
),
migrations.CreateModel(
name='Lilubiao',
fields=[
@@ -240,60 +45,71 @@ class Migration(migrations.Migration):
},
),
migrations.CreateModel(
name='Tuikuanjilu',
name='Chufajilu',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('dingdan_id', models.CharField(max_length=32, unique=True, verbose_name='订单ID')),
('dashouid', models.CharField(max_length=7, null=True, verbose_name='接单打手ID')),
('qingqiuid', models.CharField(max_length=7, null=True, verbose_name='请求用户ID')),
('chuliid', models.CharField(db_index=True, max_length=11, null=True, verbose_name='理人ID')),
('liyou', models.TextField(blank=True, null=True, verbose_name='理由')),
('sqzhuangtai', models.IntegerField(blank=True, db_index=True, default=0, null=True, verbose_name='申请状态:0待处理,1成功,2驳回')),
('bhliyou', models.TextField(blank=True, null=True, verbose_name='驳回理由')),
('dashouid', models.CharField(db_index=True, max_length=7, null=True, verbose_name='被罚打手ID')),
('qingqiuid', models.CharField(db_index=True, max_length=7, null=True, verbose_name='请求处罚ID')),
('chuliid', models.CharField(db_index=True, max_length=7, null=True, verbose_name='处理处罚ID')),
('cfliyou', models.TextField(blank=True, null=True, verbose_name='罚理由')),
('sqzhuangtai', models.IntegerField(blank=True, default=0, null=True, verbose_name='处罚申请状态:0待处理,1成功,2驳回')),
('bhliyou', models.TextField(blank=True, null=True, verbose_name='驳回处罚理由')),
('jifen', models.IntegerField(default=0, verbose_name='扣除打手积分')),
('dingdan_id', models.CharField(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='更新时间')),
],
options={
'db_table': 'chufajilu',
'indexes': [models.Index(fields=['dashouid'], name='chufajilu_dashoui_07aac0_idx'), models.Index(fields=['qingqiuid'], name='chufajilu_qingqiu_ac160e_idx'), models.Index(fields=['chuliid'], name='chufajilu_chuliid_cd63ac_idx'), models.Index(fields=['dingdan_id'], name='chufajilu_dingdan_b8f0c2_idx')],
},
),
migrations.CreateModel(
name='Dashoutupian',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('dingdan_id', models.CharField(db_index=True, max_length=32, null=True, verbose_name='订单ID')),
('dashou', models.CharField(blank=True, db_index=True, max_length=32, null=True, verbose_name='接单打手ID')),
('tupian', models.CharField(blank=True, max_length=500, null=True, verbose_name='打手提交图片URL')),
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
],
options={
'db_table': 'dashoutupian',
'indexes': [models.Index(fields=['dashou'], name='dashoutupia_dashou_7de8bd_idx'), models.Index(fields=['dingdan_id'], name='dashoutupia_dingdan_97c685_idx')],
},
),
migrations.CreateModel(
name='Dingdan',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('dingdan_id', models.CharField(db_index=True, max_length=32, unique=True, verbose_name='订单ID')),
('zhuangtai', models.IntegerField(blank=True, db_index=True, default=1, null=True, verbose_name='订单状态')),
('fadan_pingtai', models.IntegerField(blank=True, null=True, verbose_name='发单平台')),
('jine', models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True, verbose_name='订单金额')),
('dashou_fencheng', models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True, verbose_name='打手分成')),
('jiedan_dashou_id', models.CharField(blank=True, db_index=True, max_length=32, null=True, verbose_name='接单打手ID')),
('dashou_liuyan', models.TextField(blank=True, null=True, verbose_name='打手留言')),
('zhiding_id', models.CharField(blank=True, max_length=32, null=True, verbose_name='指定ID')),
('shangpin_id', models.IntegerField(blank=True, null=True, verbose_name='商品ID')),
('leixing_id', models.PositiveIntegerField(blank=True, null=True, verbose_name='商品类型ID')),
('tupian', models.CharField(blank=True, max_length=500, null=True, verbose_name='商品图片URL')),
('yaoqiuleixing', models.PositiveIntegerField(blank=True, null=True, verbose_name='抢单要求类型')),
('huiyuan_id', models.CharField(blank=True, max_length=6, null=True, verbose_name='会员ID')),
('yongjin', models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True, verbose_name='佣金要求')),
('jieshao', models.TextField(blank=True, null=True, verbose_name='订单介绍')),
('beizhu', models.TextField(blank=True, null=True, verbose_name='订单备注')),
('nicheng', models.CharField(blank=True, max_length=50, null=True, verbose_name='游戏昵称')),
('user1_id', models.CharField(db_index=True, max_length=30, null=True, verbose_name='用户1标识')),
('user2_id', models.CharField(db_index=True, max_length=30, null=True, verbose_name='用户2打手标识')),
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
],
options={
'db_table': 'tuikuanjilu',
'indexes': [models.Index(fields=['chuliid'], name='tuikuanjilu_chuliid_0b0f16_idx'), models.Index(fields=['sqzhuangtai'], name='tuikuanjilu_sqzhuan_d89dc9_idx')],
},
),
migrations.CreateModel(
name='Pingfen',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('dashou', models.CharField(blank=True, db_index=True, max_length=32, null=True, verbose_name='接单打手ID')),
('zongfen', models.PositiveIntegerField(default=0, verbose_name='总分')),
('cishu', models.PositiveIntegerField(default=0, verbose_name='评分次数')),
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
],
options={
'verbose_name': '评分表',
'db_table': 'pingfenbiao',
'indexes': [models.Index(fields=['dashou'], name='pingfenbiao_dashou_f62f10_idx')],
},
),
migrations.CreateModel(
name='OrderDashouHistory',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('dingdan_id', models.CharField(db_index=True, max_length=32, verbose_name='订单ID')),
('dashou_id', models.CharField(db_index=True, max_length=7, verbose_name='打手ID')),
('times', models.PositiveSmallIntegerField(verbose_name='第几次接单从1开始')),
('operator', models.CharField(max_length=11, verbose_name='操作客服ID')),
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
],
options={
'verbose_name': '订单打手变更历史',
'verbose_name_plural': '订单打手变更历史',
'db_table': 'order_dashou_history',
'indexes': [models.Index(fields=['dingdan_id'], name='order_dasho_dingdan_1e79ab_idx'), models.Index(fields=['dashou_id'], name='order_dasho_dashou__0a637c_idx')],
'verbose_name': '订单',
'verbose_name_plural': '订单',
'db_table': 'dingdan',
'indexes': [models.Index(fields=['zhuangtai'], name='dingdan_zhuangt_2febe8_idx'), models.Index(fields=['dingdan_id'], name='dingdan_dingdan_83dcb6_idx'), models.Index(fields=['jiedan_dashou_id'], name='dingdan_jiedan__921bfa_idx')],
},
),
migrations.CreateModel(
@@ -313,142 +129,77 @@ class Migration(migrations.Migration):
},
),
migrations.CreateModel(
name='FadanShensuTupian',
name='Pingfen',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('beichufa_id', models.CharField(db_index=True, max_length=7, verbose_name='被处罚用户ID')),
('tupian_url', models.CharField(max_length=500, verbose_name='图片相对URL')),
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('yongtu', models.IntegerField(choices=[(1, '处罚证据图片'), (2, '申诉图片')], default=2, verbose_name='图片用途')),
('fadan', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='shensu_tupians', to='orders.fadan', verbose_name='关联罚单')),
],
options={
'verbose_name': '罚款申诉图片',
'verbose_name_plural': '罚款申诉图片',
'db_table': 'fadan_shensu_tupian',
},
),
migrations.CreateModel(
name='FadanFenhong',
fields=[
('id', models.AutoField(primary_key=True, serialize=False, verbose_name='自增主键')),
('fenhongzhe_id', models.CharField(db_index=True, max_length=20, verbose_name='分红者ID')),
('zonge', models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name='分红总额')),
('ketixian_fenhong', models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name='可提现分红')),
('shenfen', models.IntegerField(choices=[(1, '商家'), (2, '客服'), (3, '平台管理者'), (4, '店铺'), (5, '售后')], default=1, verbose_name='分红者身份')),
('fenhong_cishu', models.IntegerField(default=0, verbose_name='分红次数')),
('is_individual_rate', models.BooleanField(default=False, verbose_name='是否单独开启分红利率')),
('yingde_lilv', models.DecimalField(decimal_places=4, default=0.0, max_digits=5, verbose_name='分红应得利率')),
('dashou', models.CharField(blank=True, db_index=True, max_length=32, null=True, verbose_name='接单打手ID')),
('zongfen', models.PositiveIntegerField(default=0, verbose_name='总分')),
('cishu', models.PositiveIntegerField(default=0, verbose_name='评分次数')),
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
],
options={
'verbose_name': '罚款分红',
'verbose_name_plural': '罚款分红',
'db_table': 'fadan_fenhong',
'indexes': [models.Index(fields=['fenhongzhe_id'], name='fadan_fenhong_zhe_idx'), models.Index(fields=['shenfen'], name='fadan_fenhong_sf_idx')],
'verbose_name': '评分表',
'db_table': 'pingfenbiao',
'indexes': [models.Index(fields=['dashou'], name='pingfenbiao_dashou_f62f10_idx')],
},
),
migrations.AddIndex(
model_name='fadan',
index=models.Index(fields=['beichufa_id', 'yingxiang_qiangdan', 'zhuangtai'], name='fadan_qiangdan_check'),
migrations.CreateModel(
name='Tuikuanjilu',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('dingdan_id', models.CharField(max_length=32, unique=True, verbose_name='订单ID')),
('dashouid', models.CharField(max_length=7, null=True, verbose_name='接单打手ID')),
('qingqiuid', models.CharField(max_length=7, null=True, verbose_name='请求用户ID')),
('chuliid', models.CharField(db_index=True, max_length=7, null=True, verbose_name='处理人ID')),
('liyou', models.TextField(blank=True, null=True, verbose_name='理由')),
('sqzhuangtai', models.IntegerField(blank=True, db_index=True, default=0, null=True, verbose_name='申请状态:0待处理,1成功,2驳回')),
('bhliyou', models.TextField(blank=True, null=True, verbose_name='驳回理由')),
('jine', models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True, verbose_name='订单金额')),
('dashou_fencheng', models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True, verbose_name='打手分成')),
('jieshao', models.TextField(blank=True, null=True, verbose_name='订单介绍')),
('beizhu', models.TextField(blank=True, null=True, verbose_name='订单备注')),
('nicheng', models.CharField(blank=True, max_length=50, null=True, verbose_name='游戏昵称')),
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
],
options={
'db_table': 'tuikuanjilu',
'indexes': [models.Index(fields=['chuliid'], name='tuikuanjilu_chuliid_0b0f16_idx'), models.Index(fields=['sqzhuangtai'], name='tuikuanjilu_sqzhuan_d89dc9_idx')],
},
),
migrations.AddIndex(
model_name='fadan',
index=models.Index(fields=['guanliandingdan_id'], name='fadan_dingdan_idx'),
migrations.CreateModel(
name='DingdanPingtai',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('laoban_id', models.CharField(blank=True, db_index=True, max_length=32, null=True, verbose_name='老板ID')),
('laoban_pingjia', models.TextField(blank=True, null=True, verbose_name='老板评价')),
('dingdan', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='pingtai_kuozhan', to='orders.dingdan', verbose_name='订单')),
],
options={
'verbose_name': '平台订单扩展',
'verbose_name_plural': '平台订单扩展',
'db_table': 'dingdan_pingtai',
'indexes': [models.Index(fields=['laoban_id'], name='dingdan_pin_laoban__d55e6f_idx')],
},
),
migrations.AddField(
model_name='dingdanshangjia',
name='dingdan',
field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='shangjia_kuozhan', to='orders.dingdan', verbose_name='订单'),
),
migrations.AddField(
model_name='dingdanpingtai',
name='dingdan',
field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='pingtai_kuozhan', to='orders.dingdan', verbose_name='订单'),
),
migrations.AddIndex(
model_name='dingdanpeihu',
index=models.Index(fields=['zhudashou_id'], name='dingdan_pei_zhudash_583f4e_idx'),
),
migrations.AddIndex(
model_name='dingdanpeihu',
index=models.Index(fields=['peihu1_id'], name='dingdan_pei_peihu1__728279_idx'),
),
migrations.AddIndex(
model_name='dingdanpeihu',
index=models.Index(fields=['peihu2_id'], name='dingdan_pei_peihu2__77e45e_idx'),
),
migrations.AddIndex(
model_name='dingdanpeihu',
index=models.Index(fields=['zhuangtai'], name='dingdan_pei_zhuangt_22eaf6_idx'),
),
migrations.AddIndex(
model_name='dingdan',
index=models.Index(fields=['zhuangtai'], name='dingdan_zhuangt_2febe8_idx'),
),
migrations.AddIndex(
model_name='dingdan',
index=models.Index(fields=['dingdan_id'], name='dingdan_dingdan_83dcb6_idx'),
),
migrations.AddIndex(
model_name='dingdan',
index=models.Index(fields=['jiedan_dashou_id'], name='dingdan_jiedan__921bfa_idx'),
),
migrations.AddIndex(
model_name='dingdan',
index=models.Index(fields=['wechat_transaction_id'], name='dingdan_wechat__278b79_idx'),
),
migrations.AddIndex(
model_name='dashoutupian',
index=models.Index(fields=['dashou'], name='dashoutupia_dashou_7de8bd_idx'),
),
migrations.AddIndex(
model_name='dashoutupian',
index=models.Index(fields=['dingdan_id'], name='dashoutupia_dingdan_97c685_idx'),
),
migrations.AddIndex(
model_name='chufatupian',
index=models.Index(fields=['yonghuid'], name='chufatupian_yonghui_71e585_idx'),
),
migrations.AddIndex(
model_name='chufatupian',
index=models.Index(fields=['dingdan_id'], name='chufatupian_dingdan_ce0dd4_idx'),
),
migrations.AddIndex(
model_name='chufajilu',
index=models.Index(fields=['dashouid'], name='chufajilu_dashoui_07aac0_idx'),
),
migrations.AddIndex(
model_name='chufajilu',
index=models.Index(fields=['qingqiuid'], name='chufajilu_qingqiu_ac160e_idx'),
),
migrations.AddIndex(
model_name='chufajilu',
index=models.Index(fields=['chuliid'], name='chufajilu_chuliid_cd63ac_idx'),
),
migrations.AddIndex(
model_name='chufajilu',
index=models.Index(fields=['dingdan_id'], name='chufajilu_dingdan_b8f0c2_idx'),
),
migrations.AddIndex(
model_name='fadanshensutupian',
index=models.Index(fields=['fadan_id'], name='fadan_shens_fadan_i_78fab9_idx'),
),
migrations.AddIndex(
model_name='fadanshensutupian',
index=models.Index(fields=['beichufa_id'], name='fadan_shens_beichuf_59748e_idx'),
),
migrations.AddIndex(
model_name='dingdanshangjia',
index=models.Index(fields=['shangjia_id'], name='dingdan_sha_shangji_64d28b_idx'),
),
migrations.AddIndex(
model_name='dingdanpingtai',
index=models.Index(fields=['laoban_id'], name='dingdan_pin_laoban__d55e6f_idx'),
),
migrations.AddIndex(
model_name='dingdanpingtai',
index=models.Index(fields=['dianpu_id'], name='dingdan_pin_dianpu__9fbe27_idx'),
migrations.CreateModel(
name='DingdanShangjia',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('shangjia_id', models.CharField(blank=True, db_index=True, max_length=32, null=True, verbose_name='商家ID')),
('shangjia_pingjia', models.TextField(blank=True, null=True, verbose_name='商家评价')),
('cfliyou', models.TextField(blank=True, null=True, verbose_name='商家处罚理由')),
('sqzhuangtai', models.IntegerField(blank=True, default=0, null=True, verbose_name='处罚申请状态:0待处理,1成功,2驳回')),
('bhliyou', models.TextField(blank=True, null=True, verbose_name='驳回商家处罚理由')),
('sjnicheng', models.CharField(max_length=50, null=True, verbose_name='商家昵称')),
('dingdan', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='shangjia_kuozhan', to='orders.dingdan', verbose_name='订单')),
],
options={
'verbose_name': '商家订单扩展',
'verbose_name_plural': '商家订单扩展',
'db_table': 'dingdan_shangjia',
'indexes': [models.Index(fields=['shangjia_id'], name='dingdan_sha_shangji_64d28b_idx')],
},
),
]

View File

@@ -0,0 +1,23 @@
# Generated by Django 4.2.27 on 2026-01-17 15:21
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders', '0001_initial'),
]
operations = [
migrations.AddField(
model_name='dingdan',
name='auto_expire_at',
field=models.DateTimeField(blank=True, null=True, verbose_name='计划过期时间'),
),
migrations.AddField(
model_name='dingdan',
name='auto_task_id',
field=models.CharField(blank=True, default='', max_length=255, verbose_name='延时任务ID'),
),
]

View File

@@ -0,0 +1,23 @@
# Generated by Django 4.2.27 on 2026-01-17 16:26
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders', '0002_dingdan_auto_expire_at_dingdan_auto_task_id'),
]
operations = [
migrations.AddField(
model_name='dingdan',
name='pending_dispatch',
field=models.BooleanField(db_index=True, default=False, verbose_name='待调度标记'),
),
migrations.AddField(
model_name='dingdan',
name='status_8_time',
field=models.DateTimeField(blank=True, null=True, verbose_name='状态变为8的时间'),
),
]

View File

@@ -0,0 +1,18 @@
# Generated by Django 4.2.27 on 2026-01-17 23:57
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders', '0003_dingdan_pending_dispatch_dingdan_status_8_time'),
]
operations = [
migrations.AlterField(
model_name='tuikuanjilu',
name='chuliid',
field=models.CharField(db_index=True, max_length=11, null=True, verbose_name='处理人ID'),
),
]

View File

@@ -0,0 +1,18 @@
# Generated by Django 4.2.27 on 2026-01-20 19:23
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders', '0004_alter_tuikuanjilu_chuliid'),
]
operations = [
migrations.AlterField(
model_name='chufajilu',
name='chuliid',
field=models.CharField(db_index=True, max_length=11, null=True, verbose_name='处理处罚ID'),
),
]

View File

@@ -0,0 +1,28 @@
# Generated by Django 4.2.27 on 2026-02-07 19:42
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders', '0005_alter_chufajilu_chuliid'),
]
operations = [
migrations.CreateModel(
name='Chufatupian',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('dingdan_id', models.CharField(db_index=True, max_length=32, null=True, verbose_name='订单ID')),
('yonghuid', models.CharField(blank=True, db_index=True, max_length=32, null=True, verbose_name='用户ID')),
('tupian', models.CharField(blank=True, max_length=500, null=True, verbose_name='证据图片URL')),
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
],
options={
'db_table': 'chufatupian',
'indexes': [models.Index(fields=['yonghuid'], name='chufatupian_yonghui_71e585_idx'), models.Index(fields=['dingdan_id'], name='chufatupian_dingdan_ce0dd4_idx')],
},
),
]

View File

@@ -0,0 +1,18 @@
# Generated by Django 4.2.27 on 2026-02-08 00:59
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders', '0006_chufatupian'),
]
operations = [
migrations.AddField(
model_name='chufajilu',
name='ssliyou',
field=models.TextField(blank=True, null=True, verbose_name='打手申诉理由'),
),
]

View File

@@ -0,0 +1,23 @@
# Generated by Django 4.2.27 on 2026-02-14 18:56
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders', '0007_chufajilu_ssliyou'),
]
operations = [
migrations.AddField(
model_name='dingdan',
name='is_cross',
field=models.IntegerField(default=0, verbose_name='是否跨平台订单(0否,1是)'),
),
migrations.AddField(
model_name='dingdan',
name='partner_order_id',
field=models.CharField(blank=True, db_index=True, max_length=32, null=True, verbose_name='对方平台订单ID'),
),
]

View File

@@ -0,0 +1,23 @@
# Generated by Django 4.2.27 on 2026-02-21 14:37
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders', '0008_dingdan_is_cross_dingdan_partner_order_id'),
]
operations = [
migrations.AddField(
model_name='dingdanpingtai',
name='clkf',
field=models.CharField(db_index=True, max_length=20, null=True, verbose_name='处理客服'),
),
migrations.AddField(
model_name='dingdanpingtai',
name='jjjs_biaoshi',
field=models.IntegerField(default=0, verbose_name='拒绝结算标记(1表示拒绝结算)'),
),
]

View File

@@ -0,0 +1,22 @@
# Generated by Django 4.2.27 on 2026-02-21 16:33
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders', '0009_dingdanpingtai_clkf_dingdanpingtai_jjjs_biaoshi'),
]
operations = [
migrations.RemoveField(
model_name='dingdanpingtai',
name='clkf',
),
migrations.AddField(
model_name='dingdan',
name='clkf',
field=models.CharField(db_index=True, max_length=20, null=True, verbose_name='处理客服'),
),
]

View File

@@ -0,0 +1,18 @@
# Generated by Django 4.2.27 on 2026-02-21 17:15
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders', '0010_remove_dingdanpingtai_clkf_dingdan_clkf'),
]
operations = [
migrations.AddField(
model_name='dingdan',
name='tkly',
field=models.CharField(blank=True, max_length=500, null=True, verbose_name='退款/拒绝理由'),
),
]

View File

@@ -0,0 +1,22 @@
# Generated by Django 4.2.27 on 2026-02-22 12:38
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders', '0011_dingdan_tkly'),
]
operations = [
migrations.AddField(
model_name='dingdan',
name='wechat_transaction_id',
field=models.CharField(blank=True, db_index=True, max_length=64, null=True, verbose_name='微信支付订单号'),
),
migrations.AddIndex(
model_name='dingdan',
index=models.Index(fields=['wechat_transaction_id'], name='dingdan_wechat__278b79_idx'),
),
]

View File

@@ -0,0 +1,18 @@
# Generated by Django 4.2.27 on 2026-02-22 19:56
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders', '0012_dingdan_wechat_transaction_id_and_more'),
]
operations = [
migrations.AlterField(
model_name='chufajilu',
name='qingqiuid',
field=models.CharField(db_index=True, max_length=11, null=True, verbose_name='请求处罚ID'),
),
]

View File

@@ -0,0 +1,23 @@
# Generated by Django 4.2.27 on 2026-03-24 17:34
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders', '0013_alter_chufajilu_qingqiuid'),
]
operations = [
migrations.AddField(
model_name='dingdan',
name='dispatch_type',
field=models.IntegerField(choices=[(1, '我方派单'), (2, '对方派单')], default=0, verbose_name='派发情况'),
),
migrations.AddField(
model_name='dingdan',
name='partner_club_id',
field=models.CharField(blank=True, db_index=True, max_length=6, null=True, verbose_name='对方俱乐部ID'),
),
]

View File

@@ -0,0 +1,73 @@
# Generated by Django 4.2.27 on 2026-04-01 09:22
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders', '0014_dingdan_dispatch_type_dingdan_partner_club_id'),
]
operations = [
migrations.CreateModel(
name='PreSettlement',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('dingdan_id', models.CharField(db_index=True, max_length=32, unique=True, verbose_name='我方订单ID')),
('partner_order_id', models.CharField(db_index=True, max_length=32, verbose_name='对方订单ID')),
('partner_club_id', models.CharField(db_index=True, max_length=6, verbose_name='对方俱乐部ID')),
('dashou_id', models.CharField(db_index=True, max_length=7, verbose_name='接单打手ID')),
('amount', models.DecimalField(decimal_places=2, max_digits=10, verbose_name='打手应分金额')),
('order_amount', models.DecimalField(decimal_places=2, default=0.0, max_digits=10, verbose_name='订单原金额')),
('status', models.SmallIntegerField(choices=[(0, '待结算'), (1, '已结算'), (2, '已拒绝')], default=0, verbose_name='结算状态')),
('process_time', models.DateTimeField(blank=True, null=True, verbose_name='处理时间')),
('operator', models.CharField(blank=True, default='', max_length=32, verbose_name='操作人')),
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
],
options={
'verbose_name': '预结算表',
'verbose_name_plural': '预结算表',
'db_table': 'pre_settlement',
'indexes': [models.Index(fields=['dingdan_id'], name='pre_settlem_dingdan_4f3541_idx'), models.Index(fields=['partner_order_id'], name='pre_settlem_partner_45b29e_idx'), models.Index(fields=['partner_club_id'], name='pre_settlem_partner_d2c44c_idx'), models.Index(fields=['dashou_id'], name='pre_settlem_dashou__d5fe7c_idx'), models.Index(fields=['status'], name='pre_settlem_status_0aa711_idx')],
},
),
migrations.CreateModel(
name='OrderDashouHistory',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('dingdan_id', models.CharField(db_index=True, max_length=32, verbose_name='订单ID')),
('dashou_id', models.CharField(db_index=True, max_length=7, verbose_name='打手ID')),
('times', models.PositiveSmallIntegerField(verbose_name='第几次接单从1开始')),
('operator', models.CharField(max_length=11, verbose_name='操作客服ID')),
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
],
options={
'verbose_name': '订单打手变更历史',
'verbose_name_plural': '订单打手变更历史',
'db_table': 'order_dashou_history',
'indexes': [models.Index(fields=['dingdan_id'], name='order_dasho_dingdan_1e79ab_idx'), models.Index(fields=['dashou_id'], name='order_dasho_dashou__0a637c_idx')],
},
),
migrations.CreateModel(
name='CrossPlatformOrderData',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('dingdan_id', models.CharField(db_index=True, max_length=32, unique=True, verbose_name='我方订单ID')),
('partner_order_id', models.CharField(db_index=True, max_length=32, verbose_name='对方平台订单ID')),
('partner_club_id', models.CharField(db_index=True, max_length=6, verbose_name='对方俱乐部ID')),
('partner_order_status', models.IntegerField(default=0, verbose_name='对方平台订单状态')),
('partner_dashou_id', models.CharField(blank=True, default='', max_length=32, verbose_name='对方平台接单打手ID')),
('partner_amount', 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='更新时间')),
],
options={
'verbose_name': '跨平台订单扩展',
'verbose_name_plural': '跨平台订单扩展',
'db_table': 'cross_platform_order_data',
'indexes': [models.Index(fields=['dingdan_id'], name='cross_platf_dingdan_498d08_idx'), models.Index(fields=['partner_order_id'], name='cross_platf_partner_5d5615_idx'), models.Index(fields=['partner_club_id'], name='cross_platf_partner_1054e1_idx')],
},
),
]

View File

@@ -0,0 +1,22 @@
# Generated by Django 4.2.27 on 2026-04-04 15:10
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders', '0015_presettlement_orderdashouhistory_and_more'),
]
operations = [
migrations.AlterField(
model_name='presettlement',
name='dingdan_id',
field=models.CharField(db_index=True, max_length=32, verbose_name='我方订单ID'),
),
migrations.AlterUniqueTogether(
name='presettlement',
unique_together={('dingdan_id', 'dashou_id')},
),
]

View File

@@ -0,0 +1,32 @@
# Generated by Django 4.2.27 on 2026-04-23 14:56
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders', '0016_alter_presettlement_dingdan_id_and_more'),
]
operations = [
migrations.AddField(
model_name='dingdanpingtai',
name='dianpu_id',
field=models.PositiveIntegerField(blank=True, db_index=True, null=True, verbose_name='所属店铺ID'),
),
migrations.AddField(
model_name='dingdanpingtai',
name='dianpu_shouyi',
field=models.DecimalField(blank=True, decimal_places=2, default=0.0, max_digits=10, null=True, verbose_name='店铺收益'),
),
migrations.AddField(
model_name='dingdanpingtai',
name='pingtai_shouyi',
field=models.DecimalField(blank=True, decimal_places=2, default=0.0, max_digits=10, null=True, verbose_name='平台收益'),
),
migrations.AddIndex(
model_name='dingdanpingtai',
index=models.Index(fields=['dianpu_id'], name='dingdan_pin_dianpu__9fbe27_idx'),
),
]

View File

@@ -0,0 +1,18 @@
# Generated by Django 4.2.27 on 2026-04-30 02:36
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders', '0017_dingdanpingtai_dianpu_id_and_more'),
]
operations = [
migrations.AddField(
model_name='dingdanshangjia',
name='partner_yonghu_id',
field=models.CharField(blank=True, max_length=32, null=True, verbose_name='对方平台用户ID'),
),
]

View File

@@ -0,0 +1,23 @@
# Generated by Django 4.2.27 on 2026-05-05 10:33
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders', '0018_dingdanshangjia_partner_yonghu_id'),
]
operations = [
migrations.AddField(
model_name='dingdanpingtai',
name='shangji_dianpu_id',
field=models.PositiveIntegerField(blank=True, db_index=True, null=True, verbose_name='该订单的上级店铺ID'),
),
migrations.AddField(
model_name='dingdanpingtai',
name='shangji_fenhong',
field=models.DecimalField(blank=True, decimal_places=2, default=0.0, max_digits=10, null=True, verbose_name='上级分红金额'),
),
]

View File

@@ -0,0 +1,58 @@
# Generated by Django 4.2.27 on 2026-05-06 11:28
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders', '0019_dingdanpingtai_shangji_dianpu_id_and_more'),
]
operations = [
migrations.CreateModel(
name='FadanFenhong',
fields=[
('id', models.AutoField(primary_key=True, serialize=False, verbose_name='自增主键')),
('fenhongzhe_id', models.CharField(db_index=True, max_length=20, verbose_name='分红者ID')),
('zonge', models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name='分红总额')),
('ketixian_fenhong', models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name='可提现分红')),
('shenfen', models.IntegerField(choices=[(1, '商家'), (2, '客服'), (3, '平台管理者')], default=1, verbose_name='分红者身份')),
('fenhong_cishu', models.IntegerField(default=0, verbose_name='分红次数')),
('yingde_lilv', models.DecimalField(decimal_places=4, default=0.0, max_digits=5, verbose_name='分红应得利率')),
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
],
options={
'verbose_name': '罚款分红',
'verbose_name_plural': '罚款分红',
'db_table': 'fadan_fenhong',
'indexes': [models.Index(fields=['fenhongzhe_id'], name='fadan_fenhong_zhe_idx'), models.Index(fields=['shenfen'], name='fadan_fenhong_sf_idx')],
},
),
migrations.CreateModel(
name='Fadan',
fields=[
('id', models.AutoField(primary_key=True, serialize=False, verbose_name='自增主键')),
('beichufa_id', models.CharField(db_index=True, max_length=20, verbose_name='被处罚用户ID')),
('shenqing_chufa', models.CharField(blank=True, max_length=20, null=True, verbose_name='申请处罚者ID')),
('shenfen', models.IntegerField(choices=[(1, '打手'), (2, '管事'), (3, '商家'), (4, '组长')], default=1, verbose_name='被处罚者身份')),
('chufaliyou', models.TextField(blank=True, null=True, verbose_name='处罚理由')),
('fakuanjine', models.DecimalField(decimal_places=2, default=0.0, max_digits=10, verbose_name='罚款金额')),
('guanliandingdan_id', models.CharField(blank=True, db_index=True, max_length=32, null=True, verbose_name='关联订单ID')),
('zhuangtai', models.IntegerField(choices=[(1, '待缴纳'), (2, '已缴纳'), (3, '申诉中'), (4, '已驳回')], db_index=True, default=1, verbose_name='罚单状态')),
('yingxiang_qiangdan', models.IntegerField(choices=[(1, '影响抢单'), (0, '不影响抢单')], db_index=True, default=1, verbose_name='是否影响抢单')),
('shensuliyou', models.TextField(blank=True, null=True, verbose_name='申诉理由')),
('tongyi_chufaliyou', models.TextField(blank=True, null=True, verbose_name='同意处罚理由')),
('bohuiliyou', models.TextField(blank=True, null=True, verbose_name='驳回理由')),
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
],
options={
'verbose_name': '罚单',
'verbose_name_plural': '罚单',
'db_table': 'fadan',
'indexes': [models.Index(fields=['beichufa_id', 'yingxiang_qiangdan', 'zhuangtai'], name='fadan_qiangdan_check'), models.Index(fields=['guanliandingdan_id'], name='fadan_dingdan_idx')],
},
),
]

View File

@@ -0,0 +1,30 @@
# Generated by Django 4.2.27 on 2026-05-07 11:15
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('orders', '0020_fadanfenhong_fadan'),
]
operations = [
migrations.CreateModel(
name='FadanShensuTupian',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('beichufa_id', models.CharField(db_index=True, max_length=7, verbose_name='被处罚用户ID')),
('tupian_url', models.CharField(max_length=500, verbose_name='图片相对URL')),
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('fadan', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='shensu_tupians', to='orders.fadan', verbose_name='关联罚单')),
],
options={
'verbose_name': '罚款申诉图片',
'verbose_name_plural': '罚款申诉图片',
'db_table': 'fadan_shensu_tupian',
'indexes': [models.Index(fields=['fadan_id'], name='fadan_shens_fadan_i_78fab9_idx'), models.Index(fields=['beichufa_id'], name='fadan_shens_beichuf_59748e_idx')],
},
),
]

View File

@@ -0,0 +1,23 @@
# Generated by Django 4.2.27 on 2026-05-07 16:18
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders', '0021_fadanshensutupian'),
]
operations = [
migrations.AddField(
model_name='fadan',
name='partner_club_id',
field=models.CharField(blank=True, db_index=True, max_length=6, null=True, verbose_name='对方俱乐部ID'),
),
migrations.AddField(
model_name='fadan',
name='shenqingren_shenfen',
field=models.IntegerField(choices=[(1, '客服'), (2, '售后'), (3, '管理员')], default=1, verbose_name='申请处罚人身份'),
),
]

View File

@@ -0,0 +1,18 @@
# Generated by Django 4.2.27 on 2026-05-07 17:03
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders', '0022_fadan_partner_club_id_fadan_shenqingren_shenfen'),
]
operations = [
migrations.AddField(
model_name='fadanshensutupian',
name='yongtu',
field=models.IntegerField(choices=[(1, '处罚证据图片'), (2, '申诉图片')], default=2, verbose_name='图片用途'),
),
]

View File

@@ -0,0 +1,23 @@
# Generated by Django 4.2.27 on 2026-05-07 19:41
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders', '0023_fadanshensutupian_yongtu'),
]
operations = [
migrations.AddField(
model_name='fadan',
name='chulizhe',
field=models.CharField(blank=True, max_length=20, null=True, verbose_name='处理者'),
),
migrations.AddField(
model_name='fadan',
name='chulizhe_shenfen',
field=models.IntegerField(choices=[(1, '客服'), (2, '售后'), (3, '管理员')], default=2, verbose_name='处理者身份'),
),
]

View File

@@ -0,0 +1,18 @@
# Generated by Django 4.2.27 on 2026-05-10 00:31
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders', '0024_fadan_chulizhe_fadan_chulizhe_shenfen'),
]
operations = [
migrations.AlterField(
model_name='fadan',
name='shenqingren_shenfen',
field=models.IntegerField(choices=[(1, '客服'), (2, '售后'), (3, '管理员'), (4, '店铺')], default=1, verbose_name='申请处罚人身份'),
),
]

View File

@@ -0,0 +1,37 @@
# Generated by Django 4.2.27 on 2026-05-10 17:40
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders', '0025_alter_fadan_shenqingren_shenfen'),
]
operations = [
migrations.CreateModel(
name='FadanFenhongLilv',
fields=[
('shenfen', models.IntegerField(choices=[(1, '客服'), (2, '售后'), (3, '管理员'), (4, '店铺'), (5, '商家')], primary_key=True, serialize=False, verbose_name='申请处罚人身份')),
('lilv', models.DecimalField(decimal_places=4, default=0.0, max_digits=5, verbose_name='分红费率')),
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
],
options={
'verbose_name': '罚款分红费率配置',
'verbose_name_plural': '罚款分红费率配置',
'db_table': 'fadan_fenhong_lilv',
},
),
migrations.AlterField(
model_name='fadan',
name='shenqingren_shenfen',
field=models.IntegerField(choices=[(1, '客服'), (2, '售后'), (3, '管理员'), (4, '店铺'), (5, '商家')], default=1, verbose_name='申请处罚人身份'),
),
migrations.AlterField(
model_name='fadanfenhong',
name='shenfen',
field=models.IntegerField(choices=[(1, '商家'), (2, '客服'), (3, '平台管理者'), (4, '店铺'), (5, '售后')], default=1, verbose_name='分红者身份'),
),
]

View File

@@ -0,0 +1,42 @@
# Generated by Django 4.2.27 on 2026-05-22 15:53
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders', '0026_fadanfenhonglilv_alter_fadan_shenqingren_shenfen_and_more'),
]
operations = [
migrations.CreateModel(
name='DingdanPeihu',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('dingdan_id', models.CharField(db_index=True, max_length=32, unique=True, verbose_name='订单ID')),
('zhudashou_id', models.CharField(db_index=True, max_length=32, verbose_name='主打手ID')),
('peihu1_id', models.CharField(blank=True, db_index=True, max_length=32, null=True, verbose_name='陪护1打手ID')),
('peihu2_id', models.CharField(blank=True, db_index=True, max_length=32, null=True, verbose_name='陪护2打手ID')),
('zhuangtai', models.IntegerField(default=1, verbose_name='陪护订单状态')),
('peihu_xuqiu_shuliang', models.IntegerField(default=1, verbose_name='陪护需求数量')),
('yongjin_yaoqiu', models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True, verbose_name='抢单佣金要求')),
('peihu1_dengji_xuqiu', models.PositiveIntegerField(blank=True, null=True, verbose_name='陪护1等级需求(称号ID)')),
('peihu2_dengji_xuqiu', models.PositiveIntegerField(blank=True, null=True, verbose_name='陪护2等级需求(称号ID)')),
('peihu1_zhadan_danze', models.CharField(blank=True, max_length=10, null=True, verbose_name='陪护1炸单担责比例')),
('peihu2_zhadan_danze', models.CharField(blank=True, max_length=10, null=True, verbose_name='陪护2炸单担责比例')),
('peihu1_fenhong', models.CharField(blank=True, max_length=10, null=True, verbose_name='陪护1分红比例')),
('peihu2_fenhong', models.CharField(blank=True, max_length=10, null=True, verbose_name='陪护2分红比例')),
('zhiding_peihu1', models.CharField(blank=True, max_length=32, null=True, verbose_name='指定陪护1 ID')),
('zhiding_peihu2', models.CharField(blank=True, max_length=32, null=True, verbose_name='指定陪护2 ID')),
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
],
options={
'verbose_name': '陪护订单',
'verbose_name_plural': '陪护订单',
'db_table': 'dingdan_peihu',
'indexes': [models.Index(fields=['zhudashou_id'], name='dingdan_pei_zhudash_583f4e_idx'), models.Index(fields=['peihu1_id'], name='dingdan_pei_peihu1__728279_idx'), models.Index(fields=['peihu2_id'], name='dingdan_pei_peihu2__77e45e_idx'), models.Index(fields=['zhuangtai'], name='dingdan_pei_zhuangt_22eaf6_idx')],
},
),
]

View File

@@ -0,0 +1,18 @@
# Generated by Django 4.2.27 on 2026-05-29 17:23
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders', '0027_dingdanpeihu'),
]
operations = [
migrations.AddField(
model_name='dingdanshangjia',
name='shangyige_dingdan_id',
field=models.CharField(blank=True, max_length=32, null=True, verbose_name='上一个订单ID'),
),
]

View File

@@ -0,0 +1,18 @@
# Generated by Django 4.2.27 on 2026-05-31 22:34
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders', '0028_dingdanshangjia_shangyige_dingdan_id'),
]
operations = [
migrations.AddField(
model_name='fadanfenhong',
name='is_individual_rate',
field=models.BooleanField(default=False, verbose_name='是否单独开启分红利率'),
),
]

View File

@@ -0,0 +1,18 @@
# Generated by Django 4.2.27 on 2026-06-01 00:30
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders', '0029_fadanfenhong_is_individual_rate'),
]
operations = [
migrations.AddField(
model_name='fadan',
name='shenqingren_fenhong_jine',
field=models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name='申请人分红金额'),
),
]

View File

@@ -0,0 +1,18 @@
# Generated by Django 4.2.27 on 2026-06-12 01:29
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders', '0030_fadan_shenqingren_fenhong_jine'),
]
operations = [
migrations.AddField(
model_name='dingdan',
name='guanshi_fencheng',
field=models.DecimalField(blank=True, decimal_places=2, default=0, max_digits=10, null=True, verbose_name='管事分成'),
),
]

View File

@@ -0,0 +1,43 @@
# Generated by Django 4.2.27 on 2026-06-15 01:42
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('orders', '0031_dingdan_guanshi_fencheng'),
]
operations = [
migrations.DeleteModel(
name='CrossPlatformOrderData',
),
migrations.DeleteModel(
name='PreSettlement',
),
migrations.RemoveField(
model_name='dingdan',
name='dispatch_type',
),
migrations.RemoveField(
model_name='dingdan',
name='is_cross',
),
migrations.RemoveField(
model_name='dingdan',
name='partner_club_id',
),
migrations.RemoveField(
model_name='dingdan',
name='partner_order_id',
),
migrations.RemoveField(
model_name='dingdanshangjia',
name='partner_yonghu_id',
),
migrations.RemoveField(
model_name='fadan',
name='partner_club_id',
),
]

View File

@@ -1,4 +1,4 @@
# Generated by Django 4.2.27 on 2026-06-17 01:32
# Generated by Django 5.2.10 on 2026-01-14 19:59
from django.db import migrations, models
@@ -11,68 +11,6 @@ class Migration(migrations.Migration):
]
operations = [
migrations.CreateModel(
name='Czjilu',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('dingdan_id', models.CharField(db_index=True, max_length=32, unique=True, verbose_name='订单ID')),
('huiyuan_id', models.CharField(blank=True, max_length=6, null=True, verbose_name='会员ID')),
('zhuangtai', models.IntegerField(blank=True, null=True, verbose_name='订单状态')),
('yonghuid', models.CharField(db_index=True, max_length=7, verbose_name='用户ID')),
('jine', models.DecimalField(decimal_places=2, max_digits=10, verbose_name='订单金额')),
('leixing', models.IntegerField(blank=True, null=True, verbose_name='充值类型1:会员2:押金,3:积分,4:商家')),
('shuoming', models.CharField(blank=True, max_length=100, null=True, verbose_name='订单说明')),
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
],
options={
'verbose_name': '充值记录订单',
'verbose_name_plural': '充值记录订单',
'db_table': 'czjilu',
},
),
migrations.CreateModel(
name='DuociFenhong',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('huiyuan', models.CharField(max_length=10, verbose_name='会员ID')),
('yonghuid', models.CharField(db_index=True, max_length=7, verbose_name='管事ID')),
('cishu', models.PositiveIntegerField(verbose_name='分红次数')),
('guanshi_fenhong', models.DecimalField(decimal_places=2, default=0.0, max_digits=10, verbose_name='管事分红金额')),
('zuzhang_fenhong', 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='更新时间')),
],
options={
'verbose_name': '多次分红配置',
'verbose_name_plural': '多次分红配置',
'db_table': 'duoci_fenhong',
},
),
migrations.CreateModel(
name='Gsfenhong',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('dingdan_id', models.CharField(max_length=32, unique=True, verbose_name='订单ID')),
('guanshi', models.CharField(db_index=True, max_length=7, verbose_name='管事ID')),
('dashouid', models.CharField(db_index=True, max_length=7, verbose_name='打手ID')),
('shuoming', models.CharField(blank=True, max_length=100, null=True, verbose_name='订单说明')),
('fenhong', models.DecimalField(decimal_places=2, max_digits=10, verbose_name='订单分红金额')),
('avatar', models.CharField(blank=True, max_length=500, null=True, verbose_name='打手头像')),
('nicheng', models.CharField(max_length=50, null=True, verbose_name='打手昵称')),
('zuzhang_id', models.CharField(blank=True, db_index=True, max_length=7, null=True, verbose_name='组长ID')),
('zuzhang_fenhong', models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True, verbose_name='组长分红金额')),
('fenhong_leixing', models.PositiveSmallIntegerField(choices=[(1, '会员分红'), (2, '押金分红'), (3, '商家订单分红')], default=1, verbose_name='分红类型')),
('huiyuan_id', models.CharField(blank=True, max_length=6, null=True, verbose_name='会员ID')),
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
],
options={
'verbose_name': '管事分红记录',
'verbose_name_plural': '管事分红记录',
'db_table': 'gsfenhong',
},
),
migrations.CreateModel(
name='Huiyuan',
fields=[
@@ -82,7 +20,6 @@ class Migration(migrations.Migration):
('jtjieshao', models.TextField(blank=True, null=True, verbose_name='会员规则介绍')),
('jiage', models.DecimalField(decimal_places=2, default=0.0, max_digits=10, verbose_name='会员价格')),
('guanshifc', models.DecimalField(decimal_places=2, default=0.0, max_digits=10, verbose_name='管事分成')),
('zuzhangfc', models.DecimalField(decimal_places=2, default=0.0, max_digits=10, verbose_name='组长分成')),
('goumai_cishu', models.PositiveIntegerField(default=0, verbose_name='购买次数')),
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
@@ -128,16 +65,9 @@ class Migration(migrations.Migration):
('yaoqiuleixing', models.PositiveIntegerField(blank=True, null=True, verbose_name='抢单要求类型')),
('huiyuan_id', models.CharField(blank=True, max_length=6, null=True, verbose_name='会员ID')),
('yongjin', models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True, verbose_name='佣金要求')),
('kaioi_ewai_dashou_fencheng', models.BooleanField(default=False, verbose_name='是否开启打手额外分成')),
('ewai_dashou_fencheng', models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True, verbose_name='打手额外分成金额')),
('tupian_url', models.CharField(blank=True, max_length=500, null=True, verbose_name='商品图片URL')),
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, verbose_name='更改时间')),
('paixu', models.IntegerField(default=0, verbose_name='排序权重')),
('shenhezhuangtai', models.IntegerField(default=1, help_text='1=正常, 2=审核专用', verbose_name='审核状态')),
('shangjia_zhuangtai', models.BooleanField(default=True, verbose_name='是否上架')),
('fengjin_zhuangtai', models.BooleanField(default=True, verbose_name='是否封禁')),
('shenhe_zhuangtai', models.BooleanField(default=False, help_text='True=审核通过False=未审核', verbose_name='平台审核状态')),
],
options={
'verbose_name': '商品',
@@ -154,8 +84,6 @@ class Migration(migrations.Migration):
('yongjin', models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True, verbose_name='佣金要求')),
('jieshao', models.CharField(blank=True, max_length=45, null=True, verbose_name='类型介绍')),
('tupian_url', models.CharField(blank=True, max_length=500, null=True, verbose_name='类型图片URL')),
('paixu', models.IntegerField(default=0, verbose_name='排序权重')),
('shenhezhuangtai', models.IntegerField(default=1, help_text='1=正常, 2=审核专用', verbose_name='审核状态')),
],
options={
'verbose_name': '商品类型',
@@ -163,41 +91,12 @@ class Migration(migrations.Migration):
'db_table': 'shangpin_leixing',
},
),
migrations.CreateModel(
name='ShangpinMeiriTongji',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('riqi', models.DateField(db_index=True, verbose_name='统计日期')),
('nian', models.PositiveSmallIntegerField(verbose_name='年份')),
('yue', models.PositiveSmallIntegerField(verbose_name='月份')),
('ri', models.PositiveSmallIntegerField(verbose_name='')),
('diandan_zongliang', models.PositiveIntegerField(default=0, verbose_name='点单总量')),
('diandan_zonge', models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name='点单总额')),
('chengjiao_zongliang', models.PositiveIntegerField(default=0, verbose_name='成交总量')),
('chengjiao_zonge', models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name='成交总额')),
('tuikuan_zongliang', models.PositiveIntegerField(default=0, verbose_name='退款总量')),
('tuikuan_zonge', models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name='退款总额')),
('pingtai_shouyi', models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name='平台收益')),
('dianpu_zongshouyi', models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name='店铺总收益')),
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
],
options={
'verbose_name': '商品每日统计',
'verbose_name_plural': '商品每日统计',
'db_table': 'shangpin_meiri_tongji',
},
),
migrations.CreateModel(
name='ShangpinZhuanqu',
fields=[
('id', models.AutoField(primary_key=True, serialize=False, verbose_name='专区ID')),
('mingzi', models.CharField(blank=True, max_length=45, null=True, verbose_name='专区名称')),
('leixing_id', models.PositiveIntegerField(verbose_name='类型ID')),
('paixu', models.IntegerField(default=0, verbose_name='排序权重')),
('shenhezhuangtai', models.IntegerField(default=1, help_text='1=正常, 2=审核专用', verbose_name='审核状态')),
('shangjia_zhuangtai', models.BooleanField(default=True, verbose_name='是否上架')),
('fengjin_zhuangtai', models.BooleanField(default=True, verbose_name='是否封禁')),
],
options={
'verbose_name': '商品专区',
@@ -205,4 +104,46 @@ class Migration(migrations.Migration):
'db_table': 'shangpin_zhuanqu',
},
),
migrations.CreateModel(
name='Czjilu',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('dingdan_id', models.CharField(db_index=True, max_length=32, unique=True, verbose_name='订单ID')),
('huiyuan_id', models.CharField(blank=True, max_length=6, null=True, verbose_name='会员ID')),
('zhuangtai', models.IntegerField(blank=True, null=True, verbose_name='订单状态')),
('yonghuid', models.CharField(db_index=True, max_length=7, verbose_name='用户ID')),
('jine', models.DecimalField(decimal_places=2, max_digits=10, verbose_name='订单金额')),
('leixing', models.IntegerField(blank=True, null=True, verbose_name='充值类型1:会员2:押金,3:积分,4:商家')),
('shuoming', models.CharField(blank=True, max_length=100, null=True, verbose_name='订单说明')),
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
],
options={
'verbose_name': '充值记录订单',
'verbose_name_plural': '充值记录订单',
'db_table': 'czjilu',
'indexes': [models.Index(fields=['dingdan_id'], name='czjilu_dingdan_39bbd0_idx'), models.Index(fields=['yonghuid'], name='czjilu_yonghui_a0555f_idx')],
},
),
migrations.CreateModel(
name='Gsfenhong',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('dingdan_id', models.CharField(max_length=32, unique=True, verbose_name='订单ID')),
('guanshi', models.CharField(db_index=True, max_length=7, verbose_name='管事ID')),
('dashouid', models.CharField(db_index=True, max_length=7, unique=True, verbose_name='打手ID')),
('shuoming', models.CharField(blank=True, max_length=100, null=True, verbose_name='订单说明')),
('fenhong', models.DecimalField(decimal_places=2, max_digits=10, verbose_name='订单分红金额')),
('avatar', models.CharField(blank=True, max_length=500, null=True, verbose_name='打手头像')),
('nicheng', models.CharField(max_length=50, null=True, verbose_name='打手昵称')),
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
],
options={
'verbose_name': '管事分红记录',
'verbose_name_plural': '管事分红记录',
'db_table': 'gsfenhong',
'indexes': [models.Index(fields=['guanshi'], name='gsfenhong_guanshi_dc440f_idx'), models.Index(fields=['dashouid'], name='gsfenhong_dashoui_5473ca_idx')],
},
),
]

View File

@@ -0,0 +1,29 @@
# Generated by Django 4.2.27 on 2026-01-18 14:24
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('products', '0001_initial'),
]
operations = [
migrations.AlterUniqueTogether(
name='huiyuangoumai',
unique_together={('yonghu_id', 'huiyuan_id')},
),
migrations.AddIndex(
model_name='huiyuangoumai',
index=models.Index(fields=['yonghu_id'], name='huiyuangoum_yonghu__ba2138_idx'),
),
migrations.AddIndex(
model_name='huiyuangoumai',
index=models.Index(fields=['huiyuan_id'], name='huiyuangoum_huiyuan_35fe1d_idx'),
),
migrations.AddIndex(
model_name='huiyuangoumai',
index=models.Index(fields=['yonghu_id', 'huiyuan_id'], name='huiyuangoum_yonghu__21e6e1_idx'),
),
]

View File

@@ -0,0 +1,33 @@
# Generated by Django 4.2.27 on 2026-02-07 19:42
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('products', '0002_alter_huiyuangoumai_unique_together_and_more'),
]
operations = [
migrations.AddField(
model_name='shangpin',
name='paixu',
field=models.IntegerField(default=0, verbose_name='排序权重'),
),
migrations.AddField(
model_name='shangpinleixing',
name='paixu',
field=models.IntegerField(default=0, verbose_name='排序权重'),
),
migrations.AddField(
model_name='shangpinleixing',
name='shenhezhuangtai',
field=models.IntegerField(default=1, help_text='1=正常, 2=审核专用', verbose_name='审核状态'),
),
migrations.AddField(
model_name='shangpinzhuanqu',
name='paixu',
field=models.IntegerField(default=0, verbose_name='排序权重'),
),
]

View File

@@ -0,0 +1,23 @@
# Generated by Django 4.2.27 on 2026-02-09 15:38
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('products', '0003_shangpin_paixu_shangpinleixing_paixu_and_more'),
]
operations = [
migrations.AddField(
model_name='shangpin',
name='shenhezhuangtai',
field=models.IntegerField(default=1, help_text='1=正常, 2=审核专用', verbose_name='审核状态'),
),
migrations.AddField(
model_name='shangpinzhuanqu',
name='shenhezhuangtai',
field=models.IntegerField(default=1, help_text='1=正常, 2=审核专用', verbose_name='审核状态'),
),
]

View File

@@ -0,0 +1,18 @@
# Generated by Django 4.2.27 on 2026-02-27 15:22
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('products', '0004_shangpin_shenhezhuangtai_and_more'),
]
operations = [
migrations.AlterField(
model_name='gsfenhong',
name='dashouid',
field=models.CharField(db_index=True, max_length=7, verbose_name='打手ID'),
),
]

View File

@@ -0,0 +1,45 @@
# Generated by Django 4.2.27 on 2026-03-18 12:09
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('products', '0005_alter_gsfenhong_dashouid'),
]
operations = [
migrations.AddField(
model_name='gsfenhong',
name='huiyuan_id',
field=models.CharField(blank=True, max_length=6, null=True, verbose_name='会员ID'),
),
migrations.AddField(
model_name='huiyuan',
name='zuzhangfc',
field=models.DecimalField(decimal_places=2, default=0.0, max_digits=10, verbose_name='组长分成'),
),
migrations.CreateModel(
name='DuociFenhong',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('guanshi', models.CharField(db_index=True, max_length=7, verbose_name='管事ID')),
('zuzhang', models.CharField(blank=True, db_index=True, max_length=7, null=True, verbose_name='组长ID')),
('cishu', models.PositiveIntegerField(verbose_name='分红次数')),
('guanshi_fenhong', models.DecimalField(decimal_places=2, default=0.0, max_digits=10, verbose_name='管事分红金额')),
('zuzhang_fenhong', 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='更新时间')),
('huiyuan', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='products.huiyuan', verbose_name='会员')),
],
options={
'verbose_name': '多次分红配置',
'verbose_name_plural': '多次分红配置',
'db_table': 'duoci_fenhong',
'indexes': [models.Index(fields=['guanshi'], name='duoci_fenho_guanshi_b3de53_idx'), models.Index(fields=['zuzhang'], name='duoci_fenho_zuzhang_69997d_idx')],
'unique_together': {('huiyuan', 'guanshi', 'cishu')},
},
),
]

View File

@@ -0,0 +1,47 @@
# Generated by Django 4.2.27 on 2026-03-19 13:40
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('products', '0006_gsfenhong_huiyuan_id_huiyuan_zuzhangfc_duocifenhong'),
]
operations = [
migrations.RemoveIndex(
model_name='duocifenhong',
name='duoci_fenho_guanshi_b3de53_idx',
),
migrations.RemoveIndex(
model_name='duocifenhong',
name='duoci_fenho_zuzhang_69997d_idx',
),
migrations.RenameField(
model_name='duocifenhong',
old_name='guanshi',
new_name='yonghuid',
),
migrations.AlterUniqueTogether(
name='duocifenhong',
unique_together=set(),
),
migrations.AlterField(
model_name='duocifenhong',
name='huiyuan',
field=models.CharField(max_length=10, verbose_name='会员ID'),
),
migrations.AlterUniqueTogether(
name='duocifenhong',
unique_together={('huiyuan', 'yonghuid', 'cishu')},
),
migrations.AddIndex(
model_name='duocifenhong',
index=models.Index(fields=['yonghuid'], name='duoci_fenho_yonghui_db6a2f_idx'),
),
migrations.RemoveField(
model_name='duocifenhong',
name='zuzhang',
),
]

View File

@@ -0,0 +1,23 @@
# Generated by Django 4.2.27 on 2026-03-19 13:53
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('products', '0007_remove_duocifenhong_duoci_fenho_guanshi_b3de53_idx_and_more'),
]
operations = [
migrations.AddField(
model_name='gsfenhong',
name='zuzhang_fenhong',
field=models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True, verbose_name='组长分红金额'),
),
migrations.AddField(
model_name='gsfenhong',
name='zuzhang_id',
field=models.CharField(blank=True, db_index=True, max_length=7, null=True, verbose_name='组长ID'),
),
]

View File

@@ -0,0 +1,23 @@
# Generated by Django 4.2.27 on 2026-03-22 15:35
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('products', '0008_gsfenhong_zuzhang_fenhong_gsfenhong_zuzhang_id'),
]
operations = [
migrations.AddField(
model_name='shangpin',
name='ewai_dashou_fencheng',
field=models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True, verbose_name='打手额外分成金额'),
),
migrations.AddField(
model_name='shangpin',
name='kaioi_ewai_dashou_fencheng',
field=models.BooleanField(default=False, verbose_name='是否开启打手额外分成'),
),
]

View File

@@ -0,0 +1,18 @@
# Generated by Django 4.2.27 on 2026-03-24 17:34
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('products', '0009_shangpin_ewai_dashou_fencheng_and_more'),
]
operations = [
migrations.AddField(
model_name='shangpinleixing',
name='is_cross_enabled',
field=models.BooleanField(default=False, verbose_name='是否开启平台互通'),
),
]

View File

@@ -0,0 +1,60 @@
# Generated by Django 4.2.27 on 2026-04-21 12:36
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('shop', '0001_initial'),
('products', '0010_shangpinleixing_is_cross_enabled'),
]
operations = [
migrations.AddField(
model_name='shangpin',
name='dianpu',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='shop.dianpu', verbose_name='所属店铺'),
),
migrations.AddField(
model_name='shangpin',
name='dianpu_leixing',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='shop.shangpinleixingdianpu', verbose_name='店铺商品类型'),
),
migrations.AddField(
model_name='shangpin',
name='fengjin_zhuangtai',
field=models.BooleanField(default=True, verbose_name='是否封禁'),
),
migrations.AddField(
model_name='shangpin',
name='shangjia_zhuangtai',
field=models.BooleanField(default=True, verbose_name='是否上架'),
),
migrations.AddField(
model_name='shangpin',
name='shenhe_zhuangtai',
field=models.BooleanField(default=False, help_text='True=审核通过False=未审核', verbose_name='平台审核状态'),
),
migrations.AddField(
model_name='shangpinzhuanqu',
name='dianpu',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='shop.dianpu', verbose_name='所属店铺'),
),
migrations.AddField(
model_name='shangpinzhuanqu',
name='dianpu_leixing',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='shop.shangpinleixingdianpu', verbose_name='店铺商品类型'),
),
migrations.AddField(
model_name='shangpinzhuanqu',
name='fengjin_zhuangtai',
field=models.BooleanField(default=True, verbose_name='是否封禁'),
),
migrations.AddField(
model_name='shangpinzhuanqu',
name='shangjia_zhuangtai',
field=models.BooleanField(default=True, verbose_name='是否上架'),
),
]

View File

@@ -0,0 +1,42 @@
# Generated by Django 4.2.27 on 2026-04-23 14:56
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('products', '0011_shangpin_dianpu_shangpin_dianpu_leixing_and_more'),
]
operations = [
migrations.CreateModel(
name='ShangpinMeiriTongji',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('riqi', models.DateField(db_index=True, verbose_name='统计日期')),
('nian', models.PositiveSmallIntegerField(verbose_name='年份')),
('yue', models.PositiveSmallIntegerField(verbose_name='月份')),
('ri', models.PositiveSmallIntegerField(verbose_name='')),
('diandan_zongliang', models.PositiveIntegerField(default=0, verbose_name='点单总量')),
('diandan_zonge', models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name='点单总额')),
('chengjiao_zongliang', models.PositiveIntegerField(default=0, verbose_name='成交总量')),
('chengjiao_zonge', models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name='成交总额')),
('tuikuan_zongliang', models.PositiveIntegerField(default=0, verbose_name='退款总量')),
('tuikuan_zonge', models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name='退款总额')),
('pingtai_shouyi', models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name='平台收益')),
('dianpu_zongshouyi', models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name='店铺总收益')),
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
('shangpin', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='products.shangpin', verbose_name='商品ID')),
],
options={
'verbose_name': '商品每日统计',
'verbose_name_plural': '商品每日统计',
'db_table': 'shangpin_meiri_tongji',
'indexes': [models.Index(fields=['shangpin', 'riqi'], name='shangpin_me_shangpi_d27e5c_idx'), models.Index(fields=['nian', 'yue', 'ri'], name='shangpin_me_nian_e3b409_idx')],
'unique_together': {('shangpin', 'riqi')},
},
),
]

View File

@@ -0,0 +1,20 @@
# Generated by Django 4.2.27 on 2026-05-14 04:25
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('rank', '0003_alter_dashoubiaoxian_bankuai'),
('products', '0012_shangpinmeiritongji'),
]
operations = [
migrations.AddField(
model_name='shangpinleixing',
name='bankuai',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='rank.bankuai', verbose_name='所属板块'),
),
]

View File

@@ -0,0 +1,20 @@
# Generated by Django 4.2.27 on 2026-05-16 16:51
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('rank', '0010_kaohejilufeiyong'),
('products', '0013_shangpinleixing_bankuai'),
]
operations = [
migrations.AddField(
model_name='huiyuan',
name='bankuai',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='rank.bankuai', verbose_name='所属板块'),
),
]

View File

@@ -0,0 +1,18 @@
# Generated by Django 4.2.27 on 2026-06-12 01:29
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('products', '0014_huiyuan_bankuai'),
]
operations = [
migrations.AddField(
model_name='gsfenhong',
name='fenhong_leixing',
field=models.PositiveSmallIntegerField(choices=[(1, '会员分红'), (2, '押金分红'), (3, '商家订单分红')], default=1, verbose_name='分红类型'),
),
]

View File

@@ -0,0 +1,17 @@
# Generated by Django 4.2.27 on 2026-06-15 01:42
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('products', '0015_gsfenhong_fenhong_leixing'),
]
operations = [
migrations.RemoveField(
model_name='shangpinleixing',
name='is_cross_enabled',
),
]

View File

@@ -1,4 +1,4 @@
# Generated by Django 4.2.27 on 2026-06-17 01:32
# Generated by Django 4.2.27 on 2026-05-12 02:17
from django.conf import settings
from django.db import migrations, models
@@ -11,7 +11,7 @@ class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('orders', '0001_initial'),
('orders', '0026_fadanfenhonglilv_alter_fadan_shenqingren_shenfen_and_more'),
]
operations = [
@@ -37,8 +37,6 @@ class Migration(migrations.Migration):
('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='创建时间')),
('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='所属板块(空=全板块通用)')),
],
options={
@@ -48,107 +46,19 @@ class Migration(migrations.Migration):
},
),
migrations.CreateModel(
name='KaohePayTemp',
name='YonghuChenghao',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('dingdan_id', models.CharField(db_index=True, max_length=50, unique=True, verbose_name='订单ID')),
('yonghuid', models.CharField(db_index=True, max_length=7, 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(blank=True, max_length=32, null=True, verbose_name='原记录ID(再次申请时)')),
('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='创建时间')),
('huode_time', models.DateTimeField(auto_now_add=True, verbose_name='获得时间')),
('chenghao', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rank.chenghao', verbose_name='称号')),
('yonghu', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='chenghao_list', to=settings.AUTH_USER_MODEL, verbose_name='用户')),
],
options={
'verbose_name': '考核支付临时表',
'verbose_name_plural': '考核支付临时表',
'db_table': 'kaohe_pay_temp',
},
),
migrations.CreateModel(
name='ShenheJilu',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('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='审核状态')),
('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='更新时间')),
('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')),
('dashou_youxi_id', models.CharField(blank=True, max_length=50, null=True, verbose_name='打手游戏ID')),
('dashou_beizhu', models.TextField(blank=True, null=True, verbose_name='打手备注')),
('bankuai', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='rank.bankuai', verbose_name='审核板块')),
('chenghao', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='rank.chenghao', verbose_name='审核标签')),
],
options={
'verbose_name': '审核记录',
'verbose_name_plural': '审核记录',
'db_table': 'shenhe_jilu',
},
),
migrations.CreateModel(
name='KaoheJujueJilu',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('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='创建时间')),
('jilu', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rank.shenhejilu', to_field='jilu_id', verbose_name='审核记录')),
],
options={
'verbose_name': '拒绝原因记录',
'verbose_name_plural': '拒绝原因记录',
'db_table': 'kaohe_jujue_jilu',
},
),
migrations.CreateModel(
name='KaoheJiluFeiyong',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('cishu', models.IntegerField(verbose_name='第几次考核')),
('jine', models.DecimalField(decimal_places=2, max_digits=10, verbose_name='缴纳金额')),
('jilu', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rank.shenhejilu', to_field='jilu_id', verbose_name='考核记录')),
],
options={
'verbose_name': '考核记录费用',
'verbose_name_plural': '考核记录费用',
'db_table': 'kaohe_jilu_feiyong',
},
),
migrations.CreateModel(
name='KaoheguanBankuai',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('kaoheguan_id', models.CharField(db_index=True, max_length=7, verbose_name='考核官用户ID')),
('bankuai', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rank.bankuai', verbose_name='所属板块')),
],
options={
'verbose_name': '考核官板块关联',
'verbose_name_plural': '考核官板块关联',
'db_table': 'kaoheguan_bankuai',
},
),
migrations.CreateModel(
name='KaoheCishuFeiyong',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('cishu', models.IntegerField(verbose_name='第几次考核')),
('feiyong', models.DecimalField(decimal_places=2, max_digits=10, verbose_name='需缴纳金额')),
('chenghao', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rank.chenghao', verbose_name='标签')),
],
options={
'verbose_name': '考核次数费用',
'verbose_name_plural': '考核次数费用',
'db_table': 'kaohe_cishu_feiyong',
'verbose_name': '用户称号关联',
'verbose_name_plural': '用户称号关联',
'db_table': 'yonghu_chenghao',
'indexes': [models.Index(fields=['yonghu', 'chenghao'], name='yonghu_chen_yonghu__cac0a1_idx')],
'unique_together': {('yonghu', 'chenghao')},
},
),
migrations.CreateModel(
@@ -170,20 +80,7 @@ class Migration(migrations.Migration):
'verbose_name': '经验变动记录',
'verbose_name_plural': '经验变动记录',
'db_table': 'jingyan_jilu',
},
),
migrations.CreateModel(
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='创建时间')),
('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='订单')),
],
options={
'verbose_name': '订单需求标签',
'verbose_name_plural': '订单需求标签',
'db_table': 'dingdan_biaoqian',
'indexes': [models.Index(fields=['yonghu_id', 'bankuai', 'create_time'], name='jingyan_jil_yonghu__786992_idx')],
},
),
migrations.CreateModel(
@@ -197,79 +94,16 @@ class Migration(migrations.Migration):
('create_time', 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='所属板块')),
('dingdan', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='biaoxian', to='orders.dingdan', to_field='dingdan_id', verbose_name='关联订单')),
('bankuai', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='rank.bankuai', verbose_name='所属板块')),
('dingdan', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='biaoxian', to='orders.dingdan', verbose_name='关联订单')),
],
options={
'verbose_name': '打手订单表现',
'verbose_name_plural': '打手订单表现',
'db_table': 'dashou_biaoxian',
'indexes': [models.Index(fields=['dashou_id', 'bankuai', 'create_time'], name='dashou_biao_dashou__36e1c3_idx')],
},
),
migrations.CreateModel(
name='YonghuChenghao',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('huode_time', models.DateTimeField(auto_now_add=True, verbose_name='获得时间')),
('chenghao', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rank.chenghao', verbose_name='称号')),
('yonghu', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='chenghao_list', to=settings.AUTH_USER_MODEL, verbose_name='用户')),
],
options={
'verbose_name': '用户称号关联',
'verbose_name_plural': '用户称号关联',
'db_table': 'yonghu_chenghao',
'indexes': [models.Index(fields=['yonghu', 'chenghao'], name='yonghu_chen_yonghu__cac0a1_idx')],
'unique_together': {('yonghu', 'chenghao')},
},
),
migrations.AddIndex(
model_name='shenhejilu',
index=models.Index(fields=['shenqingren_id', 'zhuangtai'], name='shenhe_jilu_shenqin_502e9b_idx'),
),
migrations.AddIndex(
model_name='shenhejilu',
index=models.Index(fields=['shenheguan_id'], name='shenhe_jilu_shenheg_5c9959_idx'),
),
migrations.AddIndex(
model_name='kaohejujuejilu',
index=models.Index(fields=['jilu_id', 'cishu'], name='kaohe_jujue_jilu_id_1f2b29_idx'),
),
migrations.AlterUniqueTogether(
name='kaohejilufeiyong',
unique_together={('jilu', 'cishu')},
),
migrations.AddIndex(
model_name='kaoheguanbankuai',
index=models.Index(fields=['kaoheguan_id'], name='kaoheguan_b_kaohegu_00f7c5_idx'),
),
migrations.AlterUniqueTogether(
name='kaoheguanbankuai',
unique_together={('kaoheguan_id', 'bankuai')},
),
migrations.AddIndex(
model_name='kaohecishufeiyong',
index=models.Index(fields=['chenghao', 'cishu'], name='kaohe_cishu_chengha_edc272_idx'),
),
migrations.AlterUniqueTogether(
name='kaohecishufeiyong',
unique_together={('chenghao', 'cishu')},
),
migrations.AddIndex(
model_name='jingyanjilu',
index=models.Index(fields=['yonghu_id', 'bankuai', 'create_time'], name='jingyan_jil_yonghu__786992_idx'),
),
migrations.AddIndex(
model_name='dingdanbiaoqian',
index=models.Index(fields=['dingdan'], name='dingdan_bia_dingdan_4d046b_idx'),
),
migrations.AlterUniqueTogether(
name='dingdanbiaoqian',
unique_together={('dingdan', 'chenghao')},
),
migrations.AddIndex(
model_name='dashoubiaoxian',
index=models.Index(fields=['dashou_id', 'bankuai', 'create_time'], name='dashou_biao_dashou__36e1c3_idx'),
),
migrations.AddIndex(
model_name='chenghao',
index=models.Index(fields=['leixing', 'bankuai'], name='chenghao_leixing_8f4371_idx'),

View File

@@ -0,0 +1,20 @@
# Generated by Django 4.2.27 on 2026-05-12 02:25
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('orders', '0026_fadanfenhonglilv_alter_fadan_shenqingren_shenfen_and_more'),
('rank', '0001_initial'),
]
operations = [
migrations.AlterField(
model_name='dashoubiaoxian',
name='dingdan',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='biaoxian', to='orders.dingdan', to_field='dingdan_id', verbose_name='关联订单'),
),
]

View File

@@ -0,0 +1,19 @@
# Generated by Django 4.2.27 on 2026-05-12 02:32
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('rank', '0002_alter_dashoubiaoxian_dingdan'),
]
operations = [
migrations.AlterField(
model_name='dashoubiaoxian',
name='bankuai',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, to='rank.bankuai', verbose_name='所属板块'),
),
]

View File

@@ -0,0 +1,26 @@
# dengji/migrations/0004_dingdanbiaoqian.py
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('orders', '0026_fadanfenhonglilv_alter_fadan_shenqingren_shenfen_and_more'), # 保持你之前的依赖
('rank', '0003_alter_dashoubiaoxian_bankuai'),
]
operations = [
migrations.RunSQL(
sql="""
CREATE TABLE IF NOT EXISTS dingdan_biaoqian (
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
create_time DATETIME(6) NOT NULL,
chenghao_id BIGINT NOT NULL,
dingdan_id VARCHAR(32) NOT NULL,
CONSTRAINT fk_dingdanbiaoqian_chenghao FOREIGN KEY (chenghao_id) REFERENCES chenghao (id),
CONSTRAINT fk_dingdanbiaoqian_dingdan FOREIGN KEY (dingdan_id) REFERENCES dingdan (dingdan_id),
UNIQUE KEY uniq_dingdan_chenghao (dingdan_id, chenghao_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
""",
reverse_sql="DROP TABLE IF EXISTS dingdan_biaoqian;"
),
]

View File

@@ -0,0 +1,36 @@
# dengji/migrations/0005_fix_state.py
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('orders', '0026_fadanfenhonglilv_alter_fadan_shenqingren_shenfen_and_more'), # 保持你之前的依赖
('rank', '0004_dingdanbiaoqian'),
]
operations = [
migrations.SeparateDatabaseAndState(
database_operations=[], # 表已存在,不做任何数据库操作
state_operations=[
migrations.CreateModel(
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='创建时间')),
('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='订单')),
],
options={
'verbose_name': '订单需求标签',
'verbose_name_plural': '订单需求标签',
'db_table': 'dingdan_biaoqian',
'unique_together': {('dingdan', 'chenghao')},
'indexes': [
models.Index(fields=['dingdan'], name='dingdan_bia_dingdan_4d046b_idx'),
],
},
),
],
),
]

View File

@@ -0,0 +1,35 @@
# Generated by Django 4.2.27 on 2026-05-14 18:42
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('rank', '0005_fix_state'),
]
operations = [
migrations.CreateModel(
name='ShenheJilu',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('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, '未通过')], 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='更新时间')),
('bankuai', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='rank.bankuai', verbose_name='审核板块')),
('chenghao', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='rank.chenghao', verbose_name='审核标签')),
],
options={
'verbose_name': '审核记录',
'verbose_name_plural': '审核记录',
'db_table': 'shenhe_jilu',
'indexes': [models.Index(fields=['shenqingren_id', 'zhuangtai'], name='shenhe_jilu_shenqin_502e9b_idx'), models.Index(fields=['shenheguan_id'], name='shenhe_jilu_shenheg_5c9959_idx')],
},
),
]

View File

@@ -0,0 +1,29 @@
# Generated by Django 4.2.27 on 2026-05-15 00:31
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('rank', '0006_shenhejilu'),
]
operations = [
migrations.CreateModel(
name='KaoheguanBankuai',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('kaoheguan_id', models.CharField(db_index=True, max_length=7, verbose_name='考核官用户ID')),
('bankuai', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rank.bankuai', verbose_name='所属板块')),
],
options={
'verbose_name': '考核官板块关联',
'verbose_name_plural': '考核官板块关联',
'db_table': 'kaoheguan_bankuai',
'indexes': [models.Index(fields=['kaoheguan_id'], name='kaoheguan_b_kaohegu_00f7c5_idx')],
'unique_together': {('kaoheguan_id', 'bankuai')},
},
),
]

View File

@@ -0,0 +1,48 @@
# Generated by Django 4.2.27 on 2026-05-15 04:16
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('rank', '0007_kaoheguanbankuai'),
]
operations = [
migrations.AddField(
model_name='chenghao',
name='kaohe_guize',
field=models.TextField(blank=True, null=True, verbose_name='考核规则'),
),
migrations.AddField(
model_name='shenhejilu',
name='dashou_beizhu',
field=models.TextField(blank=True, null=True, verbose_name='打手备注'),
),
migrations.AddField(
model_name='shenhejilu',
name='dashou_youxi_id',
field=models.CharField(blank=True, max_length=50, null=True, verbose_name='打手游戏ID'),
),
migrations.AddField(
model_name='shenhejilu',
name='guize_neirong',
field=models.TextField(blank=True, null=True, verbose_name='规则内容'),
),
migrations.AddField(
model_name='shenhejilu',
name='jilu_id',
field=models.CharField(db_index=True, max_length=32, null=True, verbose_name='记录ID'),
),
migrations.AddField(
model_name='shenhejilu',
name='shenheguan_youxi_id',
field=models.CharField(blank=True, max_length=50, null=True, verbose_name='审核官游戏ID'),
),
migrations.AlterField(
model_name='shenhejilu',
name='zhuangtai',
field=models.IntegerField(choices=[(0, '审核中'), (1, '通过'), (2, '未通过'), (3, '待审核')], default=0, verbose_name='审核状态'),
),
]

View File

@@ -0,0 +1,58 @@
# Generated by Django 4.2.27 on 2026-05-15 13:20
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('rank', '0008_chenghao_kaohe_guize_shenhejilu_dashou_beizhu_and_more'),
]
operations = [
migrations.AddField(
model_name='chenghao',
name='kaioi_jinpai',
field=models.BooleanField(default=False, verbose_name='是否同时开启金牌'),
),
migrations.AlterField(
model_name='shenhejilu',
name='jilu_id',
field=models.CharField(db_index=True, default='Sh111', max_length=32, unique=True, verbose_name='记录ID'),
preserve_default=False,
),
migrations.CreateModel(
name='KaoheJujueJilu',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('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='创建时间')),
('jilu', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rank.shenhejilu', to_field='jilu_id', verbose_name='审核记录')),
],
options={
'verbose_name': '拒绝原因记录',
'verbose_name_plural': '拒绝原因记录',
'db_table': 'kaohe_jujue_jilu',
'indexes': [models.Index(fields=['jilu_id', 'cishu'], name='kaohe_jujue_jilu_id_1f2b29_idx')],
},
),
migrations.CreateModel(
name='KaoheCishuFeiyong',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('cishu', models.IntegerField(verbose_name='第几次考核')),
('feiyong', models.DecimalField(decimal_places=2, max_digits=10, verbose_name='需缴纳金额')),
('chenghao', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rank.chenghao', verbose_name='标签')),
],
options={
'verbose_name': '考核次数费用',
'verbose_name_plural': '考核次数费用',
'db_table': 'kaohe_cishu_feiyong',
'indexes': [models.Index(fields=['chenghao', 'cishu'], name='kaohe_cishu_chengha_edc272_idx')],
'unique_together': {('chenghao', 'cishu')},
},
),
]

View File

@@ -0,0 +1,29 @@
# Generated by Django 4.2.27 on 2026-05-15 16:10
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('rank', '0009_chenghao_kaioi_jinpai_alter_shenhejilu_jilu_id_and_more'),
]
operations = [
migrations.CreateModel(
name='KaoheJiluFeiyong',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('cishu', models.IntegerField(verbose_name='第几次考核')),
('jine', models.DecimalField(decimal_places=2, max_digits=10, verbose_name='缴纳金额')),
('jilu', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rank.shenhejilu', to_field='jilu_id', verbose_name='考核记录')),
],
options={
'verbose_name': '考核记录费用',
'verbose_name_plural': '考核记录费用',
'db_table': 'kaohe_jilu_feiyong',
'unique_together': {('jilu', 'cishu')},
},
),
]

View File

@@ -0,0 +1,35 @@
# Generated by Django 4.2.27 on 2026-05-19 13:35
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('rank', '0010_kaohejilufeiyong'),
]
operations = [
migrations.CreateModel(
name='KaohePayTemp',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('dingdan_id', models.CharField(db_index=True, max_length=50, unique=True, verbose_name='订单ID')),
('yonghuid', models.CharField(db_index=True, max_length=7, 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(blank=True, max_length=32, null=True, verbose_name='原记录ID(再次申请时)')),
('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='创建时间')),
],
options={
'verbose_name': '考核支付临时表',
'verbose_name_plural': '考核支付临时表',
'db_table': 'kaohe_pay_temp',
},
),
]

View File

@@ -0,0 +1,18 @@
# Generated by Django 4.2.27 on 2026-04-21 13:04
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('shop', '0001_initial'),
]
operations = [
migrations.AlterField(
model_name='yonghupingzheng',
name='yonghu',
field=models.CharField(db_index=True, max_length=7, unique=True, verbose_name='关联用户ID'),
),
]

View File

@@ -0,0 +1,85 @@
# Generated by Django 4.2.27 on 2026-04-23 14:56
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('shop', '0002_alter_yonghupingzheng_yonghu'),
]
operations = [
migrations.CreateModel(
name='DianpuMorenPeizhi',
fields=[
('id', models.PositiveSmallIntegerField(default=1, editable=False, primary_key=True, serialize=False)),
('moren_choucheng_feilv', models.DecimalField(decimal_places=4, default=0.1, max_digits=5, verbose_name='默认订单抽成费率小数0.1000=10%')),
('moren_tixian_xiane', models.DecimalField(decimal_places=2, default=1000.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='更新时间')),
],
options={
'verbose_name': '店铺默认配置',
'verbose_name_plural': '店铺默认配置',
'db_table': 'dianpu_moren_peizhi',
},
),
migrations.AddField(
model_name='dianpu',
name='kaiqi_meiri_xiane',
field=models.BooleanField(default=False, verbose_name='是否开启每日提现限额'),
),
migrations.AddField(
model_name='dianpu',
name='kaiqi_shouyi_choucheng',
field=models.BooleanField(default=False, verbose_name='是否开启店铺订单收益抽成'),
),
migrations.AddField(
model_name='dianpu',
name='ketixian_yue',
field=models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name='店铺可提现余额'),
),
migrations.AddField(
model_name='dianpu',
name='meiri_tixian_xiane',
field=models.DecimalField(blank=True, decimal_places=2, default=0.0, max_digits=10, null=True, verbose_name='店铺每日提现限额'),
),
migrations.AddField(
model_name='dianpu',
name='shouyi_choucheng_feilv',
field=models.DecimalField(blank=True, decimal_places=4, default=0.0, max_digits=5, null=True, verbose_name='店铺订单收益抽成费率小数如0.1000=10%'),
),
migrations.AddField(
model_name='dianpu',
name='zhengqu_zonge',
field=models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name='店铺赚取总额'),
),
migrations.CreateModel(
name='DianpuShouzhiMeiriTongji',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('dianpu_id', models.PositiveIntegerField(db_index=True, verbose_name='店铺ID')),
('riqi', models.DateField(db_index=True, verbose_name='统计日期')),
('nian', models.PositiveSmallIntegerField(verbose_name='年份')),
('yue', models.PositiveSmallIntegerField(verbose_name='月份')),
('ri', models.PositiveSmallIntegerField(verbose_name='')),
('xiadan_zongliang', models.PositiveIntegerField(default=0, verbose_name='下单总量')),
('xiadan_zonge', models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name='下单总额')),
('chengjiao_zongliang', models.PositiveIntegerField(default=0, verbose_name='成交总量')),
('chengjiao_zonge', models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name='成交总额')),
('tuikuan_zongliang', models.PositiveIntegerField(default=0, verbose_name='退款总量')),
('tuikuan_zonge', models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name='退款总额')),
('shouyi_zonge', models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name='收益总额')),
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
],
options={
'verbose_name': '店铺每日收支统计',
'verbose_name_plural': '店铺每日收支统计',
'db_table': 'dianpu_shouzhi_meiri_tongji',
'indexes': [models.Index(fields=['dianpu_id', 'riqi'], name='dianpu_shou_dianpu__bffdb2_idx'), models.Index(fields=['nian', 'yue', 'ri'], name='dianpu_shou_nian_a0f415_idx')],
'unique_together': {('dianpu_id', 'riqi')},
},
),
]

View File

@@ -0,0 +1,27 @@
# Generated by Django 4.2.27 on 2026-04-25 12:05
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('shop', '0003_dianpumorenpeizhi_dianpu_kaiqi_meiri_xiane_and_more'),
]
operations = [
migrations.CreateModel(
name='DianpuShangpinShenheShezhi',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('kaiqi_shenhe', models.BooleanField(default=False, verbose_name='是否开启商品审核模式')),
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
],
options={
'verbose_name': '商品审核模式配置',
'verbose_name_plural': '商品审核模式配置',
'db_table': 'dianpu_shangpin_shenhe_shezhi',
},
),
]

View File

@@ -0,0 +1,33 @@
# Generated by Django 4.2.27 on 2026-05-05 10:33
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('shop', '0004_dianpushangpinshenheshezhi'),
]
operations = [
migrations.AddField(
model_name='dianpu',
name='fenhong_choucheng_feilv',
field=models.DecimalField(blank=True, decimal_places=4, default=0.05, max_digits=5, null=True, verbose_name='上级分红抽成费率(默认5%)'),
),
migrations.AddField(
model_name='dianpu',
name='shangji_fenhong_leiji',
field=models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name='作为上级累计获得分红'),
),
migrations.AddField(
model_name='dianpu',
name='shangji_ketixian_fenhong',
field=models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name='作为上级可提现分红余额'),
),
migrations.AddField(
model_name='dianpu',
name='yaoqing_dianpu_id',
field=models.PositiveIntegerField(blank=True, db_index=True, null=True, verbose_name='邀请人店铺ID(上级)'),
),
]

View File

@@ -0,0 +1,38 @@
# Generated by Django 4.2.27 on 2026-05-10 18:17
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('shop', '0005_dianpu_fenhong_choucheng_feilv_and_more'),
]
operations = [
migrations.AddField(
model_name='dianpushouzhimeiritongji',
name='gei_shangji_cishu',
field=models.PositiveIntegerField(default=0, verbose_name='给上级分红次数'),
),
migrations.AddField(
model_name='dianpushouzhimeiritongji',
name='gei_shangji_zonge',
field=models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name='给上级分红总额'),
),
migrations.AddField(
model_name='dianpushouzhimeiritongji',
name='shangji_fenhong_cishu',
field=models.PositiveIntegerField(default=0, verbose_name='作为上级获得分红次数'),
),
migrations.AddField(
model_name='dianpushouzhimeiritongji',
name='shangji_fenhong_zonge',
field=models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name='作为上级获得分红总额'),
),
migrations.AddField(
model_name='dianpushouzhimeiritongji',
name='shangji_id',
field=models.PositiveIntegerField(blank=True, null=True, verbose_name='当天对应的上级店铺ID若无则为空'),
),
]

View File

@@ -0,0 +1,18 @@
# Generated by Django 4.2.27 on 2026-01-21 12:46
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('users', '0001_initial'),
]
operations = [
migrations.AddField(
model_name='adminprofile',
name='yaoqingma',
field=models.CharField(db_index=True, max_length=20, null=True, verbose_name='管理员邀请码'),
),
]

View File

@@ -0,0 +1,35 @@
# Generated by Django 4.2.27 on 2026-01-24 23:30
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('users', '0002_adminprofile_yaoqingma'),
]
operations = [
migrations.CreateModel(
name='RankingRecord',
fields=[
('id', models.AutoField(primary_key=True, serialize=False, verbose_name='ID')),
('zhouqi', models.IntegerField(choices=[(1, '日榜'), (2, '月榜')], verbose_name='周期类型')),
('tongji_date', models.DateField(db_index=True, verbose_name='统计日期')),
('shenfen', models.IntegerField(choices=[(2, '打手'), (3, '管事'), (4, '商家')], verbose_name='用户身份')),
('yonghuid', models.CharField(db_index=True, max_length=7, verbose_name='用户ID')),
('paiming', models.IntegerField(verbose_name='排名')),
('zhizhi', models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name='指标值')),
('nicheng', models.CharField(max_length=50, null=True, verbose_name='用户昵称')),
('avatar', models.CharField(blank=True, max_length=500, null=True, verbose_name='头像')),
('chuangjian_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
],
options={
'verbose_name': '排行榜记录',
'verbose_name_plural': '排行榜记录',
'db_table': 'ranking_record',
'indexes': [models.Index(fields=['zhouqi', 'tongji_date', 'shenfen', 'paiming'], name='ranking_rec_zhouqi_fc9f4d_idx'), models.Index(fields=['yonghuid', 'zhouqi'], name='ranking_rec_yonghui_e5be77_idx'), models.Index(fields=['tongji_date'], name='ranking_rec_tongji__820158_idx')],
'unique_together': {('zhouqi', 'tongji_date', 'shenfen', 'paiming')},
},
),
]

View File

@@ -0,0 +1,18 @@
# Generated by Django 4.2.27 on 2026-01-24 23:55
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('users', '0003_rankingrecord'),
]
operations = [
migrations.AlterField(
model_name='usermain',
name='avatar',
field=models.CharField(blank=True, default='a_long/morentouxiang.jpg', max_length=500, null=True, verbose_name='头像'),
),
]

View File

@@ -0,0 +1,35 @@
# Generated by Django 4.2.27 on 2026-02-07 19:42
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('users', '0004_alter_usermain_avatar'),
]
operations = [
migrations.CreateModel(
name='OfficialAccountUser',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('unionid', models.CharField(db_index=True, max_length=64, verbose_name='UnionID')),
('official_openid', models.CharField(db_index=True, max_length=64, unique=True, verbose_name='服务号OpenID')),
('subscribe_time', models.DateTimeField(auto_now_add=True, verbose_name='关注时间')),
('is_subscribed', models.BooleanField(default=True, verbose_name='是否关注')),
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('updated_at', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
],
options={
'verbose_name': '服务号用户',
'verbose_name_plural': '服务号用户',
'db_table': 'official_account_user',
},
),
migrations.AddField(
model_name='usermain',
name='unionid',
field=models.CharField(blank=True, db_index=True, max_length=64, null=True, verbose_name='微信UnionID'),
),
]

View File

@@ -0,0 +1,18 @@
# Generated by Django 4.2.27 on 2026-02-07 22:45
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('users', '0005_officialaccountuser_usermain_unionid'),
]
operations = [
migrations.AlterField(
model_name='officialaccountuser',
name='unionid',
field=models.CharField(db_index=True, max_length=64, null=True, verbose_name='UnionID'),
),
]

View File

@@ -0,0 +1,28 @@
# Generated by Django 4.2.27 on 2026-02-27 15:22
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('users', '0007_userkefu'),
]
operations = [
migrations.AddField(
model_name='userguanshi',
name='fenghong_erci',
field=models.DecimalField(decimal_places=2, default=0.0, max_digits=10, verbose_name='二次分红金额'),
),
migrations.AddField(
model_name='userguanshi',
name='fenghong_erci_enabled',
field=models.BooleanField(default=False, verbose_name='开启二次分红'),
),
migrations.AddField(
model_name='userguanshi',
name='fenhong_yici',
field=models.DecimalField(decimal_places=2, default=0.0, max_digits=10, verbose_name='首次分红金额'),
),
]

View File

@@ -0,0 +1,89 @@
# Generated by Django 4.2.27 on 2026-03-16 17:04
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('users', '0008_userguanshi_fenghong_erci_and_more'),
]
operations = [
migrations.AddField(
model_name='userdashou',
name='ewai_xiane',
field=models.DecimalField(decimal_places=2, default=0.0, max_digits=10, verbose_name='额外提现限额(元)'),
),
migrations.AddField(
model_name='userdashou',
name='jinritixian_jine',
field=models.DecimalField(decimal_places=2, default=0.0, max_digits=10, verbose_name='今日已提现金额'),
),
migrations.AddField(
model_name='userdashou',
name='kaioi_ewai_xiane',
field=models.BooleanField(default=False, verbose_name='是否开启额外提现限额'),
),
migrations.AddField(
model_name='userdashou',
name='last_tixian_date',
field=models.DateField(blank=True, null=True, verbose_name='最近提现日期'),
),
migrations.AddField(
model_name='userguanshi',
name='ewai_xiane',
field=models.DecimalField(decimal_places=2, default=0.0, max_digits=10, verbose_name='额外提现限额(元)'),
),
migrations.AddField(
model_name='userguanshi',
name='jinritixian_jine',
field=models.DecimalField(decimal_places=2, default=0.0, max_digits=10, verbose_name='今日已提现金额'),
),
migrations.AddField(
model_name='userguanshi',
name='kaioi_ewai_xiane',
field=models.BooleanField(default=False, verbose_name='是否开启额外提现限额'),
),
migrations.AddField(
model_name='userguanshi',
name='last_tixian_date',
field=models.DateField(blank=True, null=True, verbose_name='最近提现日期'),
),
migrations.AddField(
model_name='userguanshi',
name='yaoqingren',
field=models.CharField(db_index=True, max_length=7, null=True, verbose_name='邀请人ID'),
),
migrations.CreateModel(
name='UserZuzhang',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('yaoqingma', models.CharField(db_index=True, max_length=20, null=True, verbose_name='组长邀请码')),
('fenyong_zonge', models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name='分佣总额(元)')),
('ketixian_jine', models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name='可提现金额(元)')),
('yaoqing_zongshu', models.IntegerField(default=0, verbose_name='邀请总数')),
('jinri_fenyong', models.DecimalField(decimal_places=2, default=0.0, max_digits=10, verbose_name='今日分佣(元)')),
('jinyue_fenyong', models.DecimalField(decimal_places=2, default=0.0, max_digits=10, verbose_name='今月分佣(元)')),
('zhuangtai', models.IntegerField(choices=[(0, '禁用'), (1, '正常')], default=1, verbose_name='账号状态')),
('haibao_url', models.CharField(blank=True, max_length=500, null=True, verbose_name='推广海报相对URL')),
('jinri_tixian', models.DecimalField(decimal_places=2, default=0.0, max_digits=10, verbose_name='今日提现金额(元)')),
('last_tixian_time', models.DateTimeField(blank=True, null=True, verbose_name='最后提现时间')),
('ewai_tixian_xiane', models.DecimalField(decimal_places=2, default=0.0, max_digits=10, verbose_name='额外提现限额(元)')),
('kaioi_ewai_tixian', models.BooleanField(default=False, verbose_name='开启额外提现')),
('kaioi_ewai_fenhong', models.BooleanField(default=False, verbose_name='开启额外分红')),
('ewai_fenhong_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='更新时间')),
('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='zuzhang_profile', to=settings.AUTH_USER_MODEL, verbose_name='关联用户')),
],
options={
'verbose_name': '组长扩展表',
'verbose_name_plural': '组长扩展表',
'db_table': 'user_zuzhang',
'indexes': [models.Index(fields=['user'], name='user_zuzhan_user_id_8064f2_idx'), models.Index(fields=['yaoqingma'], name='user_zuzhan_yaoqing_cba91d_idx')],
},
),
]

View File

@@ -0,0 +1,18 @@
# Generated by Django 4.2.27 on 2026-03-19 12:37
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('users', '0009_userdashou_ewai_xiane_userdashou_jinritixian_jine_and_more'),
]
operations = [
migrations.AddField(
model_name='userguanshi',
name='invite_qrcode_url',
field=models.CharField(blank=True, max_length=500, null=True, verbose_name='邀请码二维码图片URL'),
),
]

View File

@@ -0,0 +1,18 @@
# Generated by Django 4.2.27 on 2026-05-10 02:10
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('users', '0010_userguanshi_invite_qrcode_url'),
]
operations = [
migrations.AddField(
model_name='usermain',
name='shoujihao_renzheng',
field=models.BooleanField(default=False, verbose_name='手机号是否已认证'),
),
]

View File

@@ -0,0 +1,36 @@
# Generated by Django 4.2.27 on 2026-05-14 18:42
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('users', '0011_usermain_shoujihao_renzheng'),
]
operations = [
migrations.CreateModel(
name='UserShenheguan',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('zhuangtai', models.IntegerField(choices=[(0, '禁用'), (1, '正常')], default=1, verbose_name='账号状态')),
('shenhe_zhuangtai', models.IntegerField(choices=[(0, '空闲'), (1, '审核中')], default=0, verbose_name='审核官状态')),
('shenhe_zongshu', models.IntegerField(default=0, verbose_name='审核总数')),
('tongguo_zongshu', models.IntegerField(default=0, verbose_name='通过总数')),
('yue', models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name='可提现余额')),
('zonge', models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name='赚取总额')),
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='shenheguan_profile', to=settings.AUTH_USER_MODEL, verbose_name='关联用户')),
],
options={
'verbose_name': '审核官扩展表',
'verbose_name_plural': '审核官扩展表',
'db_table': 'user_shenheguan',
'indexes': [models.Index(fields=['user'], name='user_shenhe_user_id_624f19_idx')],
},
),
]

View File

@@ -0,0 +1,18 @@
# Generated by Django 4.2.27 on 2026-05-18 02:42
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('users', '0012_usershenheguan'),
]
operations = [
migrations.AddField(
model_name='usershenheguan',
name='is_renzheng',
field=models.BooleanField(default=False, verbose_name='是否认证'),
),
]

View File

@@ -0,0 +1,113 @@
# Generated by Django 4.2.27 on 2026-06-08 23:38
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('users', '0013_usershenheguan_is_renzheng'),
]
operations = [
migrations.CreateModel(
name='TixianAutoRecord',
fields=[
('id', models.BigAutoField(primary_key=True, serialize=False)),
('tixian_id', models.CharField(db_index=True, max_length=32, unique=True, verbose_name='提现订单号(自定义)')),
('yonghuid', models.CharField(db_index=True, max_length=7, verbose_name='用户ID')),
('leixing', models.IntegerField(verbose_name='提现类型 1打手 2管事')),
('jine', models.DecimalField(decimal_places=2, max_digits=10, verbose_name='申请提现金额')),
('shouxufei', models.DecimalField(decimal_places=2, max_digits=10, verbose_name='手续费')),
('shijidaozhang', models.DecimalField(decimal_places=2, max_digits=10, verbose_name='实际到账金额')),
('feilv', models.DecimalField(decimal_places=4, max_digits=5, verbose_name='费率')),
('zhuangtai', models.IntegerField(choices=[(0, '处理中'), (1, '成功'), (2, '失败')], default=0, verbose_name='状态')),
('wechat_transfer_no', models.CharField(blank=True, max_length=64, null=True, verbose_name='微信转账单号')),
('wechat_package', models.TextField(blank=True, null=True, verbose_name='微信返回的package_info(JSON)')),
('fail_reason', models.TextField(blank=True, null=True, verbose_name='失败原因')),
('shenhe_danhao', models.CharField(blank=True, db_index=True, max_length=32, null=True, verbose_name='关联审核单号')),
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
],
options={
'verbose_name': '自动提现记录',
'verbose_name_plural': '自动提现记录',
'db_table': 'tixian_auto_record',
},
),
migrations.CreateModel(
name='TixianShenheJilu',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('shenhe_danhao', models.CharField(db_index=True, max_length=32, unique=True, verbose_name='审核单号')),
('yonghuid', models.CharField(db_index=True, max_length=7, verbose_name='用户ID')),
('leixing', models.PositiveSmallIntegerField(db_index=True, verbose_name='提现类型')),
('zhuangtai', models.IntegerField(db_index=True, default=1, verbose_name='审核状态(1审核中2提现成功3提现失败4审核成功5审核失败6待收款)')),
('shenqing_jine', models.DecimalField(decimal_places=2, max_digits=10, verbose_name='申请提现金额(扣款额)')),
('shouxufei', models.DecimalField(decimal_places=2, default=0, max_digits=10, verbose_name='手续费')),
('shijidaozhang', models.DecimalField(decimal_places=2, max_digits=10, verbose_name='实际到账金额')),
('feilv', models.DecimalField(decimal_places=4, default=0, max_digits=5, verbose_name='手续费率')),
('bhliyou', models.TextField(blank=True, null=True, verbose_name='驳回/失败原因')),
('bo_hui_ren_id', models.CharField(blank=True, db_index=True, max_length=11, null=True, verbose_name='驳回人用户ID')),
('shenhe_ren_id', models.CharField(blank=True, db_index=True, max_length=11, null=True, verbose_name='审核通过操作人ID')),
('tixianjilu_id', models.IntegerField(blank=True, db_index=True, null=True, verbose_name='关联Tixianjilu.id')),
('tixian_auto_id', models.CharField(blank=True, db_index=True, max_length=32, null=True, verbose_name='最近一次打款单号(非唯一,重试收款会更新)')),
('fail_reason', models.TextField(blank=True, null=True, verbose_name='微信打款失败原因')),
('dakuan_mode', models.PositiveSmallIntegerField(db_index=True, default=1, verbose_name='打款方式(1手动2自动)')),
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
],
options={
'verbose_name': '提现审核记录',
'verbose_name_plural': '提现审核记录',
'db_table': 'tixian_shenhe_jilu',
},
),
migrations.AddField(
model_name='tixianjilu',
name='shenhe_danhao',
field=models.CharField(blank=True, db_index=True, max_length=32, null=True, verbose_name='关联提现审核单号'),
),
migrations.AddField(
model_name='tixianjilu',
name='shenhe_jilu_id',
field=models.IntegerField(blank=True, db_index=True, null=True, verbose_name='关联提现审核记录ID(TixianShenheJilu.id)'),
),
migrations.AlterField(
model_name='tixianjilu',
name='shenheid',
field=models.CharField(db_index=True, max_length=11, null=True, verbose_name='审核用户ID'),
),
migrations.AddIndex(
model_name='tixianjilu',
index=models.Index(fields=['shenhe_danhao'], name='tixianjilu_shenhe__7b3e7f_idx'),
),
migrations.AddIndex(
model_name='tixianjilu',
index=models.Index(fields=['shenhe_jilu_id'], name='tixianjilu_shenhe__d9355e_idx'),
),
migrations.AddIndex(
model_name='tixianshenhejilu',
index=models.Index(fields=['yonghuid', 'zhuangtai'], name='tixian_shen_yonghui_a782e9_idx'),
),
migrations.AddIndex(
model_name='tixianshenhejilu',
index=models.Index(fields=['yonghuid', 'leixing'], name='tixian_shen_yonghui_bb44eb_idx'),
),
migrations.AddIndex(
model_name='tixianshenhejilu',
index=models.Index(fields=['shenhe_danhao'], name='tixian_shen_shenhe__4a1ca7_idx'),
),
migrations.AddIndex(
model_name='tixianautorecord',
index=models.Index(fields=['tixian_id'], name='tixian_auto_tixian__273dac_idx'),
),
migrations.AddIndex(
model_name='tixianautorecord',
index=models.Index(fields=['yonghuid'], name='tixian_auto_yonghui_61c5b6_idx'),
),
migrations.AddIndex(
model_name='tixianautorecord',
index=models.Index(fields=['zhuangtai'], name='tixian_auto_zhuangt_24d9fa_idx'),
),
]