修复 JWT 验证 401 问题

This commit is contained in:
2026-06-18 20:29:37 +08:00
parent 5c8b82df15
commit 05498904cf
2 changed files with 74 additions and 74 deletions

View File

@@ -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存储的是用户IDyonghuid
)
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)