276 lines
16 KiB
Python
276 lines
16 KiB
Python
# Generated by Django 4.2.27 on 2026-06-17 01:34
|
||
|
||
from django.db import migrations, models
|
||
import django.db.models.deletion
|
||
|
||
|
||
class Migration(migrations.Migration):
|
||
|
||
initial = True
|
||
|
||
dependencies = [
|
||
]
|
||
|
||
operations = [
|
||
migrations.CreateModel(
|
||
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='账号ID(phone)')),
|
||
('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',
|
||
},
|
||
),
|
||
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',
|
||
},
|
||
),
|
||
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',
|
||
},
|
||
),
|
||
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',
|
||
},
|
||
),
|
||
migrations.CreateModel(
|
||
name='Permission',
|
||
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',
|
||
},
|
||
),
|
||
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',
|
||
},
|
||
),
|
||
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',
|
||
},
|
||
),
|
||
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',
|
||
},
|
||
),
|
||
migrations.AddIndex(
|
||
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'),
|
||
),
|
||
migrations.AddIndex(
|
||
model_name='guanshixufeiritongji',
|
||
index=models.Index(fields=['riqi', '-xufei_zongshu'], name='guanshi_xuf_riqi_7c128f_idx'),
|
||
),
|
||
migrations.AddIndex(
|
||
model_name='guanshixufeiritongji',
|
||
index=models.Index(fields=['riqi', '-xufei_shouyi'], name='guanshi_xuf_riqi_8f09b5_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'),
|
||
),
|
||
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')},
|
||
),
|
||
]
|