# Generated by Django 4.2.27 on 2026-06-17 17:17 from django.db import migrations, models class Migration(migrations.Migration): initial = True dependencies = [ ] operations = [ 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', 'managed': False, }, ), 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', 'managed': False, }, ), migrations.CreateModel( name='RolePermission', fields=[ ('id', models.AutoField(primary_key=True, serialize=False)), ('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), ], options={ 'verbose_name': '角色权限关联', 'verbose_name_plural': '角色权限关联', 'db_table': 'role_permission', 'managed': False, }, ), 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='更新时间')), ], options={ 'verbose_name': '用户角色关联', 'verbose_name_plural': '用户角色关联', 'db_table': 'user_role', 'managed': False, }, ), 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='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='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')}, }, ), 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', 'indexes': [models.Index(fields=['account_id'], name='abnormal_us_account_425899_idx'), models.Index(fields=['ip_address'], name='abnormal_us_ip_addr_3d612b_idx'), models.Index(fields=['create_time'], name='abnormal_us_create__ee16da_idx')], }, ), ]