修复了一些

This commit is contained in:
2026-06-18 18:02:45 +08:00
parent e67bc17fa2
commit 53049d1588
20 changed files with 3671 additions and 2541 deletions

View File

@@ -42,7 +42,7 @@ from users.models import (
)
from gvsdsdk.models import User
from orders.models import Lilubiao, Dingdan, DingdanShangjia
from orders.models import CommissionRate, Order, MerchantOrderExt
from orders.notice_tasks import dingdan_guangbo
from rank.models import Chenghao, DingdanBiaoqian
@@ -226,12 +226,12 @@ class AdminConfigQueryView(APIView):
})
# 查询利率配置
platform_rate_obj = Lilubiao.query.filter(fadanpingtai='1').first()
shop_rate_obj = Lilubiao.query.filter(fadanpingtai='3').first()
platform_rate_obj = CommissionRate.query.filter(Platform='1').first()
shop_rate_obj = CommissionRate.query.filter(Platform='3').first()
# 🔴【新增】打手提现抽成利率字符5
dashou_withdraw_obj = Lilubiao.query.filter(fadanpingtai='5').first()
dashou_withdraw_obj = CommissionRate.query.filter(Platform='5').first()
# 🔴【新增】管事提现抽成利率字符6
guanshi_withdraw_obj = Lilubiao.query.filter(fadanpingtai='6').first()
guanshi_withdraw_obj = CommissionRate.query.filter(Platform='6').first()
# 构建返回数据
data = {
@@ -241,14 +241,14 @@ class AdminConfigQueryView(APIView):
},
'qq_groups': qq_groups,
'rates': {
'platform_rate': float(platform_rate_obj.lilu) if platform_rate_obj and platform_rate_obj.lilu else 0.0,
'shop_rate': float(shop_rate_obj.lilu) if shop_rate_obj and shop_rate_obj.lilu else 0.0,
'platform_rate': float(platform_rate_obj.Rate) if platform_rate_obj and platform_rate_obj.Rate else 0.0,
'shop_rate': float(shop_rate_obj.Rate) if shop_rate_obj and shop_rate_obj.Rate else 0.0,
# 🔴【新增】打手提现抽成利率
'dashou_withdraw_rate': float(
dashou_withdraw_obj.lilu) if dashou_withdraw_obj and dashou_withdraw_obj.lilu else 0.0,
dashou_withdraw_obj.Rate) if dashou_withdraw_obj and dashou_withdraw_obj.Rate else 0.0,
# 🔴【新增】管事提现抽成利率
'guanshi_withdraw_rate': float(
guanshi_withdraw_obj.lilu) if guanshi_withdraw_obj and guanshi_withdraw_obj.lilu else 0.0
guanshi_withdraw_obj.Rate) if guanshi_withdraw_obj and guanshi_withdraw_obj.Rate else 0.0
}
}
@@ -504,17 +504,17 @@ class AdminUpdateConfigView(APIView):
platform_rate_float = float(platform_rate)
if 0 <= platform_rate_float <= 1:
# 🔴 修复:查询现有记录,如果不存在则创建
platform_rate_obj = Lilubiao.query.filter(fadanpingtai='1').first()
platform_rate_obj = CommissionRate.query.filter(Platform='1').first()
if platform_rate_obj:
# 更新现有记录
platform_rate_obj.lilu = platform_rate_float
platform_rate_obj.Rate = platform_rate_float
platform_rate_obj.save()
else:
# 创建新记录
platform_rate_obj = Lilubiao.query.create(
lilu=platform_rate_float,
fadanpingtai='1'
platform_rate_obj = CommissionRate.query.create(
Rate=platform_rate_float,
Platform='1'
)
updated_rates['platform_rate'] = platform_rate_float
@@ -538,17 +538,17 @@ class AdminUpdateConfigView(APIView):
shop_rate_float = float(shop_rate)
if 0 <= shop_rate_float <= 1:
# 🔴 修复:查询现有记录,如果不存在则创建
shop_rate_obj = Lilubiao.query.filter(fadanpingtai='3').first()
shop_rate_obj = CommissionRate.query.filter(Platform='3').first()
if shop_rate_obj:
# 更新现有记录
shop_rate_obj.lilu = shop_rate_float
shop_rate_obj.Rate = shop_rate_float
shop_rate_obj.save()
else:
# 创建新记录
shop_rate_obj = Lilubiao.query.create(
lilu=shop_rate_float,
fadanpingtai='3'
shop_rate_obj = CommissionRate.query.create(
Rate=shop_rate_float,
Platform='3'
)
updated_rates['shop_rate'] = shop_rate_float
@@ -575,17 +575,17 @@ class AdminUpdateConfigView(APIView):
dashou_withdraw_rate_float = float(dashou_withdraw_rate)
if 0 <= dashou_withdraw_rate_float <= 1:
# 查询现有记录,如果不存在则创建
dashou_withdraw_obj = Lilubiao.query.filter(fadanpingtai='5').first()
dashou_withdraw_obj = CommissionRate.query.filter(Platform='5').first()
if dashou_withdraw_obj:
# 更新现有记录
dashou_withdraw_obj.lilu = dashou_withdraw_rate_float
dashou_withdraw_obj.Rate = dashou_withdraw_rate_float
dashou_withdraw_obj.save()
else:
# 创建新记录
dashou_withdraw_obj = Lilubiao.query.create(
lilu=dashou_withdraw_rate_float,
fadanpingtai='5'
dashou_withdraw_obj = CommissionRate.query.create(
Rate=dashou_withdraw_rate_float,
Platform='5'
)
updated_rates['dashou_withdraw_rate'] = dashou_withdraw_rate_float
@@ -609,17 +609,17 @@ class AdminUpdateConfigView(APIView):
guanshi_withdraw_rate_float = float(guanshi_withdraw_rate)
if 0 <= guanshi_withdraw_rate_float <= 1:
# 查询现有记录,如果不存在则创建
guanshi_withdraw_obj = Lilubiao.query.filter(fadanpingtai='6').first()
guanshi_withdraw_obj = CommissionRate.query.filter(Platform='6').first()
if guanshi_withdraw_obj:
# 更新现有记录
guanshi_withdraw_obj.lilu = guanshi_withdraw_rate_float
guanshi_withdraw_obj.Rate = guanshi_withdraw_rate_float
guanshi_withdraw_obj.save()
else:
# 创建新记录
guanshi_withdraw_obj = Lilubiao.query.create(
lilu=guanshi_withdraw_rate_float,
fadanpingtai='6'
guanshi_withdraw_obj = CommissionRate.query.create(
Rate=guanshi_withdraw_rate_float,
Platform='6'
)
updated_rates['guanshi_withdraw_rate'] = guanshi_withdraw_rate_float
@@ -1788,8 +1788,8 @@ class ShangjiaGenerateLinkView(APIView):
# 利率
try:
lilu = float(Lilubiao.query.get(fadanpingtai='3').lilu) or 1.0
except Lilubiao.DoesNotExist:
lilu = float(CommissionRate.query.get(Platform='3').Rate) or 1.0
except CommissionRate.DoesNotExist:
lilu = 1.0
dashou_fencheng = Decimal(str(round(float(jiage) * lilu, 2)))
@@ -1838,26 +1838,26 @@ class ShangjiaGenerateLinkView(APIView):
secure_token = generate_secure_token(dingdan_id, user.yonghuid)
# 创建订单主表
dingdan = Dingdan.query.create(
dingdan_id=dingdan_id,
zhuangtai=13,
fadan_pingtai=2,
jine=jiage,
dashou_fencheng=dashou_fencheng,
leixing_id=shangpin_type_id,
dingdan = Order.query.create(
OrderID=dingdan_id,
Status=13,
Platform=2,
Amount=jiage,
PlayerCommission=dashou_fencheng,
ProductTypeID=shangpin_type_id,
yaoqiuleixing=final_yaoqiuleixing,
huiyuan_id=final_huiyuan_id,
yongjin=final_yongjin,
jieshao=moban.moban_jieshao[:2000],
Description=moban.moban_jieshao[:2000],
user1_id=f"Sj{user.yonghuid}",
tupian=user.avatar or '',
ImageURL=user.avatar or '',
)
# 商家扩展表
DingdanShangjia.query.create(
dingdan=dingdan,
shangjia_id=user.yonghuid,
sjnicheng=shangjia.nicheng or f"商家{user.yonghuid}",
MerchantOrderExt.query.create(
Order=dingdan,
MerchantID=user.yonghuid,
MerchantNickname=shangjia.nicheng or f"商家{user.yonghuid}",
)
# 关联标签
@@ -2186,7 +2186,7 @@ class KehuGetDingdanLianjieView(APIView):
if lianjie_obj.dingdan_id:
try:
# 查询订单主表
dingdan_obj = Dingdan.query.get(dingdan_id=lianjie_obj.dingdan_id)
dingdan_obj = Order.query.get(OrderID=lianjie_obj.dingdan_id)
# 获取商家昵称
shangjia_nicheng = ''
@@ -2207,10 +2207,10 @@ class KehuGetDingdanLianjieView(APIView):
# ========== 构建订单信息 ==========
dingdan_info = {
'jieshao': dingdan_obj.jieshao or '',
'jiage': str(dingdan_obj.jine) if dingdan_obj.jine is not None else '0.00', # 金额字段名是 jine
'jieshao': dingdan_obj.Description or '',
'jiage': str(dingdan_obj.Amount) if dingdan_obj.Amount is not None else '0.00', # 金额字段名是 Amount
'shangjia_mingcheng': shangjia_nicheng,
'zhuangtai': dingdan_obj.zhuangtai,
'zhuangtai': dingdan_obj.Status,
# 新增配置字段
'kefu_link': kefu_link,
'oss_url': oss_url,
@@ -2223,25 +2223,25 @@ class KehuGetDingdanLianjieView(APIView):
# 如果已使用,返回已填写的信息
if lianjie_obj.is_used:
dingdan_info.update({
'youxi_nicheng': dingdan_obj.nicheng or '',
'youxi_nicheng': dingdan_obj.Nickname or '',
'zhiding_dashou': dingdan_obj.zhiding_id or '',
'beizhu': dingdan_obj.beizhu or '',
'beizhu': dingdan_obj.Remark or '',
})
# 获取聊天相关标识
# 9.1 获取接单打手ID
jiedan_dashou_id = dingdan_obj.jiedan_dashou_id
jiedan_dashou_id = dingdan_obj.PlayerID
dashou_biaoshi = f'Ds{jiedan_dashou_id}' if jiedan_dashou_id else ''
# 9.2 获取商家标识
shangjia_biaoshi = ''
try:
shangjia_kuozhan = DingdanShangjia.query.select_related('dingdan').filter(
dingdan__dingdan_id=lianjie_obj.dingdan_id
shangjia_kuozhan = MerchantOrderExt.query.select_related('Order').filter(
Order__OrderID=lianjie_obj.dingdan_id
).first()
if shangjia_kuozhan and shangjia_kuozhan.shangjia_id:
shangjia_biaoshi = f'Sj{shangjia_kuozhan.shangjia_id}'
if shangjia_kuozhan and shangjia_kuozhan.MerchantID:
shangjia_biaoshi = f'Sj{shangjia_kuozhan.MerchantID}'
logger.info(f"生成商家标识: {shangjia_biaoshi}")
else:
logger.info(f"订单 {lianjie_obj.dingdan_id} 没有商家订单扩展信息")
@@ -2257,7 +2257,7 @@ class KehuGetDingdanLianjieView(APIView):
response_data.update(dingdan_info)
except Dingdan.DoesNotExist:
except Order.DoesNotExist:
logger.error(f"订单不存在 - 订单ID: {lianjie_obj.dingdan_id}")
response_data.update({
'jieshao': '',
@@ -2533,12 +2533,12 @@ class KehuTianxieDingdanView(APIView):
logger.error(f"链接记录中订单ID为空 - 链接ID: {lianjie_obj.id}")
raise ValueError("订单ID为空")
dingdan_obj = Dingdan.query.get(dingdan_id=lianjie_obj.dingdan_id)
dingdan_obj = Order.query.get(OrderID=lianjie_obj.dingdan_id)
# 检查订单状态是否为13灰色状态
if dingdan_obj.zhuangtai != 13:
if dingdan_obj.Status != 13:
logger.warning(
f"订单状态不允许修改 - 订单ID: {dingdan_obj.dingdan_id}, 当前状态: {dingdan_obj.zhuangtai}")
f"订单状态不允许修改 - 订单ID: {dingdan_obj.OrderID}, 当前状态: {dingdan_obj.Status}")
# 回滚事务
transaction.set_rollback(True)
return Response({
@@ -2548,9 +2548,9 @@ class KehuTianxieDingdanView(APIView):
}, status=status.HTTP_400_BAD_REQUEST)
# 更新订单信息
dingdan_obj.nicheng = youxi_nicheng # 游戏昵称
dingdan_obj.beizhu = beizhu if beizhu else '' # 备注
dingdan_obj.zhuangtai = zhuangtai_xin # 新状态1或7
dingdan_obj.Nickname = youxi_nicheng # 游戏昵称
dingdan_obj.Remark = beizhu if beizhu else '' # 备注
dingdan_obj.Status = zhuangtai_xin # 新状态1或7
# 如果是指定打手设置zhiding_id
if zhiding_dashou and zhuangtai_xin == 7:
@@ -2558,14 +2558,14 @@ class KehuTianxieDingdanView(APIView):
dingdan_obj.save()
logger.info(
f"更新订单成功 - 订单ID: {dingdan_obj.dingdan_id}, 新状态: {zhuangtai_xin}, 指定打手: {zhiding_dashou or ''}")
f"更新订单成功 - 订单ID: {dingdan_obj.OrderID}, 新状态: {zhuangtai_xin}, 指定打手: {zhiding_dashou or ''}")
# 构建通知数据(你的 _get_game_type_name 方法保留在视图里直接用)
order_info = {
'dingdan_id': dingdan_obj.dingdan_id,
'game_type': self._get_game_type_name(dingdan_obj.leixing_id),
'amount': str(dingdan_obj.jine),
'order_desc': (dingdan_obj.jieshao or '')[:50],
'dingdan_id': dingdan_obj.OrderID,
'game_type': self._get_game_type_name(dingdan_obj.ProductTypeID),
'amount': str(dingdan_obj.Amount),
'order_desc': (dingdan_obj.Description or '')[:50],
}
dingdan_guangbo.delay(order_info) # 瞬间返回,不阻塞请求
@@ -2590,12 +2590,12 @@ class KehuTianxieDingdanView(APIView):
'zhuangtai_text': '普通订单' if zhuangtai_xin == 1 else '指定打手订单'
}
logger.info(f"订单提交成功 - 订单ID: {dingdan_obj.dingdan_id}, IP: {client_ip}")
logger.info(f"订单提交成功 - 订单ID: {dingdan_obj.OrderID}, IP: {client_ip}")
# 新方法(行为驱动,更安全)
update_shangjia_daily(
yonghuid=lianjie_obj.yonghu_id,
amount=Decimal(str(dingdan_obj.jine)),
amount=Decimal(str(dingdan_obj.Amount)),
action=1 # 1 = 派发
)
@@ -2605,7 +2605,7 @@ class KehuTianxieDingdanView(APIView):
'data': response_data
}, status=status.HTTP_200_OK)
except Dingdan.DoesNotExist:
except Order.DoesNotExist:
logger.error(f"订单不存在 - 订单ID: {lianjie_obj.dingdan_id}")
return Response({
'code': 500,
@@ -2637,17 +2637,17 @@ class KehuTianxieDingdanView(APIView):
try:
# 获取游戏类型名称
try:
leixing_obj = ShangpinLeixing.query.get(id=dingdan.leixing_id)
leixing_obj = ShangpinLeixing.query.get(id=dingdan.ProductTypeID)
game_type = leixing_obj.jieshao
except:
game_type = '未知游戏'
# 构建订单信息
order_info = {
'dingdan_id': dingdan.dingdan_id,
'dingdan_id': dingdan.OrderID,
'game_type': game_type,
'amount': str(dingdan.jine),
'order_desc': dingdan.jieshao[:50] if dingdan.jieshao else '新订单',
'amount': str(dingdan.Amount),
'order_desc': dingdan.Description[:50] if dingdan.Description else '新订单',
'youxi_nicheng': youxi_nicheng,
'order_type': '指定订单' if zhuangtai == 7 else '普通订单',
'zhiding_dashou': zhiding_dashou or ''