进行了 GVSDSDK 迁移,可能存在诸多问题

This commit is contained in:
2026-06-17 20:37:47 +08:00
parent 72770ad73b
commit d00f0d08e5
132 changed files with 161593 additions and 4827 deletions

View File

@@ -1,92 +1,163 @@
# Generated by Django 4.2.27 on 2026-04-21 12:36
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),
('products', '0010_shangpinleixing_is_cross_enabled'),
]
operations = [
migrations.CreateModel(
name='YonghuPingzheng',
fields=[
('id', models.AutoField(primary_key=True, serialize=False, verbose_name='自增主键ID')),
('zhanghao', models.CharField(db_index=True, max_length=50, unique=True, verbose_name='登录账号')),
('mima', models.CharField(max_length=255, verbose_name='密码')),
('is_active', models.BooleanField(default=True, verbose_name='是否启用')),
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
('yonghu', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, to_field='yonghuid', verbose_name='关联用户ID')),
],
options={
'verbose_name': '用户认证凭证',
'verbose_name_plural': '用户认证凭证',
'db_table': 'yonghu_pingzheng',
},
),
migrations.CreateModel(
name='Dianpu',
fields=[
('id', models.AutoField(primary_key=True, serialize=False, verbose_name='店铺自增ID')),
('dianpu_mingcheng', models.CharField(max_length=50, verbose_name='店铺名称')),
('dianpu_touxiang', models.CharField(blank=True, max_length=500, null=True, verbose_name='店铺头像URL')),
('lianxi_dianhua', models.CharField(blank=True, max_length=20, null=True, verbose_name='联系电话')),
('weixinhao', models.CharField(blank=True, max_length=50, null=True, verbose_name='微信号')),
('zhuangtai', models.IntegerField(choices=[(0, '封禁'), (1, '正常')], default=1, verbose_name='店铺状态')),
('bangding_yonghushu', models.PositiveIntegerField(default=0, verbose_name='绑定用户总数')),
('erweima_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='更新时间')),
('pingzheng', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='shop.yonghupingzheng', verbose_name='关联用户凭证')),
],
options={
'verbose_name': '平台商家店铺',
'verbose_name_plural': '平台商家店铺',
'db_table': 'dianpu',
},
),
migrations.CreateModel(
name='YonghuDianpuBangding',
fields=[
('id', models.AutoField(primary_key=True, serialize=False, verbose_name='绑定自增ID')),
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
('dianpu', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='shop.dianpu', verbose_name='关联店铺ID')),
('yonghu', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, to_field='yonghuid', verbose_name='用户ID')),
],
options={
'verbose_name': '用户店铺绑定关系',
'verbose_name_plural': '用户店铺绑定关系',
'db_table': 'yonghu_dianpu_bangding',
'unique_together': {('yonghu', 'dianpu')},
},
),
migrations.CreateModel(
name='ShangpinLeixingDianpu',
fields=[
('id', models.AutoField(primary_key=True, serialize=False, verbose_name='类型自增ID')),
('jieshao', models.CharField(max_length=45, verbose_name='类型介绍')),
('tupian_url', models.CharField(blank=True, max_length=500, null=True, verbose_name='类型图片URL')),
('paixu', models.IntegerField(default=0, verbose_name='排序权重')),
('shangjia_zhuangtai', models.BooleanField(default=True, verbose_name='是否上架')),
('fengjin_zhuangtai', models.BooleanField(default=False, verbose_name='是否封禁')),
('shenhe_zhuangtai', models.BooleanField(default=False, help_text='True=审核通过False=未审核', verbose_name='平台审核状态')),
('dianpu', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='shop.dianpu', verbose_name='所属店铺')),
('gonggong_leixing', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='products.shangpinleixing', verbose_name='映射的公共商品类型')),
],
options={
'verbose_name': '店铺商品类型映射',
'verbose_name_plural': '店铺商品类型映射',
'db_table': 'shangdian_shangpin_leixing',
'indexes': [models.Index(fields=['dianpu'], name='shangdian_s_dianpu__100f93_idx'), models.Index(fields=['gonggong_leixing'], name='shangdian_s_gonggon_88a9a0_idx')],
},
),
]
# Generated by Django 4.2.27 on 2026-06-17 16:31
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),
('products', '0001_initial'),
]
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.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',
},
),
migrations.CreateModel(
name='YonghuPingzheng',
fields=[
('id', models.AutoField(primary_key=True, serialize=False, verbose_name='自增主键ID')),
('yonghu', models.CharField(db_index=True, max_length=7, unique=True, verbose_name='关联用户ID')),
('zhanghao', models.CharField(db_index=True, max_length=50, unique=True, verbose_name='登录账号')),
('mima', models.CharField(max_length=255, verbose_name='密码')),
('is_active', models.BooleanField(default=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': 'yonghu_pingzheng',
},
),
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='更新时间')),
('shangji_fenhong_cishu', models.PositiveIntegerField(default=0, verbose_name='作为上级获得分红次数')),
('shangji_fenhong_zonge', models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name='作为上级获得分红总额')),
('shangji_id', models.PositiveIntegerField(blank=True, null=True, verbose_name='当天对应的上级店铺ID若无则为空')),
('gei_shangji_cishu', models.PositiveIntegerField(default=0, verbose_name='给上级分红次数')),
('gei_shangji_zonge', models.DecimalField(decimal_places=2, default=0.0, max_digits=12, 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')},
},
),
migrations.CreateModel(
name='Dianpu',
fields=[
('id', models.AutoField(primary_key=True, serialize=False, verbose_name='店铺自增ID')),
('dianpu_mingcheng', models.CharField(max_length=50, verbose_name='店铺名称')),
('dianpu_touxiang', models.CharField(blank=True, max_length=500, null=True, verbose_name='店铺头像URL')),
('lianxi_dianhua', models.CharField(blank=True, max_length=20, null=True, verbose_name='联系电话')),
('weixinhao', models.CharField(blank=True, max_length=50, null=True, verbose_name='微信号')),
('zhuangtai', models.IntegerField(choices=[(0, '封禁'), (1, '正常')], default=1, verbose_name='店铺状态')),
('bangding_yonghushu', models.PositiveIntegerField(default=0, verbose_name='绑定用户总数')),
('erweima_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='更新时间')),
('kaiqi_shouyi_choucheng', models.BooleanField(default=False, verbose_name='是否开启店铺订单收益抽成')),
('shouyi_choucheng_feilv', models.DecimalField(blank=True, decimal_places=4, default=0.0, max_digits=5, null=True, verbose_name='店铺订单收益抽成费率小数如0.1000=10%')),
('ketixian_yue', models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name='店铺可提现余额')),
('zhengqu_zonge', models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name='店铺赚取总额')),
('meiri_tixian_xiane', models.DecimalField(blank=True, decimal_places=2, default=0.0, max_digits=10, null=True, verbose_name='店铺每日提现限额')),
('kaiqi_meiri_xiane', models.BooleanField(default=False, verbose_name='是否开启每日提现限额')),
('yaoqing_dianpu_id', models.PositiveIntegerField(blank=True, db_index=True, null=True, verbose_name='邀请人店铺ID(上级)')),
('fenhong_choucheng_feilv', models.DecimalField(blank=True, decimal_places=4, default=0.05, max_digits=5, null=True, verbose_name='上级分红抽成费率(默认5%)')),
('shangji_fenhong_leiji', models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name='作为上级累计获得分红')),
('shangji_ketixian_fenhong', models.DecimalField(decimal_places=2, default=0.0, max_digits=12, verbose_name='作为上级可提现分红余额')),
('pingzheng', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='shop.yonghupingzheng', verbose_name='关联用户凭证')),
],
options={
'verbose_name': '平台商家店铺',
'verbose_name_plural': '平台商家店铺',
'db_table': 'dianpu',
},
),
migrations.CreateModel(
name='YonghuDianpuBangding',
fields=[
('id', models.AutoField(primary_key=True, serialize=False, verbose_name='绑定自增ID')),
('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
('dianpu', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='shop.dianpu', verbose_name='关联店铺ID')),
('yonghu', models.ForeignKey(db_column='UserUUID', on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, to_field='UserUID', verbose_name='用户ID')),
],
options={
'verbose_name': '用户店铺绑定关系',
'verbose_name_plural': '用户店铺绑定关系',
'db_table': 'yonghu_dianpu_bangding',
'unique_together': {('yonghu', 'dianpu')},
},
),
migrations.CreateModel(
name='ShangpinLeixingDianpu',
fields=[
('id', models.AutoField(primary_key=True, serialize=False, verbose_name='类型自增ID')),
('jieshao', models.CharField(max_length=45, verbose_name='类型介绍')),
('tupian_url', models.CharField(blank=True, max_length=500, null=True, verbose_name='类型图片URL')),
('paixu', models.IntegerField(default=0, verbose_name='排序权重')),
('shangjia_zhuangtai', models.BooleanField(default=True, verbose_name='是否上架')),
('fengjin_zhuangtai', models.BooleanField(default=False, verbose_name='是否封禁')),
('shenhe_zhuangtai', models.BooleanField(default=False, help_text='True=审核通过False=未审核', verbose_name='平台审核状态')),
('dianpu', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='shop.dianpu', verbose_name='所属店铺')),
('gonggong_leixing', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='products.shangpinleixing', verbose_name='映射的公共商品类型')),
],
options={
'verbose_name': '店铺商品类型映射',
'verbose_name_plural': '店铺商品类型映射',
'db_table': 'shangdian_shangpin_leixing',
'indexes': [models.Index(fields=['dianpu'], name='shangdian_s_dianpu__100f93_idx'), models.Index(fields=['gonggong_leixing'], name='shangdian_s_gonggon_88a9a0_idx')],
},
),
]

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -148,9 +148,10 @@ class DianpuShouzhiMeiriTongji(QModel):
class YonghuDianpuBangding(QModel):
id = models.AutoField(primary_key=True, verbose_name='绑定自增ID')
yonghu = models.ForeignKey(
'users.UserMain', # 🔥 完整路径
to_field='yonghuid',
'gvsdsdk.User',
to_field='UserUID',
on_delete=models.CASCADE,
db_column='UserUUID',
db_index=True,
verbose_name='用户ID'
)

