加入了 GVSDSDK 模块,进行了 QModel 兼容层的尝试,生产环境可用
This commit is contained in:
@@ -1,8 +1,9 @@
|
||||
from django.db import models
|
||||
from gvsdsdk.model_base import QModel
|
||||
from django.utils import timezone
|
||||
|
||||
|
||||
class Shangpin(models.Model):
|
||||
class Shangpin(QModel):
|
||||
"""商品表 - 100-1000条数据"""
|
||||
id = models.AutoField(primary_key=True, verbose_name='商品ID')
|
||||
biaoqian = models.CharField(max_length=45,null=True, blank=True, verbose_name='商品标题') # 15汉字
|
||||
@@ -67,7 +68,7 @@ class Shangpin(models.Model):
|
||||
|
||||
|
||||
|
||||
class ShangpinLeixing(models.Model):
|
||||
class ShangpinLeixing(QModel):
|
||||
"""商品类型表 - <10条数据"""
|
||||
id = models.AutoField(primary_key=True, verbose_name='类型ID')
|
||||
yaoqiuleixing = models.PositiveIntegerField(null=True, blank=True, verbose_name='抢单要求类型')
|
||||
@@ -94,7 +95,7 @@ class ShangpinLeixing(models.Model):
|
||||
return f"{self.jieshao}"
|
||||
|
||||
|
||||
class ShangpinZhuanqu(models.Model):
|
||||
class ShangpinZhuanqu(QModel):
|
||||
"""商品专区表 - <50条数据"""
|
||||
id = models.AutoField(primary_key=True, verbose_name='专区ID')
|
||||
mingzi = models.CharField(max_length=45, null=True, blank=True, verbose_name='专区名称') # 15汉字
|
||||
@@ -131,7 +132,7 @@ class ShangpinZhuanqu(models.Model):
|
||||
return f"{self.mingzi}"
|
||||
|
||||
|
||||
class Huiyuan(models.Model):
|
||||
class Huiyuan(QModel):
|
||||
huiyuan_id = models.CharField(max_length=6, unique=True, verbose_name='会员ID')
|
||||
jieshao = models.CharField(max_length=30, verbose_name='会员介绍')
|
||||
jtjieshao = models.TextField(null=True, blank=True, verbose_name='会员规则介绍')
|
||||
@@ -159,7 +160,7 @@ class Huiyuan(models.Model):
|
||||
return f"会员{self.huiyuan_id}:{self.jieshao}"
|
||||
|
||||
|
||||
class Huiyuangoumai(models.Model):
|
||||
class Huiyuangoumai(QModel):
|
||||
id = models.AutoField(primary_key=True, verbose_name='购买记录ID')
|
||||
huiyuan_id = models.CharField(max_length=6, db_index=True, verbose_name='会员ID')
|
||||
yonghu_id = models.CharField(max_length=32, db_index=True, verbose_name='用户ID')
|
||||
@@ -203,7 +204,7 @@ class Huiyuangoumai(models.Model):
|
||||
return False
|
||||
|
||||
|
||||
class Czjilu(models.Model):
|
||||
class Czjilu(QModel):
|
||||
dingdan_id = models.CharField(max_length=32, unique=True, db_index=True, verbose_name='订单ID')
|
||||
huiyuan_id = models.CharField(max_length=6, null=True, blank=True, verbose_name='会员ID')
|
||||
zhuangtai = models.IntegerField(null=True, blank=True, verbose_name='订单状态')
|
||||
@@ -228,7 +229,7 @@ class Czjilu(models.Model):
|
||||
|
||||
|
||||
|
||||
class Gsfenhong(models.Model):
|
||||
class Gsfenhong(QModel):
|
||||
dingdan_id = models.CharField(max_length=32, unique=True, verbose_name='订单ID')
|
||||
guanshi = models.CharField(max_length=7, db_index=True, verbose_name='管事ID')
|
||||
dashouid = models.CharField(max_length=7, db_index=True,verbose_name='打手ID')
|
||||
@@ -267,7 +268,7 @@ class Gsfenhong(models.Model):
|
||||
|
||||
|
||||
|
||||
class DuociFenhong(models.Model):
|
||||
class DuociFenhong(QModel):
|
||||
"""
|
||||
多次分红配置表
|
||||
用于配置不同次数下管事和组长的分红金额
|
||||
@@ -300,7 +301,7 @@ class DuociFenhong(models.Model):
|
||||
|
||||
|
||||
|
||||
class ShangpinMeiriTongji(models.Model):
|
||||
class ShangpinMeiriTongji(QModel):
|
||||
"""
|
||||
商品每日统计表
|
||||
按商品 + 日期维度记录点单、成交、退款及收益数据
|
||||
|
||||
@@ -17,6 +17,7 @@ import defusedxml.ElementTree as ET
|
||||
from django.conf import settings
|
||||
from django.db import transaction, connection
|
||||
from django.db.models import Q
|
||||
from gvsdsdk.fluent import db, func, FQ
|
||||
from django.shortcuts import render, get_object_or_404
|
||||
from django.http import HttpResponse
|
||||
from django.utils import timezone
|
||||
@@ -78,12 +79,12 @@ class ShangpinHuoquView(APIView):
|
||||
|
||||
# 1. 查询商品类型(只查询正常状态的类型,并排序)
|
||||
# 正常运营:只显示 shenhezhuangtai=2 的商品类型
|
||||
leixing_queryset = ShangpinLeixing.objects.filter(
|
||||
leixing_queryset = ShangpinLeixing.query.filter(
|
||||
shenhezhuangtai=1 # 只取正常状态
|
||||
).order_by('-paixu', 'id') # 先按paixu降序,再按id升序
|
||||
|
||||
# 注意:审核期间使用下面这行代码(先注释掉)
|
||||
'''leixing_queryset = ShangpinLeixing.objects.filter(
|
||||
'''leixing_queryset = ShangpinLeixing.query.filter(
|
||||
shenhezhuangtai=2 # 审核期间:只取审核专用状态
|
||||
).order_by('-paixu', 'id')'''
|
||||
|
||||
@@ -101,12 +102,12 @@ class ShangpinHuoquView(APIView):
|
||||
visible_leixing_ids = [leixing['id'] for leixing in shangpinleixing_data]
|
||||
|
||||
if visible_leixing_ids:
|
||||
zhuanqu_queryset = ShangpinZhuanqu.objects.filter(
|
||||
zhuanqu_queryset = ShangpinZhuanqu.query.filter(
|
||||
leixing_id__in=visible_leixing_ids,
|
||||
shenhezhuangtai=1 # 🔴【添加】只筛选审核状态为2的专区
|
||||
).order_by('-paixu', 'id') # 先按paixu降序,再按id升序
|
||||
else:
|
||||
zhuanqu_queryset = ShangpinZhuanqu.objects.none()
|
||||
zhuanqu_queryset = ShangpinZhuanqu.query.none()
|
||||
|
||||
shangpinzhuanqu_data = []
|
||||
for zhuanqu in zhuanqu_queryset:
|
||||
@@ -123,7 +124,7 @@ class ShangpinHuoquView(APIView):
|
||||
|
||||
if visible_zhuanqu_ids:
|
||||
# 注意:这里使用values()只获取指定字段,提高查询效率
|
||||
shangpin_queryset = Shangpin.objects.filter(
|
||||
shangpin_queryset = Shangpin.query.filter(
|
||||
zhuanqu_id__in=visible_zhuanqu_ids,
|
||||
shenhezhuangtai=1 # 🔴【添加】只筛选审核状态为2的商品
|
||||
).values(
|
||||
@@ -186,7 +187,7 @@ class ShangpinXiangqingHuoquView(APIView):
|
||||
}, status=400)
|
||||
|
||||
# 直接查询,数据量小,性能没问题
|
||||
shangpin = Shangpin.objects.filter(id=shangpin_id).first()
|
||||
shangpin = Shangpin.query.filter(id=shangpin_id).first()
|
||||
|
||||
if not shangpin:
|
||||
return Response({
|
||||
@@ -256,7 +257,7 @@ class DashouHuiyuanList(APIView):
|
||||
}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
# 3. 查询所有会员数据(ORM查询,确保性能)
|
||||
huiyuan_queryset = Huiyuan.objects.all().only(
|
||||
huiyuan_queryset = Huiyuan.query.all().only(
|
||||
'huiyuan_id', # 会员ID
|
||||
'jieshao', # 会员名字(注意:jieshao字段实际存储的是会员名字)
|
||||
'jtjieshao', # 会员具体介绍
|
||||
@@ -349,7 +350,7 @@ class YajinGoumai(APIView):
|
||||
dingdanid = f"CzYJ{timestamp_ms:011d}{timestamp_ns:06d}{random_num:02d}"
|
||||
|
||||
# 4. 创建充值记录订单
|
||||
chongzhi_jilu = Czjilu.objects.create(
|
||||
chongzhi_jilu = Czjilu.query.create(
|
||||
dingdan_id=dingdanid,
|
||||
zhuangtai=9, # 未支付状态
|
||||
yonghuid=request.user.yonghuid,
|
||||
@@ -576,7 +577,7 @@ class YajinHuitiao(View):
|
||||
|
||||
# 4. 查询订单
|
||||
try:
|
||||
order = Czjilu.objects.get(dingdan_id=out_trade_no)
|
||||
order = Czjilu.query.get(dingdan_id=out_trade_no)
|
||||
logger.info(f"找到订单: {order.dingdan_id}, 状态: {order.zhuangtai}, 金额: {order.jine}")
|
||||
except Czjilu.DoesNotExist:
|
||||
logger.error(f"订单不存在: {out_trade_no}")
|
||||
@@ -605,7 +606,7 @@ class YajinHuitiao(View):
|
||||
# 8. 更新打手押金
|
||||
try:
|
||||
# 通过用户ID查找打手(高效查询)
|
||||
dashou = UserDashou.objects.get(user__yonghuid=order.yonghuid)
|
||||
dashou = UserDashou.query.get(user__yonghuid=order.yonghuid)
|
||||
|
||||
# 增加押金(使用Decimal确保精度)
|
||||
dashou.yajin += Decimal(str(order_amount_yuan))
|
||||
@@ -619,10 +620,10 @@ class YajinHuitiao(View):
|
||||
guanshi_id = dashou.yaoqingren
|
||||
if not guanshi_id:
|
||||
logger.info(f"押金分红跳过: 打手{order.yonghuid}无邀请管事")
|
||||
elif Gsfenhong.objects.filter(dingdan_id=order.dingdan_id).exists():
|
||||
elif Gsfenhong.query.filter(dingdan_id=order.dingdan_id).exists():
|
||||
logger.info(f"押金分红已处理: 订单{order.dingdan_id}")
|
||||
else:
|
||||
lilu_obj = Lilubiao.objects.filter(fadanpingtai='12').first()
|
||||
lilu_obj = Lilubiao.query.filter(fadanpingtai='12').first()
|
||||
rate = lilu_obj.lilu if lilu_obj and lilu_obj.lilu is not None else Decimal('0')
|
||||
if rate <= 0:
|
||||
logger.info(f"押金分红跳过: 费率未配置或为0")
|
||||
@@ -639,7 +640,7 @@ class YajinHuitiao(View):
|
||||
guanshi.save(update_fields=['yue', 'chongzhifenrun'])
|
||||
|
||||
user_main = dashou.user
|
||||
Gsfenhong.objects.create(
|
||||
Gsfenhong.query.create(
|
||||
dingdan_id=order.dingdan_id,
|
||||
guanshi=guanshi_id,
|
||||
dashouid=order.yonghuid,
|
||||
@@ -684,7 +685,7 @@ class YajinHuitiao(View):
|
||||
# 查询或创建ID=1的收支记录
|
||||
update_daily_income(jine_decimal)
|
||||
|
||||
szjilu, created = Szjilu.objects.get_or_create(
|
||||
szjilu, created = Szjilu.query.get_or_create(
|
||||
id=1,
|
||||
defaults={
|
||||
'zongsy': Decimal('0.00'),
|
||||
@@ -795,7 +796,7 @@ class YajinShibai(APIView):
|
||||
|
||||
# 2. 查询订单(确保是当前用户的订单)
|
||||
try:
|
||||
order = Czjilu.objects.get(
|
||||
order = Czjilu.query.get(
|
||||
dingdan_id=dingdanid,
|
||||
yonghuid=request.user.yonghuid
|
||||
)
|
||||
@@ -853,7 +854,7 @@ class YajinLunxun(APIView):
|
||||
|
||||
# 2. 查询订单(确保是当前用户的订单)
|
||||
try:
|
||||
order = Czjilu.objects.get(
|
||||
order = Czjilu.query.get(
|
||||
dingdan_id=dingdanid,
|
||||
yonghuid=request.user.yonghuid
|
||||
)
|
||||
@@ -945,7 +946,7 @@ class JifenBuchong(APIView):
|
||||
|
||||
# 5. 创建积分充值记录订单(固定5元)
|
||||
jine = 5.00 # 固定5元
|
||||
chongzhi_jilu = Czjilu.objects.create(
|
||||
chongzhi_jilu = Czjilu.query.create(
|
||||
dingdan_id=dingdanid,
|
||||
zhuangtai=9, # 未支付状态
|
||||
yonghuid=request.user.yonghuid,
|
||||
@@ -1170,7 +1171,7 @@ class JifenHuitiao(View):
|
||||
|
||||
# 4. 查询订单
|
||||
try:
|
||||
order = Czjilu.objects.get(dingdan_id=out_trade_no)
|
||||
order = Czjilu.query.get(dingdan_id=out_trade_no)
|
||||
logger.info(f"找到积分订单: {order.dingdan_id}, 状态: {order.zhuangtai}, 金额: {order.jine}")
|
||||
except Czjilu.DoesNotExist:
|
||||
logger.error(f"积分订单不存在: {out_trade_no}")
|
||||
@@ -1199,7 +1200,7 @@ class JifenHuitiao(View):
|
||||
update_daily_income(jine_decimal)
|
||||
|
||||
# 查询或创建ID=1的收支记录
|
||||
szjilu, created = Szjilu.objects.get_or_create(
|
||||
szjilu, created = Szjilu.query.get_or_create(
|
||||
id=1,
|
||||
defaults={
|
||||
'zongsy': Decimal('0.00'),
|
||||
@@ -1233,7 +1234,7 @@ class JifenHuitiao(View):
|
||||
# 8. 更新打手积分
|
||||
try:
|
||||
# 通过用户ID查找打手
|
||||
dashou = UserDashou.objects.get(user__yonghuid=order.yonghuid)
|
||||
dashou = UserDashou.query.get(user__yonghuid=order.yonghuid)
|
||||
|
||||
# 检查积分是否小于10
|
||||
if dashou.jifen < 10:
|
||||
@@ -1339,7 +1340,7 @@ class JifenShibai(APIView):
|
||||
|
||||
# 2. 查询订单(确保是当前用户的订单)
|
||||
try:
|
||||
order = Czjilu.objects.get(
|
||||
order = Czjilu.query.get(
|
||||
dingdan_id=dingdanid,
|
||||
yonghuid=request.user.yonghuid
|
||||
)
|
||||
@@ -1404,7 +1405,7 @@ class JifenLunxun(APIView):
|
||||
|
||||
# 2. 查询订单(确保是当前用户的订单)
|
||||
try:
|
||||
order = Czjilu.objects.get(
|
||||
order = Czjilu.query.get(
|
||||
dingdan_id=dingdanid,
|
||||
yonghuid=request.user.yonghuid
|
||||
)
|
||||
@@ -1497,7 +1498,7 @@ class HuiyuanGoumai(APIView):
|
||||
|
||||
# 4. 查询会员信息
|
||||
try:
|
||||
huiyuan = Huiyuan.objects.get(huiyuan_id=huiyuanid)
|
||||
huiyuan = Huiyuan.query.get(huiyuan_id=huiyuanid)
|
||||
except Huiyuan.DoesNotExist:
|
||||
return Response({
|
||||
'code': 400,
|
||||
@@ -1516,7 +1517,7 @@ class HuiyuanGoumai(APIView):
|
||||
# 组合订单说明:会员介绍 + 配置描述
|
||||
shuoming = f"{huiyuan.jieshao} - {settings.HUIYUAN_PAY_DESCRIPTION}"
|
||||
|
||||
chongzhi_jilu = Czjilu.objects.create(
|
||||
chongzhi_jilu = Czjilu.query.create(
|
||||
dingdan_id=dingdanid,
|
||||
zhuangtai=9, # 未支付状态
|
||||
yonghuid=request.user.yonghuid,
|
||||
@@ -1741,7 +1742,7 @@ class HuiyuanHuitiao(View):
|
||||
|
||||
# 查询订单
|
||||
try:
|
||||
order = Czjilu.objects.get(dingdan_id=out_trade_no)
|
||||
order = Czjilu.query.get(dingdan_id=out_trade_no)
|
||||
except Czjilu.DoesNotExist:
|
||||
logger.error(f"会员订单不存在: {out_trade_no}")
|
||||
return self.wechat_response('FAIL', '订单不存在')
|
||||
@@ -1763,7 +1764,7 @@ class HuiyuanHuitiao(View):
|
||||
|
||||
# 查询会员信息
|
||||
try:
|
||||
huiyuan = Huiyuan.objects.get(huiyuan_id=order.huiyuan_id)
|
||||
huiyuan = Huiyuan.query.get(huiyuan_id=order.huiyuan_id)
|
||||
except Huiyuan.DoesNotExist:
|
||||
logger.error(f"会员信息不存在: {order.huiyuan_id}")
|
||||
return self.wechat_response('FAIL', '会员信息不存在')
|
||||
@@ -1774,7 +1775,7 @@ class HuiyuanHuitiao(View):
|
||||
|
||||
update_daily_income(jine_decimal)
|
||||
|
||||
szjilu, _ = Szjilu.objects.get_or_create(
|
||||
szjilu, _ = Szjilu.query.get_or_create(
|
||||
id=1,
|
||||
defaults={'zongsy': Decimal('0.00'), 'zongls': Decimal('0.00'), 'zongzc': Decimal('0.00'),
|
||||
'jrzc': Decimal('0.00'), 'jrls': Decimal('0.00')}
|
||||
@@ -1823,7 +1824,7 @@ class HuiyuanHuitiao(View):
|
||||
def process_huiyuan_goumai(self, yonghuid, huiyuan_id, huiyuan):
|
||||
"""处理会员购买记录(与原代码一致)"""
|
||||
try:
|
||||
existing_record = Huiyuangoumai.objects.filter(
|
||||
existing_record = Huiyuangoumai.query.filter(
|
||||
yonghu_id=yonghuid,
|
||||
huiyuan_id=huiyuan_id
|
||||
).first()
|
||||
@@ -1837,14 +1838,14 @@ class HuiyuanHuitiao(View):
|
||||
logger.info(f"会员续费: 用户{yonghuid}, 会员{huiyuan_id}")
|
||||
return existing_record, False, False
|
||||
else:
|
||||
other_huiyuan_count = Huiyuangoumai.objects.filter(
|
||||
other_huiyuan_count = Huiyuangoumai.query.filter(
|
||||
yonghu_id=yonghuid
|
||||
).exclude(huiyuan_id=huiyuan_id).count()
|
||||
if other_huiyuan_count == 0:
|
||||
is_first_buy_any = True
|
||||
logger.info(f"用户{yonghuid}首次购买任何会员,将获得10积分")
|
||||
|
||||
goumai_record = Huiyuangoumai.objects.create(
|
||||
goumai_record = Huiyuangoumai.query.create(
|
||||
yonghu_id=yonghuid,
|
||||
huiyuan_id=huiyuan_id,
|
||||
jieshao=huiyuan.jieshao,
|
||||
@@ -1863,7 +1864,7 @@ class HuiyuanHuitiao(View):
|
||||
def add_first_buy_jifen(self, yonghuid):
|
||||
"""首次购买积分奖励(与原代码一致)"""
|
||||
try:
|
||||
dashou = UserDashou.objects.get(user__yonghuid=yonghuid)
|
||||
dashou = UserDashou.query.get(user__yonghuid=yonghuid)
|
||||
dashou.jifen += 10
|
||||
dashou.save(update_fields=['jifen'])
|
||||
logger.info(f"用户{yonghuid}首次购买会员,积分+10,当前积分: {dashou.jifen}")
|
||||
@@ -1879,7 +1880,7 @@ class HuiyuanHuitiao(View):
|
||||
"""
|
||||
try:
|
||||
# 获取打手信息
|
||||
dashou = UserDashou.objects.get(user__yonghuid=order.yonghuid)
|
||||
dashou = UserDashou.query.get(user__yonghuid=order.yonghuid)
|
||||
guanshi_id = dashou.yaoqingren
|
||||
if not guanshi_id:
|
||||
logger.info(f"打手{order.yonghuid}没有邀请人,无分红")
|
||||
@@ -1887,7 +1888,7 @@ class HuiyuanHuitiao(View):
|
||||
|
||||
# 获取管事信息
|
||||
try:
|
||||
guanshi = UserGuanshi.objects.get(user__yonghuid=guanshi_id)
|
||||
guanshi = UserGuanshi.query.get(user__yonghuid=guanshi_id)
|
||||
except UserGuanshi.DoesNotExist:
|
||||
logger.warning(f"管事信息不存在: {guanshi_id}")
|
||||
return
|
||||
@@ -1901,7 +1902,7 @@ class HuiyuanHuitiao(View):
|
||||
nicheng = dashou.nicheng or "未知打手"
|
||||
|
||||
# 查询该打手针对该管事的已分红次数
|
||||
existing_count = Gsfenhong.objects.filter(
|
||||
existing_count = Gsfenhong.query.filter(
|
||||
dashouid=order.yonghuid,
|
||||
guanshi=guanshi_id
|
||||
).count()
|
||||
@@ -1921,7 +1922,7 @@ class HuiyuanHuitiao(View):
|
||||
if zuzhang_id:
|
||||
# 获取组长信息
|
||||
try:
|
||||
zuzhang = UserZuzhang.objects.get(user__yonghuid=zuzhang_id)
|
||||
zuzhang = UserZuzhang.query.get(user__yonghuid=zuzhang_id)
|
||||
except UserZuzhang.DoesNotExist:
|
||||
logger.warning(f"组长信息不存在: {zuzhang_id}")
|
||||
zuzhang = None
|
||||
@@ -1965,7 +1966,7 @@ class HuiyuanHuitiao(View):
|
||||
logger.info(f"组长分红成功: 组长{zuzhang_id}, 金额{zuzhang_fenhong}")
|
||||
|
||||
# 创建分红记录
|
||||
Gsfenhong.objects.create(
|
||||
Gsfenhong.query.create(
|
||||
dingdan_id=order.dingdan_id,
|
||||
guanshi=guanshi_id,
|
||||
dashouid=order.yonghuid,
|
||||
@@ -2030,7 +2031,7 @@ class HuiyuanHuitiao(View):
|
||||
"""计算管事分红金额"""
|
||||
# 先查多次分红配置表
|
||||
try:
|
||||
config = DuociFenhong.objects.get(
|
||||
config = DuociFenhong.query.get(
|
||||
huiyuan=huiyuan,
|
||||
yonghuid=guanshi_id,
|
||||
cishu=cishu
|
||||
@@ -2055,7 +2056,7 @@ class HuiyuanHuitiao(View):
|
||||
return None
|
||||
# 查多次分红配置表
|
||||
try:
|
||||
config = DuociFenhong.objects.get(
|
||||
config = DuociFenhong.query.get(
|
||||
huiyuan=huiyuan,
|
||||
yonghuid=zuzhang_id,
|
||||
cishu=cishu
|
||||
@@ -2141,7 +2142,7 @@ class HuiyuanShibai(APIView):
|
||||
|
||||
# 2. 查询订单(确保是当前用户的订单)
|
||||
try:
|
||||
order = Czjilu.objects.get(
|
||||
order = Czjilu.query.get(
|
||||
dingdan_id=dingdanid,
|
||||
yonghuid=request.user.yonghuid
|
||||
)
|
||||
@@ -2206,7 +2207,7 @@ class HuiyuanLunxun(APIView):
|
||||
|
||||
# 2. 查询订单(确保是当前用户的订单)
|
||||
try:
|
||||
order = Czjilu.objects.get(
|
||||
order = Czjilu.query.get(
|
||||
dingdan_id=dingdanid,
|
||||
yonghuid=request.user.yonghuid
|
||||
)
|
||||
@@ -2233,10 +2234,10 @@ class HuiyuanLunxun(APIView):
|
||||
|
||||
# 5. 查询会员信息
|
||||
try:
|
||||
huiyuan = Huiyuan.objects.get(huiyuan_id=order.huiyuan_id)
|
||||
huiyuan = Huiyuan.query.get(huiyuan_id=order.huiyuan_id)
|
||||
|
||||
# 6. 查询会员购买记录
|
||||
goumai_record = Huiyuangoumai.objects.filter(
|
||||
goumai_record = Huiyuangoumai.query.filter(
|
||||
yonghu_id=request.user.yonghuid,
|
||||
huiyuan_id=order.huiyuan_id
|
||||
).first()
|
||||
@@ -2350,7 +2351,7 @@ class ShangjiaChongzhi(APIView):
|
||||
|
||||
# 4. 创建充值记录订单
|
||||
try:
|
||||
chongzhi_jilu = Czjilu.objects.create(
|
||||
chongzhi_jilu = Czjilu.query.create(
|
||||
dingdan_id=dingdanid,
|
||||
zhuangtai=9, # 未支付状态
|
||||
yonghuid=request.user.yonghuid,
|
||||
@@ -2577,7 +2578,7 @@ class ShangjiaHuitiao(View):
|
||||
|
||||
# 4. 查询订单
|
||||
try:
|
||||
order = Czjilu.objects.get(dingdan_id=out_trade_no)
|
||||
order = Czjilu.query.get(dingdan_id=out_trade_no)
|
||||
logger.info(f"找到商家订单: {order.dingdan_id}, 状态: {order.zhuangtai}, 金额: {order.jine}")
|
||||
except Czjilu.DoesNotExist:
|
||||
logger.error(f"商家订单不存在: {out_trade_no}")
|
||||
@@ -2607,7 +2608,7 @@ class ShangjiaHuitiao(View):
|
||||
update_daily_income(jine_decimal)
|
||||
|
||||
# 查询或创建ID=1的收支记录
|
||||
szjilu, created = Szjilu.objects.get_or_create(
|
||||
szjilu, created = Szjilu.query.get_or_create(
|
||||
id=1,
|
||||
defaults={
|
||||
'zongsy': Decimal('0.00'),
|
||||
@@ -2644,7 +2645,7 @@ class ShangjiaHuitiao(View):
|
||||
# 更新商家余额
|
||||
try:
|
||||
# 通过用户ID查找商家(高效查询)
|
||||
shangjia = UserShangjia.objects.get(user__yonghuid=order.yonghuid)
|
||||
shangjia = UserShangjia.query.get(user__yonghuid=order.yonghuid)
|
||||
|
||||
# 增加余额
|
||||
shangjia.yue += order_amount_yuan
|
||||
@@ -2746,7 +2747,7 @@ class ShangjiaShibai(APIView):
|
||||
|
||||
# 2. 查询订单(确保是当前用户的订单)
|
||||
try:
|
||||
order = Czjilu.objects.get(
|
||||
order = Czjilu.query.get(
|
||||
dingdan_id=dingdanid,
|
||||
yonghuid=request.user.yonghuid,
|
||||
leixing=4 # 确保是商家充值订单
|
||||
@@ -2812,7 +2813,7 @@ class ShangjiaChenggong(APIView):
|
||||
|
||||
# 2. 查询订单(确保是当前用户的商家订单)
|
||||
try:
|
||||
order = Czjilu.objects.get(
|
||||
order = Czjilu.query.get(
|
||||
dingdan_id=dingdanid,
|
||||
yonghuid=request.user.yonghuid,
|
||||
leixing=4 # 商家充值类型
|
||||
@@ -2895,13 +2896,13 @@ class GuanshiFenhongListAPI(APIView):
|
||||
# 先查询总数(使用分页查询优化)
|
||||
|
||||
# 查询总记录数
|
||||
zong_tiaoshu = Gsfenhong.objects.filter(query).count()
|
||||
zong_tiaoshu = Gsfenhong.query.filter(query).count()
|
||||
|
||||
# 查询去重后的打手数量
|
||||
chongzhi_dashou_shuliang = Gsfenhong.objects.filter(query).values('dashouid').distinct().count()
|
||||
chongzhi_dashou_shuliang = Gsfenhong.query.filter(query).values('dashouid').distinct().count()
|
||||
|
||||
# 查询当前页数据,按创建时间倒序排列
|
||||
fenhong_list = Gsfenhong.objects.filter(query) \
|
||||
fenhong_list = Gsfenhong.query.filter(query) \
|
||||
.order_by('-create_time') \
|
||||
.values('dashouid', 'avatar', 'nicheng', 'fenhong', 'create_time')[offset:offset + page_size]
|
||||
|
||||
@@ -3007,7 +3008,7 @@ class AdGetAllDataView(APIView):
|
||||
try:
|
||||
# 使用select_related或prefetch_related优化查询(如果需要关联查询)
|
||||
# 这里直接查询所有字段,然后提取需要的字段
|
||||
shangpinleixing_queryset = ShangpinLeixing.objects.all()
|
||||
shangpinleixing_queryset = ShangpinLeixing.query.all()
|
||||
|
||||
# 转换为前端需要的格式
|
||||
shangpinleixing_list = []
|
||||
@@ -3031,7 +3032,7 @@ class AdGetAllDataView(APIView):
|
||||
# 7. 查询商品专区数据
|
||||
try:
|
||||
# 查询所有商品专区
|
||||
zhuanqu_queryset = ShangpinZhuanqu.objects.all()
|
||||
zhuanqu_queryset = ShangpinZhuanqu.query.all()
|
||||
|
||||
# 转换为前端需要的格式
|
||||
zhuanqu_list = []
|
||||
@@ -3052,7 +3053,7 @@ class AdGetAllDataView(APIView):
|
||||
# 8. 查询会员数据
|
||||
try:
|
||||
# 查询所有会员
|
||||
huiyuan_queryset = Huiyuan.objects.all()
|
||||
huiyuan_queryset = Huiyuan.query.all()
|
||||
|
||||
# 转换为前端需要的格式
|
||||
huiyuan_list = []
|
||||
@@ -3137,7 +3138,7 @@ class ShangpinLeixingFabuView(APIView):
|
||||
|
||||
# 1.3 验证管理员扩展表(使用AdminProfile模型)
|
||||
try:
|
||||
admin_profile = AdminProfile.objects.get(user=user_main)
|
||||
admin_profile = AdminProfile.query.get(user=user_main)
|
||||
except AdminProfile.DoesNotExist:
|
||||
return Response(
|
||||
{'code': 401, 'msg': '管理员信息不存在', 'data': None},
|
||||
@@ -3195,7 +3196,7 @@ class ShangpinLeixingFabuView(APIView):
|
||||
)
|
||||
# 验证会员ID是否存在
|
||||
try:
|
||||
huiyuan_obj = Huiyuan.objects.get(huiyuan_id=huiyuan_id)
|
||||
huiyuan_obj = Huiyuan.query.get(huiyuan_id=huiyuan_id)
|
||||
except Huiyuan.DoesNotExist:
|
||||
return Response(
|
||||
{'code': 400, 'msg': '会员ID不存在', 'data': None},
|
||||
@@ -3337,7 +3338,7 @@ class ShangpinZhuanquFabuView(APIView):
|
||||
|
||||
# 1.3 验证管理员扩展表(使用AdminProfile模型)
|
||||
try:
|
||||
admin_profile = AdminProfile.objects.get(user=user_main)
|
||||
admin_profile = AdminProfile.query.get(user=user_main)
|
||||
except AdminProfile.DoesNotExist:
|
||||
return Response(
|
||||
{'code': 401, 'msg': '管理员信息不存在', 'data': None},
|
||||
@@ -3364,7 +3365,7 @@ class ShangpinZhuanquFabuView(APIView):
|
||||
# 2.2 验证类型ID是否存在
|
||||
try:
|
||||
# 验证商品类型是否存在
|
||||
leixing_obj = ShangpinLeixing.objects.get(id=leixing_id)
|
||||
leixing_obj = ShangpinLeixing.query.get(id=leixing_id)
|
||||
except ShangpinLeixing.DoesNotExist:
|
||||
return Response(
|
||||
{'code': 400, 'msg': '商品类型不存在', 'data': None},
|
||||
@@ -3446,7 +3447,7 @@ class ShangpinFabuView(APIView):
|
||||
|
||||
# 1.3 验证管理员扩展表(使用AdminProfile模型)
|
||||
try:
|
||||
admin_profile = AdminProfile.objects.get(user=user_main)
|
||||
admin_profile = AdminProfile.query.get(user=user_main)
|
||||
except AdminProfile.DoesNotExist:
|
||||
return Response(
|
||||
{'code': 401, 'msg': '管理员信息不存在', 'data': None},
|
||||
@@ -3535,7 +3536,7 @@ class ShangpinFabuView(APIView):
|
||||
# === 3. 验证关联数据 ===
|
||||
# 3.1 验证商品类型
|
||||
try:
|
||||
leixing_obj = ShangpinLeixing.objects.get(id=leixing_id)
|
||||
leixing_obj = ShangpinLeixing.query.get(id=leixing_id)
|
||||
except ShangpinLeixing.DoesNotExist:
|
||||
return Response(
|
||||
{'code': 400, 'msg': '商品类型不存在', 'data': None},
|
||||
@@ -3563,7 +3564,7 @@ class ShangpinFabuView(APIView):
|
||||
|
||||
# 验证会员是否存在
|
||||
try:
|
||||
huiyuan_obj = Huiyuan.objects.get(huiyuan_id=huiyuan_id)
|
||||
huiyuan_obj = Huiyuan.query.get(huiyuan_id=huiyuan_id)
|
||||
except Huiyuan.DoesNotExist:
|
||||
return Response(
|
||||
{'code': 400, 'msg': '会员不存在', 'data': None},
|
||||
@@ -3606,7 +3607,7 @@ class ShangpinFabuView(APIView):
|
||||
|
||||
# 3.3 验证商品专区
|
||||
try:
|
||||
zhuanqu_obj = ShangpinZhuanqu.objects.get(id=zhuanqu_id, leixing_id=leixing_id)
|
||||
zhuanqu_obj = ShangpinZhuanqu.query.get(id=zhuanqu_id, leixing_id=leixing_id)
|
||||
except ShangpinZhuanqu.DoesNotExist:
|
||||
return Response(
|
||||
{'code': 400, 'msg': '商品专区不存在或与商品类型不匹配', 'data': None},
|
||||
@@ -3750,7 +3751,7 @@ class GuizeTupianShangchuanView(APIView):
|
||||
|
||||
# 1.3 验证管理员扩展表(使用AdminProfile模型)
|
||||
try:
|
||||
admin_profile = AdminProfile.objects.get(user=user_main)
|
||||
admin_profile = AdminProfile.query.get(user=user_main)
|
||||
except AdminProfile.DoesNotExist:
|
||||
return Response(
|
||||
{'code': 401, 'msg': '管理员信息不存在', 'data': None},
|
||||
@@ -3784,7 +3785,7 @@ class GuizeTupianShangchuanView(APIView):
|
||||
|
||||
# === 3. 验证商品是否存在 ===
|
||||
try:
|
||||
shangpin_obj = Shangpin.objects.get(id=shangpin_id)
|
||||
shangpin_obj = Shangpin.query.get(id=shangpin_id)
|
||||
except Shangpin.DoesNotExist:
|
||||
return Response(
|
||||
{'code': 400, 'msg': '商品不存在', 'data': None},
|
||||
@@ -3893,7 +3894,7 @@ class AdHuiyuanHqView(APIView):
|
||||
|
||||
# 1.3 验证管理员扩展表(使用AdminProfile模型)
|
||||
try:
|
||||
admin_profile = AdminProfile.objects.get(user=user_main)
|
||||
admin_profile = AdminProfile.query.get(user=user_main)
|
||||
except AdminProfile.DoesNotExist:
|
||||
return Response(
|
||||
{'code': 401, 'msg': '权限验证失败', 'data': None},
|
||||
@@ -3902,7 +3903,7 @@ class AdHuiyuanHqView(APIView):
|
||||
|
||||
# === 2. 查询会员表数据 ===
|
||||
# 查询所有会员数据,按创建时间倒序排列
|
||||
huiyuan_queryset = Huiyuan.objects.all().order_by('-create_time')
|
||||
huiyuan_queryset = Huiyuan.query.all().order_by('-create_time')
|
||||
|
||||
# 构建会员数据列表
|
||||
huiyuan_list = []
|
||||
@@ -3923,7 +3924,7 @@ class AdHuiyuanHqView(APIView):
|
||||
|
||||
# === 3. 查询商品类型表数据 ===
|
||||
# 筛选抢单要求类型等于数字1的所有数据(yaoqiuleixing=1)
|
||||
shangpinleixing_queryset = ShangpinLeixing.objects.filter(
|
||||
shangpinleixing_queryset = ShangpinLeixing.query.filter(
|
||||
yaoqiuleixing=1 # 抢单要求类型为1(会员抢单)
|
||||
).order_by('id') # 按ID排序
|
||||
|
||||
@@ -4000,7 +4001,7 @@ class HuiyuanXiugaiView(APIView):
|
||||
|
||||
# 1.3 验证管理员扩展表
|
||||
try:
|
||||
admin_profile = AdminProfile.objects.get(user=user_main)
|
||||
admin_profile = AdminProfile.query.get(user=user_main)
|
||||
except AdminProfile.DoesNotExist:
|
||||
return Response(
|
||||
{'code': 401, 'msg': '权限验证失败', 'data': None},
|
||||
@@ -4017,7 +4018,7 @@ class HuiyuanXiugaiView(APIView):
|
||||
|
||||
# === 3. 查询会员数据 ===
|
||||
try:
|
||||
huiyuan_obj = Huiyuan.objects.get(huiyuan_id=huiyuan_id)
|
||||
huiyuan_obj = Huiyuan.query.get(huiyuan_id=huiyuan_id)
|
||||
except Huiyuan.DoesNotExist:
|
||||
return Response(
|
||||
{'code': 400, 'msg': '会员不存在', 'data': None},
|
||||
@@ -4173,7 +4174,7 @@ class AdHuiyuanFbView(APIView):
|
||||
|
||||
# 1.3 验证管理员扩展表
|
||||
try:
|
||||
admin_profile = AdminProfile.objects.get(user=user_main)
|
||||
admin_profile = AdminProfile.query.get(user=user_main)
|
||||
except AdminProfile.DoesNotExist:
|
||||
return Response(
|
||||
{'code': 401, 'msg': '权限验证失败', 'data': None},
|
||||
@@ -4264,7 +4265,7 @@ class AdHuiyuanFbView(APIView):
|
||||
random_part = ''.join(random.choices(chars, k=5))
|
||||
huiyuan_id = f"V{random_part}"
|
||||
# 检查是否已存在
|
||||
if not Huiyuan.objects.filter(huiyuan_id=huiyuan_id).exists():
|
||||
if not Huiyuan.query.filter(huiyuan_id=huiyuan_id).exists():
|
||||
return huiyuan_id
|
||||
|
||||
huiyuan_id = generate_huiyuan_id()
|
||||
@@ -4360,15 +4361,15 @@ class AdShangpinHuQu(APIView):
|
||||
)
|
||||
|
||||
# 6. 查询公告数据(类型=1的公告)
|
||||
gonggao_obj = Gonggao.objects.filter(leixing=1).first()
|
||||
gonggao_obj = Gonggao.query.filter(leixing=1).first()
|
||||
shangpingonggao = gonggao_obj.jieshao if gonggao_obj else ''
|
||||
|
||||
# 7. 查询轮播图数据(类型=1的轮播图)
|
||||
lunbo_objs = Lunbo.objects.filter(leixing=1).values('tupian_url')
|
||||
lunbo_objs = Lunbo.query.filter(leixing=1).values('tupian_url')
|
||||
shangpinlunbo = [item['tupian_url'] for item in lunbo_objs]
|
||||
|
||||
# 8. 查询商品类型数据
|
||||
shangpinleixing_data = ShangpinLeixing.objects.all().values(
|
||||
shangpinleixing_data = ShangpinLeixing.query.all().values(
|
||||
'id', # 类型ID
|
||||
'jieshao', # 类型介绍(类型名称)
|
||||
'tupian_url', # 类型图片URL
|
||||
@@ -4378,21 +4379,21 @@ class AdShangpinHuQu(APIView):
|
||||
)
|
||||
|
||||
# 9. 查询商品专区数据
|
||||
shangpinzhuanqu_data = ShangpinZhuanqu.objects.all().values(
|
||||
shangpinzhuanqu_data = ShangpinZhuanqu.query.all().values(
|
||||
'id', # 专区ID
|
||||
'mingzi', # 专区名称
|
||||
'leixing_id' # 所属类型ID
|
||||
)
|
||||
|
||||
# 10. 查询会员数据
|
||||
huiyuan_data = Huiyuan.objects.all().values(
|
||||
huiyuan_data = Huiyuan.query.all().values(
|
||||
'huiyuan_id', # 会员ID
|
||||
'jieshao', # 会员介绍(会员名称)
|
||||
'jiage' # 会员价格
|
||||
)
|
||||
|
||||
# 11. 查询商品数据
|
||||
shangpin_data = Shangpin.objects.all().values(
|
||||
shangpin_data = Shangpin.query.all().values(
|
||||
'id', # 商品ID
|
||||
'biaoqian', # 商品标题/标签
|
||||
'jiage', # 商品价格
|
||||
@@ -4493,7 +4494,7 @@ class AdGonggaoXiuGai(APIView):
|
||||
)
|
||||
|
||||
# 8. 查询公告表,类型为1的公告
|
||||
gonggao_obj = Gonggao.objects.filter(leixing=1).first()
|
||||
gonggao_obj = Gonggao.query.filter(leixing=1).first()
|
||||
|
||||
# 如果不存在,则创建
|
||||
if not gonggao_obj:
|
||||
@@ -4587,7 +4588,7 @@ class AdZhuanquXiuGai(APIView):
|
||||
|
||||
# 3. 查询专区
|
||||
try:
|
||||
zhuanqu_obj = ShangpinZhuanqu.objects.get(id=zhuanqu_id)
|
||||
zhuanqu_obj = ShangpinZhuanqu.query.get(id=zhuanqu_id)
|
||||
except ShangpinZhuanqu.DoesNotExist:
|
||||
return Response(
|
||||
{'code': 400, 'message': '专区不存在', 'data': None},
|
||||
@@ -4683,7 +4684,7 @@ class AdLunboXiuGai(APIView):
|
||||
)
|
||||
|
||||
# 查询轮播图记录
|
||||
lunbo_obj = Lunbo.objects.filter(tupian_url=tupian_url, leixing=1).first()
|
||||
lunbo_obj = Lunbo.query.filter(tupian_url=tupian_url, leixing=1).first()
|
||||
|
||||
if not lunbo_obj:
|
||||
return Response(
|
||||
@@ -4758,7 +4759,7 @@ class AdLunboXiuGai(APIView):
|
||||
)
|
||||
|
||||
# 创建轮播图记录
|
||||
lunbo_obj = Lunbo.objects.create(
|
||||
lunbo_obj = Lunbo.query.create(
|
||||
tupian_url=oss_file_path, # 存相对路径
|
||||
leixing=1
|
||||
)
|
||||
@@ -4819,7 +4820,7 @@ class AdLeixingXiuGai(APIView):
|
||||
|
||||
# 3. 查询商品类型
|
||||
try:
|
||||
leixing_obj = ShangpinLeixing.objects.get(id=leixing_id)
|
||||
leixing_obj = ShangpinLeixing.query.get(id=leixing_id)
|
||||
except ShangpinLeixing.DoesNotExist:
|
||||
return Response({'code': 400, 'message': '商品类型不存在', 'data': None},
|
||||
status=status.HTTP_400_BAD_REQUEST)
|
||||
@@ -4848,7 +4849,7 @@ class AdLeixingXiuGai(APIView):
|
||||
leixing_obj.huiyuan_id = huiyuan_id
|
||||
# 验证会员存在
|
||||
try:
|
||||
Huiyuan.objects.get(huiyuan_id=huiyuan_id)
|
||||
Huiyuan.query.get(huiyuan_id=huiyuan_id)
|
||||
except Huiyuan.DoesNotExist:
|
||||
return Response({'code': 400, 'msg': '会员ID不存在', 'data': None},
|
||||
status=status.HTTP_400_BAD_REQUEST)
|
||||
@@ -4876,7 +4877,7 @@ class AdLeixingXiuGai(APIView):
|
||||
if huiyuan_id and huiyuan_id != leixing_obj.huiyuan_id:
|
||||
# 验证会员存在
|
||||
try:
|
||||
Huiyuan.objects.get(huiyuan_id=huiyuan_id)
|
||||
Huiyuan.query.get(huiyuan_id=huiyuan_id)
|
||||
except Huiyuan.DoesNotExist:
|
||||
return Response({'code': 400, 'msg': '会员ID不存在', 'data': None},
|
||||
status=status.HTTP_400_BAD_REQUEST)
|
||||
@@ -4985,7 +4986,7 @@ class AdLeixingXiuGai(APIView):
|
||||
# 2. 执行批量更新(确保只有实际有变化的字段才会执行)
|
||||
if shangpin_update_fields:
|
||||
# 查询所有属于该类型的商品(使用filter而非all以提高效率)
|
||||
affected_count = Shangpin.objects.filter(
|
||||
affected_count = Shangpin.query.filter(
|
||||
leixing_id=leixing_obj.id
|
||||
).update(**shangpin_update_fields)
|
||||
|
||||
@@ -5088,7 +5089,7 @@ class AdShangpinNeiRongHuoQu(APIView):
|
||||
|
||||
# 4. 查询商品数据
|
||||
try:
|
||||
shangpin_obj = Shangpin.objects.get(id=shangpin_id)
|
||||
shangpin_obj = Shangpin.query.get(id=shangpin_id)
|
||||
except Shangpin.DoesNotExist:
|
||||
return Response(
|
||||
{'code': 404, 'message': '商品不存在', 'data': None},
|
||||
@@ -5203,7 +5204,7 @@ class AdShangpinXiuGai(APIView):
|
||||
try:
|
||||
# 查询商品
|
||||
try:
|
||||
shangpin_obj = Shangpin.objects.get(id=shangpin_id)
|
||||
shangpin_obj = Shangpin.query.get(id=shangpin_id)
|
||||
except Shangpin.DoesNotExist:
|
||||
return Response(
|
||||
{'code': 404, 'message': '商品不存在', 'data': None},
|
||||
@@ -5251,7 +5252,7 @@ class AdShangpinXiuGai(APIView):
|
||||
try:
|
||||
# 查询商品
|
||||
try:
|
||||
shangpin_obj = Shangpin.objects.get(id=shangpin_id)
|
||||
shangpin_obj = Shangpin.query.get(id=shangpin_id)
|
||||
except Shangpin.DoesNotExist:
|
||||
return Response(
|
||||
{'code': 404, 'message': '商品不存在', 'data': None},
|
||||
@@ -5444,7 +5445,7 @@ class AdShangpinGuizeXiuGai(APIView):
|
||||
|
||||
# 2. 查询商品
|
||||
try:
|
||||
shangpin_obj = Shangpin.objects.get(id=shangpin_id)
|
||||
shangpin_obj = Shangpin.query.get(id=shangpin_id)
|
||||
except Shangpin.DoesNotExist:
|
||||
return Response(
|
||||
{'code': 404, 'message': '商品不存在', 'data': None},
|
||||
@@ -5587,7 +5588,7 @@ class HuiyuanTypeListView(APIView):
|
||||
}, status=status.HTTP_401_UNAUTHORIZED)
|
||||
|
||||
# 🔥 2. 获取所有会员类型
|
||||
huiyuan_list = Huiyuan.objects.all().order_by('create_time')
|
||||
huiyuan_list = Huiyuan.query.all().order_by('create_time')
|
||||
|
||||
# 🔥 3. 构建返回数据
|
||||
huiyuan_data = []
|
||||
@@ -5667,7 +5668,7 @@ class HuiyuanRecordListView(APIView):
|
||||
}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
# 🔥 4. 检查会员类型是否存在
|
||||
huiyuan_obj = Huiyuan.objects.filter(huiyuan_id=huiyuan_type).first()
|
||||
huiyuan_obj = Huiyuan.query.filter(huiyuan_id=huiyuan_type).first()
|
||||
if not huiyuan_obj:
|
||||
return Response({
|
||||
'code': 404,
|
||||
@@ -5751,7 +5752,7 @@ class HuiyuanRecordListView(APIView):
|
||||
has_more = (page * pagesize) < total_count
|
||||
|
||||
# 🔥 9. 获取会员类型统计信息(所有会员类型的当前状态总数)
|
||||
huiyuan_types = Huiyuan.objects.all()
|
||||
huiyuan_types = Huiyuan.query.all()
|
||||
huiyuan_stats = []
|
||||
|
||||
for huiyuan in huiyuan_types:
|
||||
@@ -5850,7 +5851,7 @@ class ZuzhangFenhongView(APIView):
|
||||
|
||||
# 1. 验证组长身份
|
||||
try:
|
||||
zuzhang = UserZuzhang.objects.get(user=current_user)
|
||||
zuzhang = UserZuzhang.query.get(user=current_user)
|
||||
except UserZuzhang.DoesNotExist:
|
||||
return Response({
|
||||
'code': 403,
|
||||
@@ -5869,10 +5870,10 @@ class ZuzhangFenhongView(APIView):
|
||||
fenhong_zonge = zuzhang.fenyong_zonge
|
||||
|
||||
# 3.2 邀请管事数(统计邀请人等于当前用户ID的管事记录)
|
||||
yaoqing_guanshi = UserGuanshi.objects.filter(yaoqingren=current_user.yonghuid).count()
|
||||
yaoqing_guanshi = UserGuanshi.query.filter(yaoqingren=current_user.yonghuid).count()
|
||||
|
||||
# 3.3 分红次数(总记录数)
|
||||
base_queryset = Gsfenhong.objects.filter(zuzhang_id=current_user.yonghuid).order_by('-create_time')
|
||||
base_queryset = Gsfenhong.query.filter(zuzhang_id=current_user.yonghuid).order_by('-create_time')
|
||||
fenhong_cishu = base_queryset.count()
|
||||
|
||||
# 4. 分页查询
|
||||
@@ -5944,7 +5945,7 @@ class ZuzhangFenhongView(APIView):
|
||||
return {}
|
||||
|
||||
# 查询用户主表,并预加载 boss_profile
|
||||
users = UserMain.objects.filter(yonghuid__in=guanshi_ids).select_related(
|
||||
users = UserMain.query.filter(yonghuid__in=guanshi_ids).select_related(
|
||||
'boss_profile'
|
||||
).only(
|
||||
'yonghuid', 'avatar',
|
||||
@@ -6074,7 +6075,7 @@ class CzhqdyView(APIView):
|
||||
if leixing == 1:
|
||||
# 会员
|
||||
try:
|
||||
huiyuan = Huiyuan.objects.get(huiyuan_id=huiyuan_id)
|
||||
huiyuan = Huiyuan.query.get(huiyuan_id=huiyuan_id)
|
||||
target_price = huiyuan.jiage
|
||||
except Huiyuan.DoesNotExist:
|
||||
return Response({'code': 404, 'msg': '会员不存在'}, status=status.HTTP_404_NOT_FOUND)
|
||||
@@ -6087,7 +6088,7 @@ class CzhqdyView(APIView):
|
||||
elif leixing == 4:
|
||||
# 罚款缴纳
|
||||
try:
|
||||
fadan = Fadan.objects.get(id=fadan_id, beichufa_id=user.yonghuid)
|
||||
fadan = Fadan.query.get(id=fadan_id, beichufa_id=user.yonghuid)
|
||||
target_price = fadan.fakuanjine
|
||||
except Fadan.DoesNotExist:
|
||||
return Response({'code': 404, 'msg': '罚单不存在或不属于当前用户'}, status=status.HTTP_404_NOT_FOUND)
|
||||
@@ -6096,7 +6097,7 @@ class CzhqdyView(APIView):
|
||||
rates = {}
|
||||
for key in ['5', '6', '8', '11']:
|
||||
try:
|
||||
rate_obj = Lilubiao.objects.get(fadanpingtai=key)
|
||||
rate_obj = Lilubiao.query.get(fadanpingtai=key)
|
||||
rates[key] = rate_obj.lilu
|
||||
except Lilubiao.DoesNotExist:
|
||||
rates[key] = None # 未配置则跳过
|
||||
@@ -6214,7 +6215,7 @@ class DsqrgmdhView(APIView):
|
||||
target_price = None
|
||||
if leixing == 1:
|
||||
try:
|
||||
huiyuan = Huiyuan.objects.get(huiyuan_id=huiyuan_id)
|
||||
huiyuan = Huiyuan.query.get(huiyuan_id=huiyuan_id)
|
||||
target_price = huiyuan.jiage
|
||||
except Huiyuan.DoesNotExist:
|
||||
return Response({'code': 404, 'msg': '会员不存在'}, status=status.HTTP_404_NOT_FOUND)
|
||||
@@ -6226,14 +6227,14 @@ class DsqrgmdhView(APIView):
|
||||
if not fadan_id:
|
||||
return Response({'code': 400, 'msg': '缺少罚单ID'}, status=status.HTTP_400_BAD_REQUEST)
|
||||
try:
|
||||
fadan_obj = Fadan.objects.get(id=fadan_id, beichufa_id=request.user.yonghuid)
|
||||
fadan_obj = Fadan.query.get(id=fadan_id, beichufa_id=request.user.yonghuid)
|
||||
target_price = fadan_obj.fakuanjine
|
||||
except Fadan.DoesNotExist:
|
||||
return Response({'code': 404, 'msg': '罚单不存在或不属于当前用户'}, status=status.HTTP_404_NOT_FOUND)
|
||||
|
||||
identity = IDENTITY_CONFIG.get(shenfen_id)
|
||||
try:
|
||||
rate_obj = Lilubiao.objects.get(fadanpingtai=identity['rate_key'])
|
||||
rate_obj = Lilubiao.query.get(fadanpingtai=identity['rate_key'])
|
||||
rate = rate_obj.lilu
|
||||
if rate >= 1:
|
||||
return Response({'code': 400, 'msg': f"{identity['name']}费率异常"}, status=status.HTTP_400_BAD_REQUEST)
|
||||
@@ -6254,7 +6255,7 @@ class DsqrgmdhView(APIView):
|
||||
yonghuid = user.yonghuid
|
||||
|
||||
try:
|
||||
profile = identity['model'].objects.get(user=user)
|
||||
profile = identity['model'].query.get(user=user)
|
||||
except identity['model'].DoesNotExist:
|
||||
return Response({'code': 403, 'msg': f'您不是{identity["name"]}身份'})
|
||||
|
||||
@@ -6292,7 +6293,7 @@ class DsqrgmdhView(APIView):
|
||||
|
||||
shuoming = f"{identity['name']}抵扣 {action_desc},抵扣金额{required}元"
|
||||
|
||||
czjilu = Czjilu.objects.create(
|
||||
czjilu = Czjilu.query.create(
|
||||
dingdan_id=dingdan_id,
|
||||
huiyuan_id=huiyuan_id if leixing == 1 else None,
|
||||
zhuangtai=1,
|
||||
@@ -6313,7 +6314,7 @@ class DsqrgmdhView(APIView):
|
||||
}
|
||||
if is_first_buy:
|
||||
try:
|
||||
dashou = UserDashou.objects.get(user=user)
|
||||
dashou = UserDashou.query.get(user=user)
|
||||
dashou.jifen += 10
|
||||
dashou.save(update_fields=['jifen'])
|
||||
response_data['jifen'] = dashou.jifen
|
||||
@@ -6358,7 +6359,7 @@ class DsqrgmdhView(APIView):
|
||||
logger.error(f"事务处理异常: {str(e)}", exc_info=True)
|
||||
return Response({'code': 500, 'msg': f'支付处理失败: {str(e)}'}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
|
||||
|
||||
final_profile = identity['model'].objects.get(user=user)
|
||||
final_profile = identity['model'].query.get(user=user)
|
||||
response_data['balance'] = str(getattr(final_profile, identity['balance_field']))
|
||||
|
||||
return Response({
|
||||
@@ -6374,7 +6375,7 @@ class DsqrgmdhView(APIView):
|
||||
def _process_member_purchase(self, yonghuid, huiyuan_id, huiyuan_obj):
|
||||
is_first_buy_any = False
|
||||
try:
|
||||
record = Huiyuangoumai.objects.filter(
|
||||
record = Huiyuangoumai.query.filter(
|
||||
yonghu_id=yonghuid,
|
||||
huiyuan_id=huiyuan_id
|
||||
).first()
|
||||
@@ -6384,10 +6385,10 @@ class DsqrgmdhView(APIView):
|
||||
record.huiyuan_zhuangtai = 1
|
||||
record.save(update_fields=['daoqi_time', 'huiyuan_zhuangtai'])
|
||||
else:
|
||||
other_count = Huiyuangoumai.objects.filter(yonghu_id=yonghuid).exclude(huiyuan_id=huiyuan_id).count()
|
||||
other_count = Huiyuangoumai.query.filter(yonghu_id=yonghuid).exclude(huiyuan_id=huiyuan_id).count()
|
||||
if other_count == 0:
|
||||
is_first_buy_any = True
|
||||
record = Huiyuangoumai.objects.create(
|
||||
record = Huiyuangoumai.query.create(
|
||||
yonghu_id=yonghuid,
|
||||
huiyuan_id=huiyuan_id,
|
||||
jieshao=huiyuan_obj.jieshao,
|
||||
@@ -6397,6 +6398,6 @@ class DsqrgmdhView(APIView):
|
||||
return record, is_first_buy_any
|
||||
except Exception as e:
|
||||
if 'unique' in str(e).lower() or 'duplicate' in str(e).lower():
|
||||
record = Huiyuangoumai.objects.get(yonghu_id=yonghuid, huiyuan_id=huiyuan_id)
|
||||
record = Huiyuangoumai.query.get(yonghu_id=yonghuid, huiyuan_id=huiyuan_id)
|
||||
return record, False
|
||||
raise
|
||||
Reference in New Issue
Block a user