修复 JWT 验证 401 问题
This commit is contained in:
116
orders/views.py
116
orders/views.py
@@ -403,7 +403,7 @@ class WechatPayNotifyView(APIView):
|
||||
def _get_game_type_name(self, leixing_id):
|
||||
try:
|
||||
gt = ShangpinLeixing.query.filter(id=leixing_id).first()
|
||||
return gt.Description if gt else '游戏订单'
|
||||
return gt.jieshao if gt else '游戏订单'
|
||||
except Exception as e:
|
||||
logger.error(f"获取游戏类型名称异常: {e}")
|
||||
return '游戏订单'
|
||||
@@ -805,18 +805,18 @@ class CreateOrderView(APIView):
|
||||
)
|
||||
|
||||
pingtaikuozhan_data = {
|
||||
'dingdan': dingdan,
|
||||
'laoban_id': laoban_yonghuid,
|
||||
'Order': dingdan,
|
||||
'BossID': laoban_yonghuid,
|
||||
'pingtai_shouyi': pingtai_shouyi,
|
||||
# ---------- 新增上级分红快照 ----------
|
||||
'shangji_dianpu_id': shangji_dianpu_id,
|
||||
'shangji_fenhong': shangji_fenhong if shangji_fenhong else Decimal('0.00'),
|
||||
'ParentShopID': shangji_dianpu_id,
|
||||
'ParentBonus': shangji_fenhong if shangji_fenhong else Decimal('0.00'),
|
||||
}
|
||||
if dianpu_id:
|
||||
pingtaikuozhan_data['dianpu_id'] = dianpu_id
|
||||
pingtaikuozhan_data['dianpu_shouyi'] = dianpu_shouyi
|
||||
pingtaikuozhan_data['ShopID'] = dianpu_id
|
||||
pingtaikuozhan_data['ShopIncome'] = dianpu_shouyi
|
||||
else:
|
||||
pingtaikuozhan_data['dianpu_shouyi'] = Decimal('0.00')
|
||||
pingtaikuozhan_data['ShopIncome'] = Decimal('0.00')
|
||||
|
||||
PlatformOrderExt.query.create(**pingtaikuozhan_data)
|
||||
|
||||
@@ -1758,7 +1758,7 @@ class ShangpinLeixingView(APIView):
|
||||
try:
|
||||
# 1. 查询审核通过且抢单要求类型为1的商品类型,按排序权重升序
|
||||
shangpin_queryset = ShangpinLeixing.query.filter(
|
||||
GrabRequirement=1,
|
||||
yaoqiuleixing=1,
|
||||
shenhezhuangtai=1
|
||||
).select_related('bankuai').order_by('paixu')
|
||||
|
||||
@@ -2014,7 +2014,7 @@ class ShangjiaPaifaView(APIView):
|
||||
def _get_game_type_name(self, leixing_id):
|
||||
try:
|
||||
gt = ShangpinLeixing.query.filter(id=leixing_id).first()
|
||||
return gt.Description if gt else '游戏订单'
|
||||
return gt.jieshao if gt else '游戏订单'
|
||||
except Exception:
|
||||
return '游戏订单'
|
||||
|
||||
@@ -2117,7 +2117,7 @@ class ShangjiaDingdanHuoquView(APIView):
|
||||
# 10. 构建返回数据
|
||||
order_list = []
|
||||
for shangjia_order in current_page_orders:
|
||||
order = shangjia_order.dingdan
|
||||
order = shangjia_order.Order
|
||||
order_data = {
|
||||
'OrderID': order.OrderID,
|
||||
'Status': order.Status,
|
||||
@@ -2272,7 +2272,7 @@ class ShangjiaDingdanXiangqingView(APIView):
|
||||
MerchantID=yonghuid
|
||||
).select_related('Order').first()
|
||||
if new_shangjia_order:
|
||||
xin_dingdan_id = new_shangjia_order.dingdan.OrderID
|
||||
xin_dingdan_id = new_shangjia_order.Order.OrderID
|
||||
except Exception as e:
|
||||
logger.warning(f'查找新订单ID失败: {e}')
|
||||
|
||||
@@ -2457,7 +2457,7 @@ class ShangjiaJiesuanView(APIView):
|
||||
if pingfen > 0:
|
||||
pingfen_obj, created = PlayerRating.query.get_or_create(
|
||||
PlayerID=jiedan_dashou_id,
|
||||
defaults={'zongfen': pingfen, 'cishu': 1}
|
||||
defaults={'TotalScore': pingfen, 'RatingCount': 1}
|
||||
)
|
||||
if not created:
|
||||
PlayerRating.query.filter(id=pingfen_obj.id).update(
|
||||
@@ -2743,21 +2743,21 @@ class ShangjiaTuikuanShenqingView(APIView):
|
||||
refund_record, created = RefundRecord.query.get_or_create(
|
||||
OrderID=dingdan_id,
|
||||
defaults={
|
||||
'dashouid': dingdan.PlayerID,
|
||||
'qingqiuid': current_user.yonghuid,
|
||||
'liyou': tuikuan_liyou,
|
||||
'sqzhuangtai': 0, # 待处理
|
||||
'jine': dingdan.Amount,
|
||||
'PlayerID': dingdan.PlayerID,
|
||||
'ApplicantID': current_user.yonghuid,
|
||||
'Reason': tuikuan_liyou,
|
||||
'ApplyStatus': 0, # 待处理
|
||||
'Amount': dingdan.Amount,
|
||||
'PlayerCommission': dingdan.PlayerCommission,
|
||||
'Description': dingdan.Description,
|
||||
'Remark': dingdan.Remark,
|
||||
'nicheng': dingdan.Nickname,
|
||||
'Nickname': dingdan.Nickname,
|
||||
}
|
||||
)
|
||||
if not created:
|
||||
# 记录已存在,更新退款理由和申请时间
|
||||
refund_record.Reason = tuikuan_liyou
|
||||
refund_record.save(update_fields=['liyou', 'UpdateTime'])
|
||||
refund_record.save(update_fields=['Reason', 'UpdateTime'])
|
||||
logger.info(f"订单 {dingdan_id} 已有退款记录,已更新退款理由")
|
||||
|
||||
# 9. 更新订单状态为4(退款中)
|
||||
@@ -2991,7 +2991,7 @@ class DashouDingdanHuoquView(APIView):
|
||||
if biaoqian_id and int(biaoqian_id) > 0:
|
||||
biaoqian_order_ids = DingdanBiaoqian.query.filter(
|
||||
chenghao_id=int(biaoqian_id)
|
||||
).values_list('OrderID', flat=True)
|
||||
).values_list('dingdan_id', flat=True)
|
||||
base_query &= Q(OrderID__in=list(biaoqian_order_ids))
|
||||
|
||||
# 4. 构建基础查询集
|
||||
@@ -3033,11 +3033,11 @@ class DashouDingdanHuoquView(APIView):
|
||||
UserUID__in=zhiding_ids
|
||||
).select_related('dashou_profile').annotate(
|
||||
Nickname=F('dashou_profile__nicheng')
|
||||
).values('UserUID', 'Avatar', 'nicheng')
|
||||
).values('UserUID', 'Avatar', 'Nickname')
|
||||
zhiding_info = {
|
||||
item['UserUID']: {
|
||||
'avatar': item['Avatar'] or '',
|
||||
'nicheng': item['nicheng'] or ''
|
||||
'nicheng': item['Nickname'] or ''
|
||||
}
|
||||
for item in dashou_query
|
||||
}
|
||||
@@ -3050,10 +3050,10 @@ class DashouDingdanHuoquView(APIView):
|
||||
if order_ids:
|
||||
try:
|
||||
dbq_qs = DingdanBiaoqian.query.filter(
|
||||
OrderID__in=order_ids
|
||||
dingdan_id__in=order_ids
|
||||
).select_related('chenghao')
|
||||
for dbq in dbq_qs:
|
||||
oid = dbq.OrderID
|
||||
oid = dbq.dingdan_id
|
||||
if oid not in xuqiu_tags_map:
|
||||
xuqiu_tags_map[oid] = []
|
||||
ch = dbq.chenghao
|
||||
@@ -3073,9 +3073,9 @@ class DashouDingdanHuoquView(APIView):
|
||||
# 使用跨表查询 Order__OrderID__in 匹配字符串订单ID
|
||||
sj_exts = MerchantOrderExt.query.filter(
|
||||
Order__OrderID__in=shangjia_order_ids
|
||||
).values('OrderID', 'MerchantID')
|
||||
).values('Order__OrderID', 'MerchantID')
|
||||
for sj in sj_exts:
|
||||
shangjia_id_map[sj['OrderID']] = sj['MerchantID']
|
||||
shangjia_id_map[sj['Order__OrderID']] = sj['MerchantID']
|
||||
if sj['MerchantID']:
|
||||
yonghuid_set.add(sj['MerchantID'])
|
||||
|
||||
@@ -3210,7 +3210,7 @@ class ShangpinLeixingHuoquView(APIView):
|
||||
# 假设你的商品类型模型字段为:id, jieshao, tupian_url
|
||||
leixing_list = ShangpinLeixing.query.all().values(
|
||||
'id', # 商品类型ID
|
||||
'Description', # 类型介绍
|
||||
'jieshao', # 类型介绍
|
||||
'tupian_url' # 类型图片URL(相对URL)
|
||||
).order_by('id') # 按ID排序,可根据需要调整
|
||||
|
||||
@@ -3219,7 +3219,7 @@ class ShangpinLeixingHuoquView(APIView):
|
||||
for leixing in leixing_list:
|
||||
formatted_leixing = {
|
||||
'id': leixing['id'],
|
||||
'Description': leixing['Description'] or '', # 处理空值
|
||||
'jieshao': leixing['jieshao'] or '', # 处理空值
|
||||
'tupian_url': leixing['tupian_url'] or '' # 处理空值
|
||||
}
|
||||
formatted_list.append(formatted_leixing)
|
||||
@@ -3652,7 +3652,7 @@ class QiangdanView(APIView):
|
||||
def _validate_huiyuan_requirement(self, order, dashou_yonghuid):
|
||||
try:
|
||||
huiyuan_record = Huiyuangoumai.query.get(
|
||||
MembershipID=order.MembershipID,
|
||||
huiyuan_id=order.MembershipID,
|
||||
yonghu_id=dashou_yonghuid
|
||||
)
|
||||
if huiyuan_record.jiance_shifou_daoqi() or huiyuan_record.huiyuan_zhuangtai != 1:
|
||||
@@ -3755,7 +3755,7 @@ class DashouDingdanHuoquView1(APIView):
|
||||
'PlayerCommission', # 打手分成金额
|
||||
'Description',
|
||||
'ImageURL',
|
||||
'nicheng',
|
||||
'Nickname',
|
||||
'CreateTime'
|
||||
)
|
||||
|
||||
@@ -4554,9 +4554,9 @@ class AdGetDingdanXiangQing(APIView):
|
||||
OrderID=dingdan_id
|
||||
).order_by('-CreateTime').first() # 按创建时间倒序,取最新的
|
||||
|
||||
if tuikuan_record and tuikuan_record.liyou:
|
||||
if tuikuan_record and tuikuan_record.Reason:
|
||||
# 如果有退款记录且理由不为空,添加到返回数据
|
||||
response_data['tuikuan_liyou'] = tuikuan_record.liyou
|
||||
response_data['tuikuan_liyou'] = tuikuan_record.Reason
|
||||
else:
|
||||
# 没有找到退款记录或理由为空
|
||||
response_data['tuikuan_liyou'] = ''
|
||||
@@ -4714,7 +4714,7 @@ class AdGengHuanDaShou(APIView):
|
||||
# 查询会员购买记录
|
||||
try:
|
||||
huiyuan_goumai = Huiyuangoumai.query.get(
|
||||
MembershipID=huiyuan_id,
|
||||
huiyuan_id=huiyuan_id,
|
||||
yonghu_id=new_dashou_id # 注意:yonghu_id存储的是用户ID(yonghuid)
|
||||
)
|
||||
except Huiyuangoumai.DoesNotExist:
|
||||
@@ -5161,7 +5161,7 @@ class AdJuJueTuiKuan(APIView):
|
||||
tuikuan_jilu = RefundRecord.query.get(OrderID=dingdan_id)
|
||||
|
||||
# ✅ 确认字段:sqzhuangtai 申请状态,改为2(驳回)
|
||||
tuikuan_jilu.PenaltyApplyStatus = 2
|
||||
tuikuan_jilu.ApplyStatus = 2
|
||||
|
||||
# ✅ 确认字段:bhliyou 驳回理由
|
||||
tuikuan_jilu.RejectReason = jujue_liyou
|
||||
@@ -5571,20 +5571,20 @@ class AdTongYiTuiKuanPingTai(APIView):
|
||||
tuikuan_jilu, created = RefundRecord.query.get_or_create(
|
||||
OrderID=dingdan_id,
|
||||
defaults={
|
||||
'dashouid': jiedan_dashou_id if jiedan_dashou_id else '',
|
||||
'qingqiuid': laoban_id if laoban_id else '',
|
||||
'chuliid': qianzhanghao,
|
||||
'liyou': tuikuan_liyou if tuikuan_liyou else '给老板退款',
|
||||
'sqzhuangtai': 1,
|
||||
'jine': jine,
|
||||
'PlayerID': jiedan_dashou_id if jiedan_dashou_id else '',
|
||||
'ApplicantID': laoban_id if laoban_id else '',
|
||||
'ProcessorID': qianzhanghao,
|
||||
'Reason': tuikuan_liyou if tuikuan_liyou else '给老板退款',
|
||||
'ApplyStatus': 1,
|
||||
'Amount': jine,
|
||||
'PlayerCommission': dingdan_obj.PlayerCommission or 0,
|
||||
'Description': dingdan_obj.Description or '',
|
||||
'Remark': '给老板退款',
|
||||
'nicheng': dingdan_obj.Nickname or '',
|
||||
'Nickname': dingdan_obj.Nickname or '',
|
||||
}
|
||||
)
|
||||
if not created:
|
||||
tuikuan_jilu.PenaltyApplyStatus = 1
|
||||
tuikuan_jilu.ApplyStatus = 1
|
||||
if tuikuan_liyou:
|
||||
tuikuan_jilu.Reason = tuikuan_liyou
|
||||
tuikuan_jilu.ProcessorID = qianzhanghao
|
||||
@@ -6108,7 +6108,7 @@ class DashouXiugaiView(APIView):
|
||||
delete_count, _ = PlayerDeliveryImage.query.filter(
|
||||
OrderID=dingdan_id,
|
||||
PlayerID=yonghuid,
|
||||
tupian__in=deleted_images
|
||||
ImageURL__in=deleted_images
|
||||
).delete()
|
||||
# 可选:记录删除数量
|
||||
logger.info(f"订单 {dingdan_id} 删除图片 {delete_count} 张")
|
||||
@@ -6118,13 +6118,13 @@ class DashouXiugaiView(APIView):
|
||||
# 批量创建
|
||||
new_records = []
|
||||
for url in new_images:
|
||||
new_records.append(Dashoutupian(
|
||||
new_records.append(PlayerDeliveryImage(
|
||||
OrderID=dingdan_id,
|
||||
PlayerID=yonghuid,
|
||||
ImageURL=url,
|
||||
CreateTime=timezone.now()
|
||||
))
|
||||
Dashoutupian.objects.bulk_create(new_records)
|
||||
PlayerDeliveryImage.objects.bulk_create(new_records)
|
||||
logger.info(f"订单 {dingdan_id} 新增图片 {len(new_records)} 张")
|
||||
|
||||
# 3. 更新订单留言(如果发生变化)
|
||||
@@ -6229,7 +6229,7 @@ class ZxsjghdsView(APIView):
|
||||
dashou_profile = dashou_user.dashou_profile
|
||||
dashou_profile.tuikuanliang = (dashou_profile.tuikuanliang or 0) + 1
|
||||
dashou_profile.zhuangtai = 1 # 空闲
|
||||
dashou_profile.save(update_fields=['tuikuanliang', 'Status'])
|
||||
dashou_profile.save(update_fields=['tuikuanliang', 'zhuangtai'])
|
||||
except (User.DoesNotExist, ObjectDoesNotExist):
|
||||
logger.warning(f"打手 {dashou_id} 不存在或扩展表缺失,跳过更新")
|
||||
|
||||
@@ -6237,16 +6237,16 @@ class ZxsjghdsView(APIView):
|
||||
RefundRecord.query.update_or_create(
|
||||
OrderID=dingdan_id,
|
||||
defaults={
|
||||
'dashouid': dashou_id or '',
|
||||
'qingqiuid': yonghuid, # 申请人为当前商家
|
||||
'chuliid': yonghuid, # 处理人也是商家自己
|
||||
'liyou': '商家更换打手',
|
||||
'sqzhuangtai': 1, # 状态 1=成功
|
||||
'jine': jine or 0,
|
||||
'PlayerID': dashou_id or '',
|
||||
'ApplicantID': yonghuid, # 申请人为当前商家
|
||||
'ProcessorID': yonghuid, # 处理人也是商家自己
|
||||
'Reason': '商家更换打手',
|
||||
'ApplyStatus': 1, # 状态 1=成功
|
||||
'Amount': jine or 0,
|
||||
'PlayerCommission': dashou_fencheng or 0,
|
||||
'Description': jieshao or '',
|
||||
'Remark': '更换打手系统自动退款',
|
||||
'nicheng': nicheng or '',
|
||||
'Nickname': nicheng or '',
|
||||
}
|
||||
)
|
||||
|
||||
@@ -6339,7 +6339,7 @@ class ZxsjghdsView(APIView):
|
||||
"""根据类型ID获取游戏类型名称"""
|
||||
try:
|
||||
gt = ShangpinLeixing.query.filter(id=leixing_id).first()
|
||||
return gt.Description if gt else '游戏订单'
|
||||
return gt.jieshao if gt else '游戏订单'
|
||||
except Exception:
|
||||
return '游戏订单'
|
||||
|
||||
@@ -6416,9 +6416,9 @@ class ShangjiaFakuanApplyView(APIView):
|
||||
Penalty.query.create(
|
||||
PenalizedUserID=dashou_id,
|
||||
ApplicantID=shangjia_id, # 申请人为当前商家
|
||||
shenfen=1, # 被打者身份:1=打手
|
||||
Identity=1, # 被打者身份:1=打手
|
||||
Reason=chufa_liyou,
|
||||
fakuanAmount=fakuanjine,
|
||||
FineAmount=fakuanjine,
|
||||
RelatedOrderID=dingdan_id,
|
||||
Status=1, # 待缴纳
|
||||
AffectsGrabbing=yingxiang_qiangdan,
|
||||
@@ -6470,7 +6470,7 @@ class ShangjiaFakuaiXiugaiView(APIView):
|
||||
return Response({'code': 400, 'msg': '缺少罚单ID'}, status=status.HTTP_400_BAD_REQUEST)
|
||||
try:
|
||||
fadan = Penalty.query.get(id=fadan_id)
|
||||
except Fadan.DoesNotExist:
|
||||
except Penalty.DoesNotExist:
|
||||
return Response({'code': 404, 'msg': '罚单不存在'}, status=status.HTTP_404_NOT_FOUND)
|
||||
if fadan.RelatedOrderID != dingdan_id:
|
||||
return Response({'code': 403, 'msg': '罚单与订单不匹配'}, status=status.HTTP_403_FORBIDDEN)
|
||||
|
||||
Reference in New Issue
Block a user