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