From 72770ad73b14f43855d97eab8d4b0111e9e670e5 Mon Sep 17 00:00:00 2001 From: TermiNexus Date: Wed, 17 Jun 2026 13:51:51 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9B=9E=E6=BB=9A=E5=88=B0=E4=BA=86=E6=9C=80?= =?UTF-8?q?=E8=BF=91=E4=B8=80=E4=B8=AA=E5=8F=AF=E8=A1=8C=E7=9A=84=E7=94=9F?= =?UTF-8?q?=E4=BA=A7=E7=89=88=E6=9C=AC=EF=BC=88=E5=88=86=E6=94=AF=202?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/migrations/0001_initial.py | 571 +++++++-------- ...zhangritongji_shangjiaritongji_and_more.py | 339 +++++++++ backend/migrations/0003_tixianritongji.py | 54 ++ ...lter_rolepermission_permission_and_more.py | 34 + config/migrations/0001_initial.py | 388 +++-------- .../0002_shangjiamoban_shangjialianjie.py | 56 ++ .../0003_tupianpeizhi_fangwen_cishu.py | 18 + config/migrations/0004_tixianquotadefault.py | 28 + ...ordertypemapping_dailydispatchstat_club.py | 76 ++ .../0006_clubconfig_accountpermission.py | 52 ++ ...ilydispatchstat_claimed_amount_and_more.py | 28 + .../0008_clubconfig_storage_bucket_name.py | 18 + .../0009_dailypayoutstat_dailyincomestat.py | 53 ++ ...ge_popupimage_popupconfig_page_and_more.py | 84 +++ config/migrations/0011_withdrawconfig.py | 27 + ...0012_shangjiamoban_chenghao_id_and_more.py | 28 + ...jialianjie_previous_dingdan_id_and_more.py | 23 + ..._delete_club_delete_clubconfig_and_more.py | 30 + ...002_position_roleposition_roleshop_shop.py | 90 +++ orders/migrations/0001_initial.py | 659 ++++++------------ ...dan_auto_expire_at_dingdan_auto_task_id.py | 23 + ..._pending_dispatch_dingdan_status_8_time.py | 23 + .../0004_alter_tuikuanjilu_chuliid.py | 18 + .../0005_alter_chufajilu_chuliid.py | 18 + orders/migrations/0006_chufatupian.py | 28 + orders/migrations/0007_chufajilu_ssliyou.py | 18 + ...ngdan_is_cross_dingdan_partner_order_id.py | 23 + ...ingtai_clkf_dingdanpingtai_jjjs_biaoshi.py | 23 + ...remove_dingdanpingtai_clkf_dingdan_clkf.py | 22 + orders/migrations/0011_dingdan_tkly.py | 18 + ..._dingdan_wechat_transaction_id_and_more.py | 22 + .../0013_alter_chufajilu_qingqiuid.py | 18 + ...n_dispatch_type_dingdan_partner_club_id.py | 23 + ...esettlement_orderdashouhistory_and_more.py | 73 ++ ...alter_presettlement_dingdan_id_and_more.py | 22 + .../0017_dingdanpingtai_dianpu_id_and_more.py | 32 + .../0018_dingdanshangjia_partner_yonghu_id.py | 18 + ...ngdanpingtai_shangji_dianpu_id_and_more.py | 23 + orders/migrations/0020_fadanfenhong_fadan.py | 58 ++ orders/migrations/0021_fadanshensutupian.py | 30 + ...rtner_club_id_fadan_shenqingren_shenfen.py | 23 + .../0023_fadanshensutupian_yongtu.py | 18 + ...4_fadan_chulizhe_fadan_chulizhe_shenfen.py | 23 + .../0025_alter_fadan_shenqingren_shenfen.py | 18 + ...lter_fadan_shenqingren_shenfen_and_more.py | 37 + orders/migrations/0027_dingdanpeihu.py | 42 ++ ...28_dingdanshangjia_shangyige_dingdan_id.py | 18 + .../0029_fadanfenhong_is_individual_rate.py | 18 + .../0030_fadan_shenqingren_fenhong_jine.py | 18 + .../0031_dingdan_guanshi_fencheng.py | 18 + ...orderdata_delete_presettlement_and_more.py | 43 ++ products/migrations/0001_initial.py | 357 ++++------ ..._huiyuangoumai_unique_together_and_more.py | 29 + ...in_paixu_shangpinleixing_paixu_and_more.py | 33 + .../0004_shangpin_shenhezhuangtai_and_more.py | 23 + .../0005_alter_gsfenhong_dashouid.py | 18 + ...iyuan_id_huiyuan_zuzhangfc_duocifenhong.py | 45 ++ ...duoci_fenho_guanshi_b3de53_idx_and_more.py | 47 ++ ...ng_zuzhang_fenhong_gsfenhong_zuzhang_id.py | 23 + ..._shangpin_ewai_dashou_fencheng_and_more.py | 23 + .../0010_shangpinleixing_is_cross_enabled.py | 18 + ...dianpu_shangpin_dianpu_leixing_and_more.py | 60 ++ .../migrations/0012_shangpinmeiritongji.py | 42 ++ .../0013_shangpinleixing_bankuai.py | 20 + products/migrations/0014_huiyuan_bankuai.py | 20 + .../0015_gsfenhong_fenhong_leixing.py | 18 + ...remove_shangpinleixing_is_cross_enabled.py | 17 + rank/migrations/0001_initial.py | 388 +++-------- .../0002_alter_dashoubiaoxian_dingdan.py | 20 + .../0003_alter_dashoubiaoxian_bankuai.py | 19 + rank/migrations/0004_dingdanbiaoqian.py | 26 + rank/migrations/0005_fix_state.py | 36 + rank/migrations/0006_shenhejilu.py | 35 + rank/migrations/0007_kaoheguanbankuai.py | 29 + ...guize_shenhejilu_dashou_beizhu_and_more.py | 48 ++ ...inpai_alter_shenhejilu_jilu_id_and_more.py | 58 ++ rank/migrations/0010_kaohejilufeiyong.py | 29 + rank/migrations/0011_kaohepaytemp.py | 35 + .../0002_alter_yonghupingzheng_yonghu.py | 18 + ...eizhi_dianpu_kaiqi_meiri_xiane_and_more.py | 85 +++ .../0004_dianpushangpinshenheshezhi.py | 27 + ...dianpu_fenhong_choucheng_feilv_and_more.py | 33 + ...imeiritongji_gei_shangji_cishu_and_more.py | 38 + .../migrations/0002_adminprofile_yaoqingma.py | 18 + users/migrations/0003_rankingrecord.py | 35 + .../migrations/0004_alter_usermain_avatar.py | 18 + ...05_officialaccountuser_usermain_unionid.py | 35 + .../0006_alter_officialaccountuser_unionid.py | 18 + ...0008_userguanshi_fenghong_erci_and_more.py | 28 + ...ne_userdashou_jinritixian_jine_and_more.py | 89 +++ .../0010_userguanshi_invite_qrcode_url.py | 18 + .../0011_usermain_shoujihao_renzheng.py | 18 + users/migrations/0012_usershenheguan.py | 36 + .../0013_usershenheguan_is_renzheng.py | 18 + ...ianautorecord_tixianshenhejilu_and_more.py | 113 +++ 95 files changed, 4116 insertions(+), 1510 deletions(-) create mode 100644 backend/migrations/0002_zuzhangritongji_shangjiaritongji_and_more.py create mode 100644 backend/migrations/0003_tixianritongji.py create mode 100644 backend/migrations/0004_alter_rolepermission_permission_and_more.py create mode 100644 config/migrations/0002_shangjiamoban_shangjialianjie.py create mode 100644 config/migrations/0003_tupianpeizhi_fangwen_cishu.py create mode 100644 config/migrations/0004_tixianquotadefault.py create mode 100644 config/migrations/0005_ordertypemapping_dailydispatchstat_club.py create mode 100644 config/migrations/0006_clubconfig_accountpermission.py create mode 100644 config/migrations/0007_club_receive_rate_dailydispatchstat_claimed_amount_and_more.py create mode 100644 config/migrations/0008_clubconfig_storage_bucket_name.py create mode 100644 config/migrations/0009_dailypayoutstat_dailyincomestat.py create mode 100644 config/migrations/0010_popupconfig_popuppage_popupimage_popupconfig_page_and_more.py create mode 100644 config/migrations/0011_withdrawconfig.py create mode 100644 config/migrations/0012_shangjiamoban_chenghao_id_and_more.py create mode 100644 config/migrations/0013_shangjialianjie_previous_dingdan_id_and_more.py create mode 100644 config/migrations/0014_delete_club_delete_clubconfig_and_more.py create mode 100644 gvsdsdk/migrations/0002_position_roleposition_roleshop_shop.py create mode 100644 orders/migrations/0002_dingdan_auto_expire_at_dingdan_auto_task_id.py create mode 100644 orders/migrations/0003_dingdan_pending_dispatch_dingdan_status_8_time.py create mode 100644 orders/migrations/0004_alter_tuikuanjilu_chuliid.py create mode 100644 orders/migrations/0005_alter_chufajilu_chuliid.py create mode 100644 orders/migrations/0006_chufatupian.py create mode 100644 orders/migrations/0007_chufajilu_ssliyou.py create mode 100644 orders/migrations/0008_dingdan_is_cross_dingdan_partner_order_id.py create mode 100644 orders/migrations/0009_dingdanpingtai_clkf_dingdanpingtai_jjjs_biaoshi.py create mode 100644 orders/migrations/0010_remove_dingdanpingtai_clkf_dingdan_clkf.py create mode 100644 orders/migrations/0011_dingdan_tkly.py create mode 100644 orders/migrations/0012_dingdan_wechat_transaction_id_and_more.py create mode 100644 orders/migrations/0013_alter_chufajilu_qingqiuid.py create mode 100644 orders/migrations/0014_dingdan_dispatch_type_dingdan_partner_club_id.py create mode 100644 orders/migrations/0015_presettlement_orderdashouhistory_and_more.py create mode 100644 orders/migrations/0016_alter_presettlement_dingdan_id_and_more.py create mode 100644 orders/migrations/0017_dingdanpingtai_dianpu_id_and_more.py create mode 100644 orders/migrations/0018_dingdanshangjia_partner_yonghu_id.py create mode 100644 orders/migrations/0019_dingdanpingtai_shangji_dianpu_id_and_more.py create mode 100644 orders/migrations/0020_fadanfenhong_fadan.py create mode 100644 orders/migrations/0021_fadanshensutupian.py create mode 100644 orders/migrations/0022_fadan_partner_club_id_fadan_shenqingren_shenfen.py create mode 100644 orders/migrations/0023_fadanshensutupian_yongtu.py create mode 100644 orders/migrations/0024_fadan_chulizhe_fadan_chulizhe_shenfen.py create mode 100644 orders/migrations/0025_alter_fadan_shenqingren_shenfen.py create mode 100644 orders/migrations/0026_fadanfenhonglilv_alter_fadan_shenqingren_shenfen_and_more.py create mode 100644 orders/migrations/0027_dingdanpeihu.py create mode 100644 orders/migrations/0028_dingdanshangjia_shangyige_dingdan_id.py create mode 100644 orders/migrations/0029_fadanfenhong_is_individual_rate.py create mode 100644 orders/migrations/0030_fadan_shenqingren_fenhong_jine.py create mode 100644 orders/migrations/0031_dingdan_guanshi_fencheng.py create mode 100644 orders/migrations/0032_delete_crossplatformorderdata_delete_presettlement_and_more.py create mode 100644 products/migrations/0002_alter_huiyuangoumai_unique_together_and_more.py create mode 100644 products/migrations/0003_shangpin_paixu_shangpinleixing_paixu_and_more.py create mode 100644 products/migrations/0004_shangpin_shenhezhuangtai_and_more.py create mode 100644 products/migrations/0005_alter_gsfenhong_dashouid.py create mode 100644 products/migrations/0006_gsfenhong_huiyuan_id_huiyuan_zuzhangfc_duocifenhong.py create mode 100644 products/migrations/0007_remove_duocifenhong_duoci_fenho_guanshi_b3de53_idx_and_more.py create mode 100644 products/migrations/0008_gsfenhong_zuzhang_fenhong_gsfenhong_zuzhang_id.py create mode 100644 products/migrations/0009_shangpin_ewai_dashou_fencheng_and_more.py create mode 100644 products/migrations/0010_shangpinleixing_is_cross_enabled.py create mode 100644 products/migrations/0011_shangpin_dianpu_shangpin_dianpu_leixing_and_more.py create mode 100644 products/migrations/0012_shangpinmeiritongji.py create mode 100644 products/migrations/0013_shangpinleixing_bankuai.py create mode 100644 products/migrations/0014_huiyuan_bankuai.py create mode 100644 products/migrations/0015_gsfenhong_fenhong_leixing.py create mode 100644 products/migrations/0016_remove_shangpinleixing_is_cross_enabled.py create mode 100644 rank/migrations/0002_alter_dashoubiaoxian_dingdan.py create mode 100644 rank/migrations/0003_alter_dashoubiaoxian_bankuai.py create mode 100644 rank/migrations/0004_dingdanbiaoqian.py create mode 100644 rank/migrations/0005_fix_state.py create mode 100644 rank/migrations/0006_shenhejilu.py create mode 100644 rank/migrations/0007_kaoheguanbankuai.py create mode 100644 rank/migrations/0008_chenghao_kaohe_guize_shenhejilu_dashou_beizhu_and_more.py create mode 100644 rank/migrations/0009_chenghao_kaioi_jinpai_alter_shenhejilu_jilu_id_and_more.py create mode 100644 rank/migrations/0010_kaohejilufeiyong.py create mode 100644 rank/migrations/0011_kaohepaytemp.py create mode 100644 shop/migrations/0002_alter_yonghupingzheng_yonghu.py create mode 100644 shop/migrations/0003_dianpumorenpeizhi_dianpu_kaiqi_meiri_xiane_and_more.py create mode 100644 shop/migrations/0004_dianpushangpinshenheshezhi.py create mode 100644 shop/migrations/0005_dianpu_fenhong_choucheng_feilv_and_more.py create mode 100644 shop/migrations/0006_dianpushouzhimeiritongji_gei_shangji_cishu_and_more.py create mode 100644 users/migrations/0002_adminprofile_yaoqingma.py create mode 100644 users/migrations/0003_rankingrecord.py create mode 100644 users/migrations/0004_alter_usermain_avatar.py create mode 100644 users/migrations/0005_officialaccountuser_usermain_unionid.py create mode 100644 users/migrations/0006_alter_officialaccountuser_unionid.py create mode 100644 users/migrations/0008_userguanshi_fenghong_erci_and_more.py create mode 100644 users/migrations/0009_userdashou_ewai_xiane_userdashou_jinritixian_jine_and_more.py create mode 100644 users/migrations/0010_userguanshi_invite_qrcode_url.py create mode 100644 users/migrations/0011_usermain_shoujihao_renzheng.py create mode 100644 users/migrations/0012_usershenheguan.py create mode 100644 users/migrations/0013_usershenheguan_is_renzheng.py create mode 100644 users/migrations/0014_tixianautorecord_tixianshenhejilu_and_more.py diff --git a/backend/migrations/0001_initial.py b/backend/migrations/0001_initial.py index c08df42..d065534 100644 --- a/backend/migrations/0001_initial.py +++ b/backend/migrations/0001_initial.py @@ -1,275 +1,296 @@ -# 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')}, - ), - ] +# Generated by Django 4.2.27 on 2026-04-06 23:31 + +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="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="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="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="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")}, + ), + ] diff --git a/backend/migrations/0002_zuzhangritongji_shangjiaritongji_and_more.py b/backend/migrations/0002_zuzhangritongji_shangjiaritongji_and_more.py new file mode 100644 index 0000000..fa5cae7 --- /dev/null +++ b/backend/migrations/0002_zuzhangritongji_shangjiaritongji_and_more.py @@ -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")}, + }, + ), + ] diff --git a/backend/migrations/0003_tixianritongji.py b/backend/migrations/0003_tixianritongji.py new file mode 100644 index 0000000..40d140c --- /dev/null +++ b/backend/migrations/0003_tixianritongji.py @@ -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")}, + }, + ), + ] diff --git a/backend/migrations/0004_alter_rolepermission_permission_and_more.py b/backend/migrations/0004_alter_rolepermission_permission_and_more.py new file mode 100644 index 0000000..faa7b49 --- /dev/null +++ b/backend/migrations/0004_alter_rolepermission_permission_and_more.py @@ -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='角色'), + ), + ] diff --git a/config/migrations/0001_initial.py b/config/migrations/0001_initial.py index 8650dca..f5be730 100644 --- a/config/migrations/0001_initial.py +++ b/config/migrations/0001_initial.py @@ -1,296 +1,92 @@ -# Generated by Django 4.2.27 on 2026-06-17 01:32 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ] - - operations = [ - migrations.CreateModel( - name='Gonggao', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('leixing', models.IntegerField(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='更改时间')), - ('jieshao', models.TextField(blank=True, null=True, verbose_name='公告介绍')), - ], - options={ - 'verbose_name': '公告', - 'verbose_name_plural': '公告', - 'db_table': 'gonggao', - }, - ), - migrations.CreateModel( - name='Lunbo', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('tupian_url', models.CharField(blank=True, max_length=500, null=True, verbose_name='轮播图片URL')), - ('leixing', models.IntegerField(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='更改时间')), - ], - options={ - 'verbose_name': '轮播', - 'verbose_name_plural': '轮播', - '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=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('peizhiid', models.IntegerField(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='更改时间')), - ('neirong', models.CharField(blank=True, max_length=200, null=True, verbose_name='群介绍')), - ('qunid', models.CharField(blank=True, max_length=100, null=True, verbose_name='群id')), - ('jieshao', models.CharField(blank=True, max_length=200, null=True, verbose_name='介绍')), - ], - options={ - 'db_table': 'qunpeizhi', - }, - ), - migrations.CreateModel( - name='Szjilu', - fields=[ - ('id', models.AutoField(primary_key=True, serialize=False, verbose_name='记录ID')), - ('zongsy', models.DecimalField(decimal_places=2, default=0.0, max_digits=10, verbose_name='总收益')), - ('zongls', models.DecimalField(decimal_places=2, default=0.0, max_digits=10, verbose_name='总流水')), - ('zongzc', models.DecimalField(decimal_places=2, default=0.0, max_digits=10, verbose_name='总支出')), - ('jrzc', models.DecimalField(decimal_places=2, default=0.0, max_digits=10, verbose_name='今日支出')), - ('jrls', 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': '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=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('tupian', models.CharField(blank=True, max_length=500, null=True, verbose_name='配置图片URL')), - ('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': '配置图片', - 'verbose_name_plural': '配置图片', - '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')}, - ), - ] +# Generated by Django 5.2.10 on 2026-01-14 19:59 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Gonggao', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('leixing', models.IntegerField(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='更改时间')), + ('jieshao', models.TextField(blank=True, null=True, verbose_name='公告介绍')), + ], + options={ + 'verbose_name': '公告', + 'verbose_name_plural': '公告', + 'db_table': 'gonggao', + }, + ), + migrations.CreateModel( + name='Lunbo', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('tupian_url', models.CharField(blank=True, max_length=500, null=True, verbose_name='轮播图片URL')), + ('leixing', models.IntegerField(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='更改时间')), + ], + options={ + 'verbose_name': '轮播', + 'verbose_name_plural': '轮播', + 'db_table': 'lunbo', + }, + ), + migrations.CreateModel( + name='Qunpeizhi', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('peizhiid', models.IntegerField(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='更改时间')), + ('neirong', models.CharField(blank=True, max_length=200, null=True, verbose_name='群介绍')), + ('qunid', models.CharField(blank=True, max_length=100, null=True, verbose_name='群id')), + ('jieshao', models.CharField(blank=True, max_length=200, null=True, verbose_name='介绍')), + ], + options={ + 'db_table': 'qunpeizhi', + }, + ), + migrations.CreateModel( + name='Szjilu', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False, verbose_name='记录ID')), + ('zongsy', models.DecimalField(decimal_places=2, default=0.0, max_digits=10, verbose_name='总收益')), + ('zongls', models.DecimalField(decimal_places=2, default=0.0, max_digits=10, verbose_name='总流水')), + ('zongzc', models.DecimalField(decimal_places=2, default=0.0, max_digits=10, verbose_name='总支出')), + ('jrzc', models.DecimalField(decimal_places=2, default=0.0, max_digits=10, verbose_name='今日支出')), + ('jrls', 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': 'szjilu', + }, + ), + migrations.CreateModel( + name='Tupianpeizhi', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('tupian', models.CharField(blank=True, max_length=500, null=True, verbose_name='配置图片URL')), + ('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='更改时间')), + ], + options={ + 'verbose_name': '配置图片', + 'verbose_name_plural': '配置图片', + 'db_table': 'tupianpeizhi', + }, + ), + ] diff --git a/config/migrations/0002_shangjiamoban_shangjialianjie.py b/config/migrations/0002_shangjiamoban_shangjialianjie.py new file mode 100644 index 0000000..c3451a5 --- /dev/null +++ b/config/migrations/0002_shangjiamoban_shangjialianjie.py @@ -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')], + }, + ), + ] diff --git a/config/migrations/0003_tupianpeizhi_fangwen_cishu.py b/config/migrations/0003_tupianpeizhi_fangwen_cishu.py new file mode 100644 index 0000000..a312d76 --- /dev/null +++ b/config/migrations/0003_tupianpeizhi_fangwen_cishu.py @@ -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='访问次数'), + ), + ] diff --git a/config/migrations/0004_tixianquotadefault.py b/config/migrations/0004_tixianquotadefault.py new file mode 100644 index 0000000..2e4267e --- /dev/null +++ b/config/migrations/0004_tixianquotadefault.py @@ -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', + }, + ), + ] diff --git a/config/migrations/0005_ordertypemapping_dailydispatchstat_club.py b/config/migrations/0005_ordertypemapping_dailydispatchstat_club.py new file mode 100644 index 0000000..2ef0046 --- /dev/null +++ b/config/migrations/0005_ordertypemapping_dailydispatchstat_club.py @@ -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')], + }, + ), + ] diff --git a/config/migrations/0006_clubconfig_accountpermission.py b/config/migrations/0006_clubconfig_accountpermission.py new file mode 100644 index 0000000..dbe8188 --- /dev/null +++ b/config/migrations/0006_clubconfig_accountpermission.py @@ -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')}, + }, + ), + ] diff --git a/config/migrations/0007_club_receive_rate_dailydispatchstat_claimed_amount_and_more.py b/config/migrations/0007_club_receive_rate_dailydispatchstat_claimed_amount_and_more.py new file mode 100644 index 0000000..5072dad --- /dev/null +++ b/config/migrations/0007_club_receive_rate_dailydispatchstat_claimed_amount_and_more.py @@ -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='抢单数'), + ), + ] diff --git a/config/migrations/0008_clubconfig_storage_bucket_name.py b/config/migrations/0008_clubconfig_storage_bucket_name.py new file mode 100644 index 0000000..7c7310a --- /dev/null +++ b/config/migrations/0008_clubconfig_storage_bucket_name.py @@ -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='存储桶名称'), + ), + ] diff --git a/config/migrations/0009_dailypayoutstat_dailyincomestat.py b/config/migrations/0009_dailypayoutstat_dailyincomestat.py new file mode 100644 index 0000000..8f8dfcb --- /dev/null +++ b/config/migrations/0009_dailypayoutstat_dailyincomestat.py @@ -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')], + }, + ), + ] diff --git a/config/migrations/0010_popupconfig_popuppage_popupimage_popupconfig_page_and_more.py b/config/migrations/0010_popupconfig_popuppage_popupimage_popupconfig_page_and_more.py new file mode 100644 index 0000000..0aeb527 --- /dev/null +++ b/config/migrations/0010_popupconfig_popuppage_popupimage_popupconfig_page_and_more.py @@ -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')}, + ), + ] diff --git a/config/migrations/0011_withdrawconfig.py b/config/migrations/0011_withdrawconfig.py new file mode 100644 index 0000000..62e3800 --- /dev/null +++ b/config/migrations/0011_withdrawconfig.py @@ -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', + }, + ), + ] diff --git a/config/migrations/0012_shangjiamoban_chenghao_id_and_more.py b/config/migrations/0012_shangjiamoban_chenghao_id_and_more.py new file mode 100644 index 0000000..c22a4c8 --- /dev/null +++ b/config/migrations/0012_shangjiamoban_chenghao_id_and_more.py @@ -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='是否开启佣金抢单'), + ), + ] diff --git a/config/migrations/0013_shangjialianjie_previous_dingdan_id_and_more.py b/config/migrations/0013_shangjialianjie_previous_dingdan_id_and_more.py new file mode 100644 index 0000000..bbb9ff6 --- /dev/null +++ b/config/migrations/0013_shangjialianjie_previous_dingdan_id_and_more.py @@ -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'), + ), + ] diff --git a/config/migrations/0014_delete_club_delete_clubconfig_and_more.py b/config/migrations/0014_delete_club_delete_clubconfig_and_more.py new file mode 100644 index 0000000..5e5942d --- /dev/null +++ b/config/migrations/0014_delete_club_delete_clubconfig_and_more.py @@ -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='用户类型'), + ), + ] diff --git a/gvsdsdk/migrations/0002_position_roleposition_roleshop_shop.py b/gvsdsdk/migrations/0002_position_roleposition_roleshop_shop.py new file mode 100644 index 0000000..8251940 --- /dev/null +++ b/gvsdsdk/migrations/0002_position_roleposition_roleshop_shop.py @@ -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, + }, + ), + ] diff --git a/orders/migrations/0001_initial.py b/orders/migrations/0001_initial.py index 68e9989..784b965 100644 --- a/orders/migrations/0001_initial.py +++ b/orders/migrations/0001_initial.py @@ -1,454 +1,205 @@ -# Generated by Django 4.2.27 on 2026-06-17 01:32 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ] - - 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=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('lilu', models.DecimalField(decimal_places=4, max_digits=5, null=True, verbose_name='平台分成利率,1是平台,2是商家')), - ('fadanpingtai', models.CharField(max_length=10, 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': 'lilubiao', - }, - ), - migrations.CreateModel( - name='Ptliushui', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('zonge', models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True, verbose_name='收取总金额')), - ('zhichuzonge', models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True, verbose_name='支出总金额')), - ('zongshouyi', models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True, verbose_name='总收益')), - ('rizonge', models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True, verbose_name='日收取')), - ('rizhichu', models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True, verbose_name='日支出')), - ('rishouyi', models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True, verbose_name='日收益')), - ('zongshoucishu', models.IntegerField(default=0, verbose_name='总收取次数')), - ('rishoucishu', models.IntegerField(default=0, verbose_name='日收取次数')), - ('zongzhichucishu', models.IntegerField(default=0, verbose_name='总支出次数')), - ('rizhichucishu', models.IntegerField(default=0, verbose_name='日支出次数')), - ], - options={ - 'db_table': 'ptliushui', - }, - ), - 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=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='驳回理由')), - ('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.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')], - }, - ), - migrations.CreateModel( - name='Liaotian', - fields=[ - ('id', models.BigAutoField(primary_key=True, serialize=False, verbose_name='主键ID')), - ('user1_id', models.CharField(db_index=True, max_length=30, verbose_name='用户1标识')), - ('user2_id', models.CharField(db_index=True, max_length=30, verbose_name='用户2标识')), - ('dingdan_id', models.CharField(max_length=32, unique=True, verbose_name='订单ID')), - ('zhuangtai', models.IntegerField(choices=[(1, '开启中'), (0, '已关闭')], db_index=True, default=1, verbose_name='聊天状态')), - ('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), - ('update_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')), - ], - options={ - 'db_table': 'liaotian', - 'indexes': [models.Index(fields=['user1_id'], name='liaotian_user1_i_6be6cd_idx'), models.Index(fields=['user2_id'], name='liaotian_user2_i_9f61a4_idx'), models.Index(fields=['zhuangtai'], name='liaotian_zhuangt_5e8be5_idx')], - }, - ), - 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='创建时间')), - ('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='分红应得利率')), - ('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.AddIndex( - model_name='fadan', - index=models.Index(fields=['beichufa_id', 'yingxiang_qiangdan', 'zhuangtai'], name='fadan_qiangdan_check'), - ), - migrations.AddIndex( - model_name='fadan', - index=models.Index(fields=['guanliandingdan_id'], name='fadan_dingdan_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'), - ), - ] +# Generated by Django 5.2.10 on 2026-01-14 19:59 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Lilubiao', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('lilu', models.DecimalField(decimal_places=4, max_digits=5, null=True, verbose_name='平台分成利率,1是平台,2是商家')), + ('fadanpingtai', models.CharField(max_length=10, 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': 'lilubiao', + }, + ), + migrations.CreateModel( + name='Ptliushui', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('zonge', models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True, verbose_name='收取总金额')), + ('zhichuzonge', models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True, verbose_name='支出总金额')), + ('zongshouyi', models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True, verbose_name='总收益')), + ('rizonge', models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True, verbose_name='日收取')), + ('rizhichu', models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True, verbose_name='日支出')), + ('rishouyi', models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True, verbose_name='日收益')), + ('zongshoucishu', models.IntegerField(default=0, verbose_name='总收取次数')), + ('rishoucishu', models.IntegerField(default=0, verbose_name='日收取次数')), + ('zongzhichucishu', models.IntegerField(default=0, verbose_name='总支出次数')), + ('rizhichucishu', models.IntegerField(default=0, verbose_name='日支出次数')), + ], + options={ + 'db_table': 'ptliushui', + }, + ), + 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=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={ + '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( + name='Liaotian', + fields=[ + ('id', models.BigAutoField(primary_key=True, serialize=False, verbose_name='主键ID')), + ('user1_id', models.CharField(db_index=True, max_length=30, verbose_name='用户1标识')), + ('user2_id', models.CharField(db_index=True, max_length=30, verbose_name='用户2标识')), + ('dingdan_id', models.CharField(max_length=32, unique=True, verbose_name='订单ID')), + ('zhuangtai', models.IntegerField(choices=[(1, '开启中'), (0, '已关闭')], db_index=True, default=1, verbose_name='聊天状态')), + ('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), + ('update_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')), + ], + options={ + 'db_table': 'liaotian', + 'indexes': [models.Index(fields=['user1_id'], name='liaotian_user1_i_6be6cd_idx'), models.Index(fields=['user2_id'], name='liaotian_user2_i_9f61a4_idx'), models.Index(fields=['zhuangtai'], name='liaotian_zhuangt_5e8be5_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='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.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.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')], + }, + ), + ] diff --git a/orders/migrations/0002_dingdan_auto_expire_at_dingdan_auto_task_id.py b/orders/migrations/0002_dingdan_auto_expire_at_dingdan_auto_task_id.py new file mode 100644 index 0000000..e9bbc52 --- /dev/null +++ b/orders/migrations/0002_dingdan_auto_expire_at_dingdan_auto_task_id.py @@ -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'), + ), + ] diff --git a/orders/migrations/0003_dingdan_pending_dispatch_dingdan_status_8_time.py b/orders/migrations/0003_dingdan_pending_dispatch_dingdan_status_8_time.py new file mode 100644 index 0000000..06253b7 --- /dev/null +++ b/orders/migrations/0003_dingdan_pending_dispatch_dingdan_status_8_time.py @@ -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的时间'), + ), + ] diff --git a/orders/migrations/0004_alter_tuikuanjilu_chuliid.py b/orders/migrations/0004_alter_tuikuanjilu_chuliid.py new file mode 100644 index 0000000..bdd63ca --- /dev/null +++ b/orders/migrations/0004_alter_tuikuanjilu_chuliid.py @@ -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'), + ), + ] diff --git a/orders/migrations/0005_alter_chufajilu_chuliid.py b/orders/migrations/0005_alter_chufajilu_chuliid.py new file mode 100644 index 0000000..5514d10 --- /dev/null +++ b/orders/migrations/0005_alter_chufajilu_chuliid.py @@ -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'), + ), + ] diff --git a/orders/migrations/0006_chufatupian.py b/orders/migrations/0006_chufatupian.py new file mode 100644 index 0000000..1eab403 --- /dev/null +++ b/orders/migrations/0006_chufatupian.py @@ -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')], + }, + ), + ] diff --git a/orders/migrations/0007_chufajilu_ssliyou.py b/orders/migrations/0007_chufajilu_ssliyou.py new file mode 100644 index 0000000..f00f99a --- /dev/null +++ b/orders/migrations/0007_chufajilu_ssliyou.py @@ -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='打手申诉理由'), + ), + ] diff --git a/orders/migrations/0008_dingdan_is_cross_dingdan_partner_order_id.py b/orders/migrations/0008_dingdan_is_cross_dingdan_partner_order_id.py new file mode 100644 index 0000000..7bdaf56 --- /dev/null +++ b/orders/migrations/0008_dingdan_is_cross_dingdan_partner_order_id.py @@ -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'), + ), + ] diff --git a/orders/migrations/0009_dingdanpingtai_clkf_dingdanpingtai_jjjs_biaoshi.py b/orders/migrations/0009_dingdanpingtai_clkf_dingdanpingtai_jjjs_biaoshi.py new file mode 100644 index 0000000..8b7cd25 --- /dev/null +++ b/orders/migrations/0009_dingdanpingtai_clkf_dingdanpingtai_jjjs_biaoshi.py @@ -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表示拒绝结算)'), + ), + ] diff --git a/orders/migrations/0010_remove_dingdanpingtai_clkf_dingdan_clkf.py b/orders/migrations/0010_remove_dingdanpingtai_clkf_dingdan_clkf.py new file mode 100644 index 0000000..59c7732 --- /dev/null +++ b/orders/migrations/0010_remove_dingdanpingtai_clkf_dingdan_clkf.py @@ -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='处理客服'), + ), + ] diff --git a/orders/migrations/0011_dingdan_tkly.py b/orders/migrations/0011_dingdan_tkly.py new file mode 100644 index 0000000..7235148 --- /dev/null +++ b/orders/migrations/0011_dingdan_tkly.py @@ -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='退款/拒绝理由'), + ), + ] diff --git a/orders/migrations/0012_dingdan_wechat_transaction_id_and_more.py b/orders/migrations/0012_dingdan_wechat_transaction_id_and_more.py new file mode 100644 index 0000000..a6fba66 --- /dev/null +++ b/orders/migrations/0012_dingdan_wechat_transaction_id_and_more.py @@ -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'), + ), + ] diff --git a/orders/migrations/0013_alter_chufajilu_qingqiuid.py b/orders/migrations/0013_alter_chufajilu_qingqiuid.py new file mode 100644 index 0000000..5d7fb22 --- /dev/null +++ b/orders/migrations/0013_alter_chufajilu_qingqiuid.py @@ -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'), + ), + ] diff --git a/orders/migrations/0014_dingdan_dispatch_type_dingdan_partner_club_id.py b/orders/migrations/0014_dingdan_dispatch_type_dingdan_partner_club_id.py new file mode 100644 index 0000000..3dcbe37 --- /dev/null +++ b/orders/migrations/0014_dingdan_dispatch_type_dingdan_partner_club_id.py @@ -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'), + ), + ] diff --git a/orders/migrations/0015_presettlement_orderdashouhistory_and_more.py b/orders/migrations/0015_presettlement_orderdashouhistory_and_more.py new file mode 100644 index 0000000..fc3fe17 --- /dev/null +++ b/orders/migrations/0015_presettlement_orderdashouhistory_and_more.py @@ -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')], + }, + ), + ] diff --git a/orders/migrations/0016_alter_presettlement_dingdan_id_and_more.py b/orders/migrations/0016_alter_presettlement_dingdan_id_and_more.py new file mode 100644 index 0000000..34e0859 --- /dev/null +++ b/orders/migrations/0016_alter_presettlement_dingdan_id_and_more.py @@ -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')}, + ), + ] diff --git a/orders/migrations/0017_dingdanpingtai_dianpu_id_and_more.py b/orders/migrations/0017_dingdanpingtai_dianpu_id_and_more.py new file mode 100644 index 0000000..03a58c2 --- /dev/null +++ b/orders/migrations/0017_dingdanpingtai_dianpu_id_and_more.py @@ -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'), + ), + ] diff --git a/orders/migrations/0018_dingdanshangjia_partner_yonghu_id.py b/orders/migrations/0018_dingdanshangjia_partner_yonghu_id.py new file mode 100644 index 0000000..2c45ee5 --- /dev/null +++ b/orders/migrations/0018_dingdanshangjia_partner_yonghu_id.py @@ -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'), + ), + ] diff --git a/orders/migrations/0019_dingdanpingtai_shangji_dianpu_id_and_more.py b/orders/migrations/0019_dingdanpingtai_shangji_dianpu_id_and_more.py new file mode 100644 index 0000000..780942d --- /dev/null +++ b/orders/migrations/0019_dingdanpingtai_shangji_dianpu_id_and_more.py @@ -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='上级分红金额'), + ), + ] diff --git a/orders/migrations/0020_fadanfenhong_fadan.py b/orders/migrations/0020_fadanfenhong_fadan.py new file mode 100644 index 0000000..9849a9d --- /dev/null +++ b/orders/migrations/0020_fadanfenhong_fadan.py @@ -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')], + }, + ), + ] diff --git a/orders/migrations/0021_fadanshensutupian.py b/orders/migrations/0021_fadanshensutupian.py new file mode 100644 index 0000000..e6cc657 --- /dev/null +++ b/orders/migrations/0021_fadanshensutupian.py @@ -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')], + }, + ), + ] diff --git a/orders/migrations/0022_fadan_partner_club_id_fadan_shenqingren_shenfen.py b/orders/migrations/0022_fadan_partner_club_id_fadan_shenqingren_shenfen.py new file mode 100644 index 0000000..e104eb5 --- /dev/null +++ b/orders/migrations/0022_fadan_partner_club_id_fadan_shenqingren_shenfen.py @@ -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='申请处罚人身份'), + ), + ] diff --git a/orders/migrations/0023_fadanshensutupian_yongtu.py b/orders/migrations/0023_fadanshensutupian_yongtu.py new file mode 100644 index 0000000..8a0ba9b --- /dev/null +++ b/orders/migrations/0023_fadanshensutupian_yongtu.py @@ -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='图片用途'), + ), + ] diff --git a/orders/migrations/0024_fadan_chulizhe_fadan_chulizhe_shenfen.py b/orders/migrations/0024_fadan_chulizhe_fadan_chulizhe_shenfen.py new file mode 100644 index 0000000..59c6b7f --- /dev/null +++ b/orders/migrations/0024_fadan_chulizhe_fadan_chulizhe_shenfen.py @@ -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='处理者身份'), + ), + ] diff --git a/orders/migrations/0025_alter_fadan_shenqingren_shenfen.py b/orders/migrations/0025_alter_fadan_shenqingren_shenfen.py new file mode 100644 index 0000000..e9cfae8 --- /dev/null +++ b/orders/migrations/0025_alter_fadan_shenqingren_shenfen.py @@ -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='申请处罚人身份'), + ), + ] diff --git a/orders/migrations/0026_fadanfenhonglilv_alter_fadan_shenqingren_shenfen_and_more.py b/orders/migrations/0026_fadanfenhonglilv_alter_fadan_shenqingren_shenfen_and_more.py new file mode 100644 index 0000000..3ff4939 --- /dev/null +++ b/orders/migrations/0026_fadanfenhonglilv_alter_fadan_shenqingren_shenfen_and_more.py @@ -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='分红者身份'), + ), + ] diff --git a/orders/migrations/0027_dingdanpeihu.py b/orders/migrations/0027_dingdanpeihu.py new file mode 100644 index 0000000..d7f96e7 --- /dev/null +++ b/orders/migrations/0027_dingdanpeihu.py @@ -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')], + }, + ), + ] diff --git a/orders/migrations/0028_dingdanshangjia_shangyige_dingdan_id.py b/orders/migrations/0028_dingdanshangjia_shangyige_dingdan_id.py new file mode 100644 index 0000000..e69a717 --- /dev/null +++ b/orders/migrations/0028_dingdanshangjia_shangyige_dingdan_id.py @@ -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'), + ), + ] diff --git a/orders/migrations/0029_fadanfenhong_is_individual_rate.py b/orders/migrations/0029_fadanfenhong_is_individual_rate.py new file mode 100644 index 0000000..0b8abc8 --- /dev/null +++ b/orders/migrations/0029_fadanfenhong_is_individual_rate.py @@ -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='是否单独开启分红利率'), + ), + ] diff --git a/orders/migrations/0030_fadan_shenqingren_fenhong_jine.py b/orders/migrations/0030_fadan_shenqingren_fenhong_jine.py new file mode 100644 index 0000000..dbd48ca --- /dev/null +++ b/orders/migrations/0030_fadan_shenqingren_fenhong_jine.py @@ -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='申请人分红金额'), + ), + ] diff --git a/orders/migrations/0031_dingdan_guanshi_fencheng.py b/orders/migrations/0031_dingdan_guanshi_fencheng.py new file mode 100644 index 0000000..0bd71be --- /dev/null +++ b/orders/migrations/0031_dingdan_guanshi_fencheng.py @@ -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='管事分成'), + ), + ] diff --git a/orders/migrations/0032_delete_crossplatformorderdata_delete_presettlement_and_more.py b/orders/migrations/0032_delete_crossplatformorderdata_delete_presettlement_and_more.py new file mode 100644 index 0000000..f87b00b --- /dev/null +++ b/orders/migrations/0032_delete_crossplatformorderdata_delete_presettlement_and_more.py @@ -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', + ), + ] diff --git a/products/migrations/0001_initial.py b/products/migrations/0001_initial.py index 6403ee6..dbc04a5 100644 --- a/products/migrations/0001_initial.py +++ b/products/migrations/0001_initial.py @@ -1,208 +1,149 @@ -# Generated by Django 4.2.27 on 2026-06-17 01:32 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ] - - 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=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('huiyuan_id', models.CharField(max_length=6, unique=True, verbose_name='会员ID')), - ('jieshao', models.CharField(max_length=30, verbose_name='会员介绍')), - ('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='更新时间')), - ], - options={ - 'verbose_name': '会员', - 'verbose_name_plural': '会员', - 'db_table': 'huiyuan', - }, - ), - migrations.CreateModel( - name='Huiyuangoumai', - fields=[ - ('id', models.AutoField(primary_key=True, serialize=False, verbose_name='购买记录ID')), - ('huiyuan_id', models.CharField(db_index=True, max_length=6, verbose_name='会员ID')), - ('yonghu_id', models.CharField(db_index=True, max_length=32, verbose_name='用户ID')), - ('huiyuan_zhuangtai', models.PositiveIntegerField(default=1, verbose_name='会员状态')), - ('jieshao', models.CharField(max_length=30, null=True, verbose_name='会员介绍')), - ('daoqi_time', models.DateTimeField(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': 'huiyuangoumai', - }, - ), - migrations.CreateModel( - name='Shangpin', - fields=[ - ('id', models.AutoField(primary_key=True, serialize=False, verbose_name='商品ID')), - ('biaoqian', models.CharField(blank=True, max_length=45, null=True, verbose_name='商品标题')), - ('jiage', models.DecimalField(decimal_places=2, default=0.0, max_digits=10, verbose_name='商品价格')), - ('kucun', models.PositiveIntegerField(default=0, verbose_name='商品库存')), - ('leixing_id', models.PositiveIntegerField(blank=True, null=True, verbose_name='商品类型ID')), - ('zhuanqu_id', models.PositiveIntegerField(blank=True, null=True, verbose_name='商品专区ID')), - ('zhenshi_xiaoliang', models.PositiveIntegerField(default=0, verbose_name='商品真实销量')), - ('duiwai_xiaoliang', models.PositiveIntegerField(default=0, verbose_name='商品对外销量')), - ('jieshao', models.TextField(blank=True, null=True, verbose_name='商品介绍')), - ('xiadan_xuzhi', models.TextField(blank=True, null=True, verbose_name='下单须知')), - ('guize_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='佣金要求')), - ('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': '商品', - 'verbose_name_plural': '商品', - 'db_table': 'shangpin', - }, - ), - migrations.CreateModel( - name='ShangpinLeixing', - fields=[ - ('id', models.AutoField(primary_key=True, serialize=False, verbose_name='类型ID')), - ('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.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': '商品类型', - 'verbose_name_plural': '商品类型', - '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': '商品专区', - 'verbose_name_plural': '商品专区', - 'db_table': 'shangpin_zhuanqu', - }, - ), - ] +# Generated by Django 5.2.10 on 2026-01-14 19:59 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Huiyuan', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('huiyuan_id', models.CharField(max_length=6, unique=True, verbose_name='会员ID')), + ('jieshao', models.CharField(max_length=30, verbose_name='会员介绍')), + ('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='管事分成')), + ('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='更新时间')), + ], + options={ + 'verbose_name': '会员', + 'verbose_name_plural': '会员', + 'db_table': 'huiyuan', + }, + ), + migrations.CreateModel( + name='Huiyuangoumai', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False, verbose_name='购买记录ID')), + ('huiyuan_id', models.CharField(db_index=True, max_length=6, verbose_name='会员ID')), + ('yonghu_id', models.CharField(db_index=True, max_length=32, verbose_name='用户ID')), + ('huiyuan_zhuangtai', models.PositiveIntegerField(default=1, verbose_name='会员状态')), + ('jieshao', models.CharField(max_length=30, null=True, verbose_name='会员介绍')), + ('daoqi_time', models.DateTimeField(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': 'huiyuangoumai', + }, + ), + migrations.CreateModel( + name='Shangpin', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False, verbose_name='商品ID')), + ('biaoqian', models.CharField(blank=True, max_length=45, null=True, verbose_name='商品标题')), + ('jiage', models.DecimalField(decimal_places=2, default=0.0, max_digits=10, verbose_name='商品价格')), + ('kucun', models.PositiveIntegerField(default=0, verbose_name='商品库存')), + ('leixing_id', models.PositiveIntegerField(blank=True, null=True, verbose_name='商品类型ID')), + ('zhuanqu_id', models.PositiveIntegerField(blank=True, null=True, verbose_name='商品专区ID')), + ('zhenshi_xiaoliang', models.PositiveIntegerField(default=0, verbose_name='商品真实销量')), + ('duiwai_xiaoliang', models.PositiveIntegerField(default=0, verbose_name='商品对外销量')), + ('jieshao', models.TextField(blank=True, null=True, verbose_name='商品介绍')), + ('xiadan_xuzhi', models.TextField(blank=True, null=True, verbose_name='下单须知')), + ('guize_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='佣金要求')), + ('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='更改时间')), + ], + options={ + 'verbose_name': '商品', + 'verbose_name_plural': '商品', + 'db_table': 'shangpin', + }, + ), + migrations.CreateModel( + name='ShangpinLeixing', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False, verbose_name='类型ID')), + ('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.CharField(blank=True, max_length=45, null=True, verbose_name='类型介绍')), + ('tupian_url', models.CharField(blank=True, max_length=500, null=True, verbose_name='类型图片URL')), + ], + options={ + 'verbose_name': '商品类型', + 'verbose_name_plural': '商品类型', + 'db_table': 'shangpin_leixing', + }, + ), + 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')), + ], + options={ + 'verbose_name': '商品专区', + 'verbose_name_plural': '商品专区', + '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')], + }, + ), + ] diff --git a/products/migrations/0002_alter_huiyuangoumai_unique_together_and_more.py b/products/migrations/0002_alter_huiyuangoumai_unique_together_and_more.py new file mode 100644 index 0000000..873aaaf --- /dev/null +++ b/products/migrations/0002_alter_huiyuangoumai_unique_together_and_more.py @@ -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'), + ), + ] diff --git a/products/migrations/0003_shangpin_paixu_shangpinleixing_paixu_and_more.py b/products/migrations/0003_shangpin_paixu_shangpinleixing_paixu_and_more.py new file mode 100644 index 0000000..011b22a --- /dev/null +++ b/products/migrations/0003_shangpin_paixu_shangpinleixing_paixu_and_more.py @@ -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='排序权重'), + ), + ] diff --git a/products/migrations/0004_shangpin_shenhezhuangtai_and_more.py b/products/migrations/0004_shangpin_shenhezhuangtai_and_more.py new file mode 100644 index 0000000..c5e7a35 --- /dev/null +++ b/products/migrations/0004_shangpin_shenhezhuangtai_and_more.py @@ -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='审核状态'), + ), + ] diff --git a/products/migrations/0005_alter_gsfenhong_dashouid.py b/products/migrations/0005_alter_gsfenhong_dashouid.py new file mode 100644 index 0000000..4d4e422 --- /dev/null +++ b/products/migrations/0005_alter_gsfenhong_dashouid.py @@ -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'), + ), + ] diff --git a/products/migrations/0006_gsfenhong_huiyuan_id_huiyuan_zuzhangfc_duocifenhong.py b/products/migrations/0006_gsfenhong_huiyuan_id_huiyuan_zuzhangfc_duocifenhong.py new file mode 100644 index 0000000..adabfa6 --- /dev/null +++ b/products/migrations/0006_gsfenhong_huiyuan_id_huiyuan_zuzhangfc_duocifenhong.py @@ -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')}, + }, + ), + ] diff --git a/products/migrations/0007_remove_duocifenhong_duoci_fenho_guanshi_b3de53_idx_and_more.py b/products/migrations/0007_remove_duocifenhong_duoci_fenho_guanshi_b3de53_idx_and_more.py new file mode 100644 index 0000000..a354d2b --- /dev/null +++ b/products/migrations/0007_remove_duocifenhong_duoci_fenho_guanshi_b3de53_idx_and_more.py @@ -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', + ), + ] diff --git a/products/migrations/0008_gsfenhong_zuzhang_fenhong_gsfenhong_zuzhang_id.py b/products/migrations/0008_gsfenhong_zuzhang_fenhong_gsfenhong_zuzhang_id.py new file mode 100644 index 0000000..04974ac --- /dev/null +++ b/products/migrations/0008_gsfenhong_zuzhang_fenhong_gsfenhong_zuzhang_id.py @@ -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'), + ), + ] diff --git a/products/migrations/0009_shangpin_ewai_dashou_fencheng_and_more.py b/products/migrations/0009_shangpin_ewai_dashou_fencheng_and_more.py new file mode 100644 index 0000000..5783b55 --- /dev/null +++ b/products/migrations/0009_shangpin_ewai_dashou_fencheng_and_more.py @@ -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='是否开启打手额外分成'), + ), + ] diff --git a/products/migrations/0010_shangpinleixing_is_cross_enabled.py b/products/migrations/0010_shangpinleixing_is_cross_enabled.py new file mode 100644 index 0000000..3f2582d --- /dev/null +++ b/products/migrations/0010_shangpinleixing_is_cross_enabled.py @@ -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='是否开启平台互通'), + ), + ] diff --git a/products/migrations/0011_shangpin_dianpu_shangpin_dianpu_leixing_and_more.py b/products/migrations/0011_shangpin_dianpu_shangpin_dianpu_leixing_and_more.py new file mode 100644 index 0000000..9ec490a --- /dev/null +++ b/products/migrations/0011_shangpin_dianpu_shangpin_dianpu_leixing_and_more.py @@ -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='是否上架'), + ), + ] diff --git a/products/migrations/0012_shangpinmeiritongji.py b/products/migrations/0012_shangpinmeiritongji.py new file mode 100644 index 0000000..0df137a --- /dev/null +++ b/products/migrations/0012_shangpinmeiritongji.py @@ -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')}, + }, + ), + ] diff --git a/products/migrations/0013_shangpinleixing_bankuai.py b/products/migrations/0013_shangpinleixing_bankuai.py new file mode 100644 index 0000000..cb260b2 --- /dev/null +++ b/products/migrations/0013_shangpinleixing_bankuai.py @@ -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='所属板块'), + ), + ] diff --git a/products/migrations/0014_huiyuan_bankuai.py b/products/migrations/0014_huiyuan_bankuai.py new file mode 100644 index 0000000..a63de19 --- /dev/null +++ b/products/migrations/0014_huiyuan_bankuai.py @@ -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='所属板块'), + ), + ] diff --git a/products/migrations/0015_gsfenhong_fenhong_leixing.py b/products/migrations/0015_gsfenhong_fenhong_leixing.py new file mode 100644 index 0000000..0248dd1 --- /dev/null +++ b/products/migrations/0015_gsfenhong_fenhong_leixing.py @@ -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='分红类型'), + ), + ] diff --git a/products/migrations/0016_remove_shangpinleixing_is_cross_enabled.py b/products/migrations/0016_remove_shangpinleixing_is_cross_enabled.py new file mode 100644 index 0000000..a23701b --- /dev/null +++ b/products/migrations/0016_remove_shangpinleixing_is_cross_enabled.py @@ -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', + ), + ] diff --git a/rank/migrations/0001_initial.py b/rank/migrations/0001_initial.py index 88e955a..c672140 100644 --- a/rank/migrations/0001_initial.py +++ b/rank/migrations/0001_initial.py @@ -1,277 +1,111 @@ -# Generated by Django 4.2.27 on 2026-06-17 01:32 - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('orders', '0001_initial'), - ] - - operations = [ - migrations.CreateModel( - name='Bankuai', - fields=[ - ('bankuai_id', models.AutoField(primary_key=True, serialize=False, verbose_name='板块ID')), - ('mingcheng', models.CharField(db_index=True, max_length=50, unique=True, verbose_name='板块名称')), - ('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), - ], - options={ - 'verbose_name': '板块', - 'verbose_name_plural': '板块', - 'db_table': 'bankuai', - }, - ), - migrations.CreateModel( - name='Chenghao', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('mingcheng', models.CharField(max_length=50, unique=True, verbose_name='称号名称')), - ('leixing', models.CharField(choices=[('dashou', '打手'), ('boss', '老板'), ('shangjia', '商家'), ('guanshi', '管事'), ('zuzhang', '组长')], max_length=10, verbose_name='称号类型')), - ('tubiao_url', models.CharField(blank=True, max_length=200, null=True, verbose_name='称号图标相对URL')), - ('texiao_miaoshu', models.TextField(blank=True, null=True, verbose_name='特效描述(JSON)')), - ('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), - ('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={ - 'verbose_name': '称号', - 'verbose_name_plural': '称号', - 'db_table': 'chenghao', - }, - ), - 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', - }, - ), - 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', - }, - ), - migrations.CreateModel( - name='JingyanJilu', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('yonghu_id', models.CharField(db_index=True, max_length=7, verbose_name='用户ID')), - ('yonghu_leixing', models.CharField(choices=[('dashou', '打手'), ('boss', '老板'), ('shangjia', '商家'), ('guanshi', '管事'), ('zuzhang', '组长')], max_length=10, verbose_name='用户类型')), - ('sudu_jingyan', models.DecimalField(decimal_places=2, default=0, max_digits=8, verbose_name='上线速度经验')), - ('shili_jingyan', models.DecimalField(decimal_places=2, default=0, max_digits=8, verbose_name='打手实力经验')), - ('taidu_jingyan', models.DecimalField(decimal_places=2, default=0, max_digits=8, verbose_name='服务态度经验')), - ('zonghe_jingyan', models.DecimalField(decimal_places=2, default=0, max_digits=8, verbose_name='综合经验')), - ('dingdan_id', models.CharField(blank=True, db_index=True, max_length=32, null=True, verbose_name='关联订单ID')), - ('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), - ('update_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')), - ('bankuai', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='rank.bankuai', verbose_name='所属板块')), - ], - options={ - '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', - }, - ), - migrations.CreateModel( - name='DashouBiaoxian', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('dashou_id', models.CharField(db_index=True, max_length=32, verbose_name='打手ID')), - ('shangxian_sudu', models.PositiveSmallIntegerField(blank=True, null=True, verbose_name='上线速度评价(1-5)')), - ('fuwu_taidu', models.PositiveSmallIntegerField(blank=True, null=True, verbose_name='服务态度评价(1-5)')), - ('fanche_cishu', models.PositiveIntegerField(blank=True, null=True, verbose_name='翻车次数')), - ('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), - ('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='关联订单')), - ], - options={ - 'verbose_name': '打手订单表现', - 'verbose_name_plural': '打手订单表现', - 'db_table': 'dashou_biaoxian', - }, - ), - 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'), - ), - ] +# Generated by Django 4.2.27 on 2026-05-12 02:17 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('orders', '0026_fadanfenhonglilv_alter_fadan_shenqingren_shenfen_and_more'), + ] + + operations = [ + migrations.CreateModel( + name='Bankuai', + fields=[ + ('bankuai_id', models.AutoField(primary_key=True, serialize=False, verbose_name='板块ID')), + ('mingcheng', models.CharField(db_index=True, max_length=50, unique=True, verbose_name='板块名称')), + ('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), + ], + options={ + 'verbose_name': '板块', + 'verbose_name_plural': '板块', + 'db_table': 'bankuai', + }, + ), + migrations.CreateModel( + name='Chenghao', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('mingcheng', models.CharField(max_length=50, unique=True, verbose_name='称号名称')), + ('leixing', models.CharField(choices=[('dashou', '打手'), ('boss', '老板'), ('shangjia', '商家'), ('guanshi', '管事'), ('zuzhang', '组长')], max_length=10, verbose_name='称号类型')), + ('tubiao_url', models.CharField(blank=True, max_length=200, null=True, verbose_name='称号图标相对URL')), + ('texiao_miaoshu', models.TextField(blank=True, null=True, verbose_name='特效描述(JSON)')), + ('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), + ('bankuai', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='rank.bankuai', verbose_name='所属板块(空=全板块通用)')), + ], + options={ + 'verbose_name': '称号', + 'verbose_name_plural': '称号', + 'db_table': 'chenghao', + }, + ), + 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.CreateModel( + name='JingyanJilu', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('yonghu_id', models.CharField(db_index=True, max_length=7, verbose_name='用户ID')), + ('yonghu_leixing', models.CharField(choices=[('dashou', '打手'), ('boss', '老板'), ('shangjia', '商家'), ('guanshi', '管事'), ('zuzhang', '组长')], max_length=10, verbose_name='用户类型')), + ('sudu_jingyan', models.DecimalField(decimal_places=2, default=0, max_digits=8, verbose_name='上线速度经验')), + ('shili_jingyan', models.DecimalField(decimal_places=2, default=0, max_digits=8, verbose_name='打手实力经验')), + ('taidu_jingyan', models.DecimalField(decimal_places=2, default=0, max_digits=8, verbose_name='服务态度经验')), + ('zonghe_jingyan', models.DecimalField(decimal_places=2, default=0, max_digits=8, verbose_name='综合经验')), + ('dingdan_id', models.CharField(blank=True, db_index=True, max_length=32, null=True, verbose_name='关联订单ID')), + ('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), + ('update_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')), + ('bankuai', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='rank.bankuai', verbose_name='所属板块')), + ], + options={ + 'verbose_name': '经验变动记录', + 'verbose_name_plural': '经验变动记录', + 'db_table': 'jingyan_jilu', + 'indexes': [models.Index(fields=['yonghu_id', 'bankuai', 'create_time'], name='jingyan_jil_yonghu__786992_idx')], + }, + ), + migrations.CreateModel( + name='DashouBiaoxian', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('dashou_id', models.CharField(db_index=True, max_length=32, verbose_name='打手ID')), + ('shangxian_sudu', models.PositiveSmallIntegerField(blank=True, null=True, verbose_name='上线速度评价(1-5)')), + ('fuwu_taidu', models.PositiveSmallIntegerField(blank=True, null=True, verbose_name='服务态度评价(1-5)')), + ('fanche_cishu', models.PositiveIntegerField(blank=True, null=True, verbose_name='翻车次数')), + ('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), + ('jiedan_time', models.DateTimeField(blank=True, null=True, verbose_name='接单时间')), + ('tijiao_time', models.DateTimeField(blank=True, null=True, 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.AddIndex( + model_name='chenghao', + index=models.Index(fields=['leixing', 'bankuai'], name='chenghao_leixing_8f4371_idx'), + ), + ] diff --git a/rank/migrations/0002_alter_dashoubiaoxian_dingdan.py b/rank/migrations/0002_alter_dashoubiaoxian_dingdan.py new file mode 100644 index 0000000..ba3c12e --- /dev/null +++ b/rank/migrations/0002_alter_dashoubiaoxian_dingdan.py @@ -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='关联订单'), + ), + ] diff --git a/rank/migrations/0003_alter_dashoubiaoxian_bankuai.py b/rank/migrations/0003_alter_dashoubiaoxian_bankuai.py new file mode 100644 index 0000000..921d444 --- /dev/null +++ b/rank/migrations/0003_alter_dashoubiaoxian_bankuai.py @@ -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='所属板块'), + ), + ] diff --git a/rank/migrations/0004_dingdanbiaoqian.py b/rank/migrations/0004_dingdanbiaoqian.py new file mode 100644 index 0000000..56a9f8b --- /dev/null +++ b/rank/migrations/0004_dingdanbiaoqian.py @@ -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;" + ), + ] \ No newline at end of file diff --git a/rank/migrations/0005_fix_state.py b/rank/migrations/0005_fix_state.py new file mode 100644 index 0000000..beb2aea --- /dev/null +++ b/rank/migrations/0005_fix_state.py @@ -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'), + ], + }, + ), + ], + ), + ] \ No newline at end of file diff --git a/rank/migrations/0006_shenhejilu.py b/rank/migrations/0006_shenhejilu.py new file mode 100644 index 0000000..60e1db8 --- /dev/null +++ b/rank/migrations/0006_shenhejilu.py @@ -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')], + }, + ), + ] diff --git a/rank/migrations/0007_kaoheguanbankuai.py b/rank/migrations/0007_kaoheguanbankuai.py new file mode 100644 index 0000000..9b5a8bc --- /dev/null +++ b/rank/migrations/0007_kaoheguanbankuai.py @@ -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')}, + }, + ), + ] diff --git a/rank/migrations/0008_chenghao_kaohe_guize_shenhejilu_dashou_beizhu_and_more.py b/rank/migrations/0008_chenghao_kaohe_guize_shenhejilu_dashou_beizhu_and_more.py new file mode 100644 index 0000000..544c853 --- /dev/null +++ b/rank/migrations/0008_chenghao_kaohe_guize_shenhejilu_dashou_beizhu_and_more.py @@ -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='审核状态'), + ), + ] diff --git a/rank/migrations/0009_chenghao_kaioi_jinpai_alter_shenhejilu_jilu_id_and_more.py b/rank/migrations/0009_chenghao_kaioi_jinpai_alter_shenhejilu_jilu_id_and_more.py new file mode 100644 index 0000000..9854f9b --- /dev/null +++ b/rank/migrations/0009_chenghao_kaioi_jinpai_alter_shenhejilu_jilu_id_and_more.py @@ -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')}, + }, + ), + ] diff --git a/rank/migrations/0010_kaohejilufeiyong.py b/rank/migrations/0010_kaohejilufeiyong.py new file mode 100644 index 0000000..43d7128 --- /dev/null +++ b/rank/migrations/0010_kaohejilufeiyong.py @@ -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')}, + }, + ), + ] diff --git a/rank/migrations/0011_kaohepaytemp.py b/rank/migrations/0011_kaohepaytemp.py new file mode 100644 index 0000000..d040f67 --- /dev/null +++ b/rank/migrations/0011_kaohepaytemp.py @@ -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', + }, + ), + ] diff --git a/shop/migrations/0002_alter_yonghupingzheng_yonghu.py b/shop/migrations/0002_alter_yonghupingzheng_yonghu.py new file mode 100644 index 0000000..dc49c90 --- /dev/null +++ b/shop/migrations/0002_alter_yonghupingzheng_yonghu.py @@ -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'), + ), + ] diff --git a/shop/migrations/0003_dianpumorenpeizhi_dianpu_kaiqi_meiri_xiane_and_more.py b/shop/migrations/0003_dianpumorenpeizhi_dianpu_kaiqi_meiri_xiane_and_more.py new file mode 100644 index 0000000..22f7435 --- /dev/null +++ b/shop/migrations/0003_dianpumorenpeizhi_dianpu_kaiqi_meiri_xiane_and_more.py @@ -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')}, + }, + ), + ] diff --git a/shop/migrations/0004_dianpushangpinshenheshezhi.py b/shop/migrations/0004_dianpushangpinshenheshezhi.py new file mode 100644 index 0000000..a9adb9b --- /dev/null +++ b/shop/migrations/0004_dianpushangpinshenheshezhi.py @@ -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', + }, + ), + ] diff --git a/shop/migrations/0005_dianpu_fenhong_choucheng_feilv_and_more.py b/shop/migrations/0005_dianpu_fenhong_choucheng_feilv_and_more.py new file mode 100644 index 0000000..2265498 --- /dev/null +++ b/shop/migrations/0005_dianpu_fenhong_choucheng_feilv_and_more.py @@ -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(上级)'), + ), + ] diff --git a/shop/migrations/0006_dianpushouzhimeiritongji_gei_shangji_cishu_and_more.py b/shop/migrations/0006_dianpushouzhimeiritongji_gei_shangji_cishu_and_more.py new file mode 100644 index 0000000..16c33a4 --- /dev/null +++ b/shop/migrations/0006_dianpushouzhimeiritongji_gei_shangji_cishu_and_more.py @@ -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(若无则为空)'), + ), + ] diff --git a/users/migrations/0002_adminprofile_yaoqingma.py b/users/migrations/0002_adminprofile_yaoqingma.py new file mode 100644 index 0000000..7bb1ce2 --- /dev/null +++ b/users/migrations/0002_adminprofile_yaoqingma.py @@ -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='管理员邀请码'), + ), + ] diff --git a/users/migrations/0003_rankingrecord.py b/users/migrations/0003_rankingrecord.py new file mode 100644 index 0000000..49857bd --- /dev/null +++ b/users/migrations/0003_rankingrecord.py @@ -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')}, + }, + ), + ] diff --git a/users/migrations/0004_alter_usermain_avatar.py b/users/migrations/0004_alter_usermain_avatar.py new file mode 100644 index 0000000..2ed5ea8 --- /dev/null +++ b/users/migrations/0004_alter_usermain_avatar.py @@ -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='头像'), + ), + ] diff --git a/users/migrations/0005_officialaccountuser_usermain_unionid.py b/users/migrations/0005_officialaccountuser_usermain_unionid.py new file mode 100644 index 0000000..7cbd851 --- /dev/null +++ b/users/migrations/0005_officialaccountuser_usermain_unionid.py @@ -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'), + ), + ] diff --git a/users/migrations/0006_alter_officialaccountuser_unionid.py b/users/migrations/0006_alter_officialaccountuser_unionid.py new file mode 100644 index 0000000..79f43ed --- /dev/null +++ b/users/migrations/0006_alter_officialaccountuser_unionid.py @@ -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'), + ), + ] diff --git a/users/migrations/0008_userguanshi_fenghong_erci_and_more.py b/users/migrations/0008_userguanshi_fenghong_erci_and_more.py new file mode 100644 index 0000000..7ad4d6b --- /dev/null +++ b/users/migrations/0008_userguanshi_fenghong_erci_and_more.py @@ -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='首次分红金额'), + ), + ] diff --git a/users/migrations/0009_userdashou_ewai_xiane_userdashou_jinritixian_jine_and_more.py b/users/migrations/0009_userdashou_ewai_xiane_userdashou_jinritixian_jine_and_more.py new file mode 100644 index 0000000..7c81b14 --- /dev/null +++ b/users/migrations/0009_userdashou_ewai_xiane_userdashou_jinritixian_jine_and_more.py @@ -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')], + }, + ), + ] diff --git a/users/migrations/0010_userguanshi_invite_qrcode_url.py b/users/migrations/0010_userguanshi_invite_qrcode_url.py new file mode 100644 index 0000000..36df9ed --- /dev/null +++ b/users/migrations/0010_userguanshi_invite_qrcode_url.py @@ -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'), + ), + ] diff --git a/users/migrations/0011_usermain_shoujihao_renzheng.py b/users/migrations/0011_usermain_shoujihao_renzheng.py new file mode 100644 index 0000000..16e2dc4 --- /dev/null +++ b/users/migrations/0011_usermain_shoujihao_renzheng.py @@ -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='手机号是否已认证'), + ), + ] diff --git a/users/migrations/0012_usershenheguan.py b/users/migrations/0012_usershenheguan.py new file mode 100644 index 0000000..2975667 --- /dev/null +++ b/users/migrations/0012_usershenheguan.py @@ -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')], + }, + ), + ] diff --git a/users/migrations/0013_usershenheguan_is_renzheng.py b/users/migrations/0013_usershenheguan_is_renzheng.py new file mode 100644 index 0000000..c78645a --- /dev/null +++ b/users/migrations/0013_usershenheguan_is_renzheng.py @@ -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='是否认证'), + ), + ] diff --git a/users/migrations/0014_tixianautorecord_tixianshenhejilu_and_more.py b/users/migrations/0014_tixianautorecord_tixianshenhejilu_and_more.py new file mode 100644 index 0000000..6500e1e --- /dev/null +++ b/users/migrations/0014_tixianautorecord_tixianshenhejilu_and_more.py @@ -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'), + ), + ]