View File

@@ -42,7 +42,8 @@ from backend.utils import update_dashou_daily_by_action
from .models import YonghuPingzheng, Dianpu, DianpuShouzhiMeiriTongji
from users.models import UserMain, UserDashou, UserShangjia, UserGuanshi, UserZuzhang
from users.models import UserDashou, UserShangjia, UserGuanshi, UserZuzhang
from gvsdsdk.models import User
from shop.models import YonghuDianpuBangding, ShangpinLeixingDianpu, DianpuShangpinShenheShezhi
@@ -72,10 +73,10 @@ class BindDianpuView(APIView):
if not hasattr(user, 'yonghuid'):
return Response({'code': 500, 'msg': '用户身份信息异常'})
# 先获取 UserMain 对象(不加锁,仅用于校验存在性)
# 先获取 User 对象(不加锁,仅用于校验存在性)
try:
user_main = UserMain.query.get(yonghuid=user.yonghuid)
except UserMain.DoesNotExist:
user_main = User.query.get(yonghuid=user.yonghuid)
except User.DoesNotExist:
return Response({'code': 404, 'msg': '用户不存在'})
# 校验店铺是否存在且状态正常(不加锁)
@@ -91,7 +92,7 @@ class BindDianpuView(APIView):
try:
with transaction.atomic():
# 重新获取加锁的用户对象(确保并发安全)
user_main_locked = UserMain.objects.select_for_update().get(yonghuid=user.yonghuid)
user_main_locked = User.objects.select_for_update().get(yonghuid=user.yonghuid)
dianpu_locked = Dianpu.objects.select_for_update().get(id=dianpu_id)
# 再次校验店铺状态(防止事务期间被修改)
@@ -143,8 +144,8 @@ class ShopGoodsView(APIView):
def post(self, request):
user = request.user
try:
user_main = UserMain.query.get(yonghuid=user.yonghuid)
except UserMain.DoesNotExist:
user_main = User.query.get(yonghuid=user.yonghuid)
except User.DoesNotExist:
return Response({'code': 404, 'msg': '用户不存在'})
# 1. 查询用户店铺绑定关系
@@ -351,8 +352,8 @@ class ShangdianLoginView(APIView):
# 3. 验证用户主表是否存在
try:
user_main = UserMain.query.get(yonghuid=yonghuid)
except UserMain.DoesNotExist:
user_main = User.query.get(yonghuid=yonghuid)
except User.DoesNotExist:
logger.warning(f"登录失败用户ID不存在 - {yonghuid}")
return Response({'code': 404, 'msg': '账号或密码错误'})
@@ -1911,7 +1912,7 @@ class SubShopModifyView(APIView):
return Response({'code': 400, 'msg': '必填字段缺失user_uid, zhanghao, mima, dianpu_mingcheng'})
# 检查用户是否存在
if not UserMain.query.filter(yonghuid=user_uid).exists():
if not User.query.filter(yonghuid=user_uid).exists():
return Response({'code': 404, 'msg': '对应的小程序用户不存在'})
# 检查账号是否已占用
@@ -2587,12 +2588,12 @@ class ShopRefundView(APIView):
# 更新打手统计(退款量+1状态置为空闲
if dashou_id:
try:
dashou_user = UserMain.query.get(yonghuid=dashou_id)
dashou_user = User.query.get(yonghuid=dashou_id)
dashou_profile = dashou_user.dashou_profile
dashou_profile.tuikuanliang += 1
dashou_profile.zhuangtai = 1
dashou_profile.save()
except (UserMain.DoesNotExist, ObjectDoesNotExist):
except (User.DoesNotExist, ObjectDoesNotExist):
logger.warning(f"退款:打手 {dashou_id} 不存在,跳过状态更新")
# 更新退款记录表
@@ -2830,7 +2831,7 @@ class ShopForceCompleteView(APIView):
# ---------- 更新打手余额和统计 ----------
try:
dashou_user = UserMain.query.get(yonghuid=dashou_id)
dashou_user = User.query.get(yonghuid=dashou_id)
dashou_profile = dashou_user.dashou_profile
dashou_profile.chengjiaozongliang += 1
dashou_profile.yue += dashou_fencheng
@@ -2839,7 +2840,7 @@ class ShopForceCompleteView(APIView):
dashou_profile.jinyueshouyi += dashou_fencheng
dashou_profile.zhuangtai = 1 # 空闲
dashou_profile.save()
except (UserMain.DoesNotExist, ObjectDoesNotExist):
except (User.DoesNotExist, ObjectDoesNotExist):
logger.warning(f"本地订单结算:打手 {dashou_id} 不存在,跳过打手更新")
# ---------- 更新订单状态 ----------