fix: 订单列表兼容 leixing_id 与 ProductTypeID 商品类型筛选
This commit is contained in:
@@ -501,6 +501,19 @@ def pick_order_id(data):
|
||||
return str(data.get('OrderID') or data.get('dingdan_id') or '').strip()
|
||||
|
||||
|
||||
def pick_leixing_id(data):
|
||||
"""兼容前端 leixing_id 与 SDK 字段 ProductTypeID。"""
|
||||
val = data.get('leixing_id')
|
||||
if val is None or val == '':
|
||||
val = data.get('ProductTypeID')
|
||||
if val is None or val == '':
|
||||
return None
|
||||
try:
|
||||
return int(val)
|
||||
except (ValueError, TypeError):
|
||||
return None
|
||||
|
||||
|
||||
def pick_penalty_create_params(data):
|
||||
"""兼容罚单创建:SDK 字段名与旧版拼音字段名。"""
|
||||
penalized_id = str(data.get('PenalizedUserID') or data.get('beichufa_id') or '').strip()
|
||||
|
||||
@@ -48,7 +48,7 @@ from orders.utils import (
|
||||
)
|
||||
from shop.utils import calculate_pingtai_and_dianpu_shouyi, validate_shangpin_and_dianpu, update_dianpu_daily_stat
|
||||
from products.utils import update_shangpin_daily_stat
|
||||
from backend.utils import update_shangjia_daily, update_dashou_daily_by_action
|
||||
from backend.utils import update_shangjia_daily, update_dashou_daily_by_action, pick_leixing_id
|
||||
from rank.services import record_dashou_biaoxian
|
||||
from rank.utils import check_dashou_biaoqian_required
|
||||
|
||||
@@ -2049,8 +2049,8 @@ class ShangjiaDingdanHuoquView(APIView):
|
||||
page = max(1, int(data.get('page', 1)))
|
||||
page_size = min(100, max(1, int(data.get('page_size', 10))))
|
||||
|
||||
# 🆕 商品类型筛选
|
||||
leixing_id = data.get('ProductTypeID', None)
|
||||
# 🆕 商品类型筛选(兼容 leixing_id / ProductTypeID)
|
||||
leixing_id = pick_leixing_id(data)
|
||||
|
||||
# 🆕 模糊搜索关键字(支持订单ID、订单介绍、游戏昵称、打手ID)
|
||||
keyword = data.get('keyword', '').strip()
|
||||
@@ -2080,12 +2080,7 @@ class ShangjiaDingdanHuoquView(APIView):
|
||||
|
||||
# 6. 商品类型筛选
|
||||
if leixing_id is not None:
|
||||
try:
|
||||
leixing_id_int = int(leixing_id)
|
||||
base_qs = base_qs.filter(Order__ProductTypeID=leixing_id_int)
|
||||
except (ValueError, TypeError):
|
||||
# 如果leixing_id不是有效整数,忽略该筛选
|
||||
pass
|
||||
base_qs = base_qs.filter(Order__ProductTypeID=leixing_id)
|
||||
|
||||
# 7. 模糊搜索(支持订单ID、订单介绍、游戏昵称、打手ID)
|
||||
if keyword:
|
||||
@@ -2977,14 +2972,14 @@ class DashouDingdanHuoquView(APIView):
|
||||
try:
|
||||
# 1. 获取请求参数
|
||||
data = request.data
|
||||
leixing_id = data.get('ProductTypeID')
|
||||
leixing_id = pick_leixing_id(data)
|
||||
page = int(data.get('page', 1))
|
||||
page_size = int(data.get('page_size', 10))
|
||||
biaoqian_id = data.get('biaoqian_id')
|
||||
|
||||
# 2. 构建基础查询条件
|
||||
base_query = Q(Status__in=[1, 7])
|
||||
if leixing_id:
|
||||
if leixing_id is not None:
|
||||
base_query &= Q(ProductTypeID=leixing_id)
|
||||
|
||||
# 3. 标签筛选:先查出符合条件的订单ID,避免跨表 JOIN 排序冲突
|
||||
@@ -3706,7 +3701,7 @@ class DashouDingdanHuoquView1(APIView):
|
||||
zhuangtai_list = data.get('zhuangtai_list', []) # 可选,默认空列表(全部)
|
||||
page = max(1, int(data.get('page', 1)))
|
||||
page_size = min(100, max(1, int(data.get('page_size', 10))))
|
||||
leixing_id = data.get('ProductTypeID', None) # 可选,商品类型ID
|
||||
leixing_id = pick_leixing_id(data) # 可选,商品类型ID
|
||||
keyword = data.get('keyword', '').strip() # 可选,搜索关键词
|
||||
except (ValueError, TypeError):
|
||||
return Response({
|
||||
@@ -3718,11 +3713,6 @@ class DashouDingdanHuoquView1(APIView):
|
||||
# 3. 参数默认值与类型修正
|
||||
if not isinstance(zhuangtai_list, list):
|
||||
zhuangtai_list = [] # 非列表则视为全部
|
||||
if leixing_id is not None:
|
||||
try:
|
||||
leixing_id = int(leixing_id)
|
||||
except (ValueError, TypeError):
|
||||
leixing_id = None
|
||||
|
||||
# 4. 构建查询条件
|
||||
try:
|
||||
@@ -5737,11 +5727,9 @@ class DashouHuoquLeixingView(APIView):
|
||||
try:
|
||||
logger.info(f"打手获取商品类型请求 - 用户ID: {request.user.UserUID}")
|
||||
|
||||
# 🔴 查询所有正常状态的商品类型
|
||||
# 条件:shenhezhuangtai=1(正常状态)
|
||||
# 排序:先按 paixu 降序(数值大的在前),再按 id 升序
|
||||
leixing_queryset = ShangpinLeixing.query.filter(
|
||||
shenhezhuangtai=1 # 🔴 只取正常状态,排除审核专用
|
||||
# 排除审核专用类型(shenhezhuangtai=2),兼容历史数据 shenhezhuangtai 为空或 0
|
||||
leixing_queryset = ShangpinLeixing.query.exclude(
|
||||
shenhezhuangtai=2
|
||||
).order_by('-paixu', 'id')
|
||||
|
||||
# 🔴 构建返回数据列表
|
||||
|
||||
@@ -62,7 +62,7 @@ class BankuaiBiaoqianView(APIView):
|
||||
permission_classes = [IsAuthenticated]
|
||||
|
||||
def post(self, request):
|
||||
leixing_id = request.data.get('leixing_id')
|
||||
leixing_id = request.data.get('leixing_id') or request.data.get('ProductTypeID')
|
||||
if not leixing_id:
|
||||
return Response({'code': 1, 'msg': '缺少leixing_id'})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user