修正过早的键更新

This commit is contained in:
2026-06-19 17:33:31 +08:00
parent 0ff82d1bac
commit 8aa36e3764
3 changed files with 124 additions and 101 deletions

View File

@@ -5856,24 +5856,24 @@ class FaKuanLieBiaoView(APIView):
for r in records:
results.append({
'id': r.id,
'PenalizedUserID': r.PenalizedUserID,
'Identity': r.Identity,
'Identity_text': dict(Penalty._meta.get_field('Identity').choices).get(r.Identity, ''),
'ApplicantID': r.ApplicantID or '',
'ApplicantIdentity': r.ApplicantIdentity,
'Reason': r.Reason or '',
'FineAmount': str(r.FineAmount),
'RelatedOrderID': r.RelatedOrderID or '',
'Status': r.Status,
'AffectsGrabbing': r.AffectsGrabbing,
'AppealReason': r.AppealReason or '',
'RejectReason': r.RejectReason or '',
'ProcessorID': r.ProcessorID or '',
'ProcessorIdentity': r.ProcessorIdentity,
'beichufa_id': r.PenalizedUserID,
'shenfen': r.Identity,
'shenfen_text': dict(Penalty._meta.get_field('Identity').choices).get(r.Identity, ''),
'shenqing_chufa': r.ApplicantID or '',
'shenqingren_shenfen': r.ApplicantIdentity,
'chufaliyou': r.Reason or '',
'fakuanjine': str(r.FineAmount),
'guanliandingdan_id': r.RelatedOrderID or '',
'zhuangtai': r.Status,
'yingxiang_qiangdan': r.AffectsGrabbing,
'shensuliyou': r.AppealReason or '',
'bohuiliyou': r.RejectReason or '',
'chulizhe': r.ProcessorID or '',
'chulizhe_shenfen': r.ProcessorIdentity,
'zhengju_tupian': zhengju_map.get(r.id, []),
'shensu_tupian': shensu_map.get(r.id, []),
'CreateTime': r.CreateTime.strftime('%Y-%m-%d %H:%M:%S') if r.CreateTime else '',
'UpdateTime': r.UpdateTime.strftime('%Y-%m-%d %H:%M:%S') if r.UpdateTime else '',
'creat_time': r.CreateTime.strftime('%Y-%m-%d %H:%M:%S') if r.CreateTime else '',
'update_time': r.UpdateTime.strftime('%Y-%m-%d %H:%M:%S') if r.UpdateTime else '',
})
return Response({
@@ -7161,7 +7161,7 @@ class CwhqjtddsjView(APIView):
'success_count': item['success_count'],
'success_amount': float(item['success_amount'] or 0),
'refund_count': item['refund_count'],
'PlayerCommission': float(item['PlayerCommission_sum'] or 0),
'dashou_fencheng': float(item['PlayerCommission_sum'] or 0),
'dianpu_fenhong': float(item['dianpu_fenhong_sum'] or 0),
'profit': round(total_profit, 2)
})

View File

@@ -443,7 +443,7 @@ class PaymentVerifyView(APIView):
return Response({
'code': 0,
'msg': '订单状态正常',
'data': {'dingdanid': dingdanid, 'Status': dingdan.Status}
'data': {'dingdanid': dingdanid, 'zhuangtai': dingdan.Status}
})
# ---------- 5. 如果状态为9则主动查询微信支付状态 ----------
@@ -466,11 +466,11 @@ class PaymentVerifyView(APIView):
return Response({
'code': 0,
'msg': '支付成功',
'data': {'dingdanid': dingdanid, 'Status': dingdan.Status}
'data': {'dingdanid': dingdanid, 'zhuangtai': dingdan.Status}
})
elif trade_state in ['NOTPAY', 'USERPAYING']:
# 用户尚未支付或支付中
return Response({'code': 1, 'msg': '支付中', 'data': {'Status': 9}})
return Response({'code': 1, 'msg': '支付中', 'data': {'zhuangtai': 9}})
else:
# 其他状态CLOSED, REVOKED, PAYERROR 等,视为支付失败
return Response({'code': 2, 'msg': '支付失败'})
@@ -491,7 +491,7 @@ class PaymentVerifyView(APIView):
8: '结算中',
0: '订单已作废',
}.get(dingdan.Status, '订单状态异常')
return Response({'code': 3, 'msg': status_msg, 'data': {'Status': dingdan.Status}})
return Response({'code': 3, 'msg': status_msg, 'data': {'zhuangtai': dingdan.Status}})
except Exception as e:
logger.error(f"订单复查接口异常: {e}", exc_info=True)
@@ -1091,11 +1091,11 @@ class DingdanHuoquView(APIView):
for order in current_page_orders:
order_data = {
'dingdanId': order.OrderID,
'Status': order.Status,
'zhuangtai': order.Status,
'jine': float(order.Amount) if order.Amount else 0.0,
'ImageURL': order.ImageURL or '',
'Description': order.Description or '',
'Remark': order.Remark or '',
'tupian_url': order.ImageURL or '',
'jieshao': order.Description or '',
'beizhu': order.Remark or '',
'nicheng': order.Nickname or '',
'chuangjianshijian': order.CreateTime.strftime('%Y-%m-%d %H:%M:%S')
}
@@ -1212,9 +1212,9 @@ class DingdanXiangqingView(APIView):
# 5. 构建返回数据(字段名与前端对应)
response_data = {
'Status': zhuangtai, # 订单状态
'zhuangtai': zhuangtai, # 订单状态
'zhiding': zhiding_id, # 指定打手ID
'PlayerID': jiedan_dashou_id, # 服务打手ID
'jiedan_dashou_id': jiedan_dashou_id, # 服务打手ID
'dashouliuyan': dashou_liuyan, # 打手留言
'dashoujiaofu': dashoujiaofu_list # 打手交付图片列表
}
@@ -1545,13 +1545,13 @@ class DingdanXiangqingView2(APIView):
fanche_cishu = biaoxian.fanche_cishu
data = {
'Status': zhuangtai,
'PlayerID': jiedan_dashou_id,
'zhuangtai': zhuangtai,
'jiedan_dashou_id': jiedan_dashou_id,
'dashou_nicheng': dashou_nicheng,
'dashou_touxiang': dashou_touxiang,
'dashouliuyan': dashou_liuyan,
'dashoujiaofu': dashoujiaofu_list,
'UpdateTime': update_time,
'update_time': update_time,
'jiedan_time': jiedan_time,
'tijiao_time': tijiao_time,
'laoban_pingjia': laoban_pingjia,
@@ -1787,9 +1787,9 @@ class ShangpinLeixingView(APIView):
for sp in shangpin_queryset:
item = {
'id': sp.id,
'GrabRequirement': sp.yaoqiuleixing,
'MembershipID': sp.huiyuan_id,
'Description': sp.jieshao,
'yaoqiuleixing': sp.yaoqiuleixing,
'huiyuan_id': sp.huiyuan_id,
'jieshao': sp.jieshao,
# 当前类型所属板块的称号列表(无板块则为空数组)
'chenghaoList': bankuai_chenghao_map.get(sp.bankuai_id, [])
}
@@ -2119,16 +2119,16 @@ class ShangjiaDingdanHuoquView(APIView):
for shangjia_order in current_page_orders:
order = shangjia_order.Order
order_data = {
'OrderID': order.OrderID,
'Status': order.Status,
'dingdan_id': order.OrderID,
'zhuangtai': order.Status,
'jine': float(order.Amount) if order.Amount else 0.0,
'Description': order.Description or '',
'Remark': order.Remark or '',
'jieshao': order.Description or '',
'beizhu': order.Remark or '',
'nicheng': order.Nickname or '',
'ProductTypeID': order.ProductTypeID, # 🆕 返回商品类型ID
'ImageURL': order.ImageURL or '', # 🆕 返回商品图片
'jiedan_dashou_id': order.PlayerID or '', # 🆕 返回打手ID
'CreateTime': order.CreateTime.strftime('%Y-%m-%d %H:%M:%S') if order.CreateTime else ''
'shangpin_leixing_id': order.ProductTypeID, # 返回商品类型ID
'tupian_url': order.ImageURL or '', # 返回商品图片
'jiedan_dashou_id': order.PlayerID or '', # 返回打手ID
'creat_time': order.CreateTime.strftime('%Y-%m-%d %H:%M:%S') if order.CreateTime else ''
}
order_list.append(order_data)
@@ -2242,12 +2242,12 @@ class ShangjiaDingdanXiangqingView(APIView):
'chufaliyou': fadan_obj.Reason or '',
'fakuanjine': float(fadan_obj.FineAmount) if fadan_obj.FineAmount else 0.0,
'yingxiang_qiangdan': fadan_obj.AffectsGrabbing,
'Status': fadan_obj.Status,
'zhuangtai': fadan_obj.Status,
'shensuliyou': fadan_obj.AppealReason or '',
'tongyi_chufaliyou': fadan_obj.ApproveReason or '',
'bohuiliyou': fadan_obj.RejectReason or '',
'CreateTime': fadan_obj.CreateTime.strftime('%Y-%m-%d %H:%M:%S') if fadan_obj.CreateTime else '',
'UpdateTime': fadan_obj.UpdateTime.strftime('%Y-%m-%d %H:%M:%S') if fadan_obj.UpdateTime else '',
'creat_time': fadan_obj.CreateTime.strftime('%Y-%m-%d %H:%M:%S') if fadan_obj.CreateTime else '',
'update_time': fadan_obj.UpdateTime.strftime('%Y-%m-%d %H:%M:%S') if fadan_obj.UpdateTime else '',
}
# 7. 商家自己的分红利率(用于罚款分红计算)
@@ -2279,13 +2279,13 @@ class ShangjiaDingdanXiangqingView(APIView):
# 9. 构建返回数据
response_data = {
# 基础订单字段
'OrderID': order.OrderID,
'Status': order.Status or 0,
'dingdan_id': order.OrderID,
'zhuangtai': order.Status or 0,
'jine': float(order.Amount) if order.Amount else 0.0,
'Description': order.Description or '',
'Remark': order.Remark or '',
'jieshao': order.Description or '',
'beizhu': order.Remark or '',
'nicheng': order.Nickname or '',
'CreateTime': order.CreateTime.strftime('%Y-%m-%d %H:%M:%S') if order.CreateTime else '',
'creat_time': order.CreateTime.strftime('%Y-%m-%d %H:%M:%S') if order.CreateTime else '',
# 打手信息
'dashou_yonghuid': dashou_yonghuid,
@@ -2294,7 +2294,7 @@ class ShangjiaDingdanXiangqingView(APIView):
# 服务详情
'fuwudashou_id': dashou_yonghuid, # 保留旧字段兼容
'PlayerRemark': order.PlayerRemark or '',
'dashou_liuyan': order.PlayerRemark or '',
'dashou_jiaofu': dashou_jiaofu,
# 商家扩展字段(旧)
@@ -2498,10 +2498,10 @@ class ShangjiaJiesuanView(APIView):
'code': 0,
'msg': '结单成功',
'data': {
'OrderID': dingdan_id,
'dingdan_id': dingdan_id,
'new_zhuangtai': 3,
'jine': float(jine),
'PlayerCommission': float(dashou_fencheng),
'dashou_fencheng': float(dashou_fencheng),
'jiedan_dashou_id': jiedan_dashou_id,
'pingfen': pingfen,
'liuyan': liuyan
@@ -2644,7 +2644,7 @@ class ShangjiaChexiaoView(APIView):
'code': 0,
'msg': '撤销成功',
'data': {
'OrderID': dingdan_id,
'dingdan_id': dingdan_id,
'new_zhuangtai': 5,
'tuikuan_liyou': chexiao_liyou,
'jine': float(dingdan.Amount) if dingdan.Amount else 0.0
@@ -2783,7 +2783,7 @@ class ShangjiaTuikuanShenqingView(APIView):
'code': 0,
'msg': '退款申请提交成功',
'data': {
'OrderID': dingdan_id,
'dingdan_id': dingdan_id,
'new_zhuangtai': 4,
'tuikuan_liyou': tuikuan_liyou,
'jine': float(dingdan.Amount) if dingdan.Amount else 0.0,
@@ -2943,12 +2943,12 @@ class ShangjiaChufaShenqingView(APIView):
'code': 0,
'msg': '处罚申请提交成功',
'data': {
'OrderID': dingdan_id,
'dingdan_id': dingdan_id,
'dashou_id': dashou_id,
'chufa_liyou': chufa_liyou,
'sqzhuangtai': 0,
'jifen': 5,
'tupian_count': len(chufa_tupian_urls) if chufa_tupian_urls else 0 # 🔴 返回图片数量
'tupian_count': len(chufa_tupian_urls) if chufa_tupian_urls else 0 # 返回图片数量
}
}, status=status.HTTP_200_OK)
@@ -3140,22 +3140,21 @@ class DashouDingdanHuoquView(APIView):
zid = order.get('AssignedID')
info = zhiding_info.get(zid, {})
formatted_list.append({
'OrderID': order['OrderID'],
'Status': order['Status'],
'dingdan_id': order['OrderID'],
'zhuangtai': order['Status'],
'pingtai': order['Platform'],
'Platform': order['Platform'],
'PlayerCommission': float(order['PlayerCommission']) if order['PlayerCommission'] else 0.0,
'AssignedID': order['AssignedID'] or '',
'ProductTypeID': order['ProductTypeID'] or 0,
'ImageURL': order['ImageURL'] or '',
'GrabRequirement': order['GrabRequirement'] or 0,
'MembershipID': order['MembershipID'] or '',
'dashou_fencheng': float(order['PlayerCommission']) if order['PlayerCommission'] else 0.0,
'zhiding_id': order['AssignedID'] or '',
'shangpin_leixing_id': order['ProductTypeID'] or 0,
'tupian_url': order['ImageURL'] or '',
'yaoqiuleixing': order['GrabRequirement'] or 0,
'huiyuan_id': order['MembershipID'] or '',
'yajin': float(order['CommissionReq']) if order['CommissionReq'] else 0.0,
'CommissionReq': float(order['CommissionReq']) if order['CommissionReq'] else 0.0,
'Description': order['Description'] or '',
'Remark': order['Remark'] or '',
'yongjin': float(order['CommissionReq']) if order['CommissionReq'] else 0.0,
'jieshao': order['Description'] or '',
'beizhu': order['Remark'] or '',
'creat_time': order['CreateTime'].strftime('%Y-%m-%d %H:%M:%S') if order['CreateTime'] else '',
'MerchantNickname': order['MerchantNickname'] or '',
'shangjia_nicheng': order['MerchantNickname'] or '',
'zhiding_uid': order['AssignedID'] or '',
'zhiding_avatar': info.get('avatar', ''),
'zhiding_nicheng': info.get('nicheng', ''),
@@ -3607,7 +3606,7 @@ class QiangdanView(APIView):
'code': 200,
'msg': '抢单成功',
'data': {
'OrderID': dingdan_id,
'dingdan_id': dingdan_id,
'chat_established': chat_success
}
})
@@ -3771,13 +3770,13 @@ class DashouDingdanHuoquView1(APIView):
order_list = []
for order in current_page_orders:
order_data = {
'OrderID': order.OrderID,
'Status': order.Status,
'dingdan_id': order.OrderID,
'zhuangtai': order.Status,
'jine': float(order.PlayerCommission) if order.PlayerCommission else 0.0,
'Description': order.Description or '',
'ImageURL': order.ImageURL or '',
'jieshao': order.Description or '',
'tupian_url': order.ImageURL or '',
'nicheng': order.Nickname or '',
'CreateTime': order.CreateTime.strftime('%Y-%m-%d %H:%M:%S') if order.CreateTime else ''
'creat_time': order.CreateTime.strftime('%Y-%m-%d %H:%M:%S') if order.CreateTime else ''
}
order_list.append(order_data)
@@ -4104,10 +4103,10 @@ class ShangjiaCOSZhengshuView(APIView):
'region': settings.COS_REGION,
# 🔴【修改】商家专用上传目录
'upload_dir': 'a_long/chfajltp/sjzjtp/',
# 🔴【新增】返回商家ID和订单ID便于前端生成文件名
'OrderID': dingdan_id,
'MerchantID': shangjia_id,
# 🔴【新增】可选:返回商家昵称,便于前端显示
# 返回商家ID和订单ID便于前端生成文件名
'dingdan_id': dingdan_id,
'shangjia_id': shangjia_id,
# 返回商家昵称,便于前端显示
'shangjia_nicheng': shangjia_profile.nicheng if hasattr(shangjia_profile, 'nicheng') else ''
}
@@ -4238,7 +4237,7 @@ class DashouTijiaoView(APIView):
'code': 0,
'msg': '订单提交成功',
'data': {
'OrderID': dingdan_id,
'dingdan_id': dingdan_id,
'new_zhuangtai': 8, # 新的订单状态
'dashou_zhuangtai': 1 # 打手新的状态
}
@@ -4302,16 +4301,16 @@ class DashouDingdanXiangqingView(APIView):
# 5. 构建基础订单数据
dingdan_data = {
'OrderID': dingdan.OrderID,
'Status': dingdan.Status,
'dingdan_id': dingdan.OrderID,
'zhuangtai': dingdan.Status,
'jine': float(dingdan.PlayerCommission) if dingdan.PlayerCommission else 0.0,
'Description': dingdan.Description or '',
'ImageURL': dingdan.ImageURL or '',
'jieshao': dingdan.Description or '',
'tupian_url': dingdan.ImageURL or '',
'nicheng': dingdan.Nickname or '',
'Remark': dingdan.Remark or '',
'CreateTime': dingdan.CreateTime.strftime('%Y-%m-%d %H:%M:%S') if dingdan.CreateTime else '',
'beizhu': dingdan.Remark or '',
'creat_time': dingdan.CreateTime.strftime('%Y-%m-%d %H:%M:%S') if dingdan.CreateTime else '',
'tuikuan_liyou':dingdan.RefundReason or '',
'PlayerRemark': dingdan.PlayerRemark or '',
'dashou_liuyan': dingdan.PlayerRemark or '',
'fuwudashou_id': dingdan.PlayerID or '',
'fadanpingtai': dingdan.Platform or ''
}
@@ -4334,7 +4333,7 @@ class DashouDingdanXiangqingView(APIView):
try:
shangjia_kuozhan = dingdan.shangjia_kuozhan
shangjia_info = {
'MerchantID': shangjia_kuozhan.MerchantID or '',
'shangjia_id': shangjia_kuozhan.MerchantID or '',
'shangjia_nicheng': shangjia_kuozhan.MerchantNickname or '',
'shangjia_liuyan': shangjia_kuozhan.MerchantReview or '',
#'tuikuan_liyou': '',
@@ -4346,7 +4345,7 @@ class DashouDingdanXiangqingView(APIView):
except MerchantOrderExt.DoesNotExist:
# 没有商家扩展信息,返回空值
shangjia_info = {
'MerchantID': '',
'shangjia_id': '',
'shangjia_nicheng': '',
'shangjia_liuyan': '',
'tuikuan_liyou': '',
@@ -4465,20 +4464,20 @@ class AdGetDingdanXiangQing(APIView):
# 7. 构建返回数据 - 主表字段
response_data = {
# 基础信息字段
'OrderID': dingdan_obj.OrderID or '',
'Description': dingdan_obj.Description or '',
'Status': dingdan_obj.Status or 0,
'dingdan_id': dingdan_obj.OrderID or '',
'jieshao': dingdan_obj.Description or '',
'zhuangtai': dingdan_obj.Status or 0,
'leixing': dingdan_obj.ProductTypeID or 0, # 前端需要 leixing对应 leixing_id
'fadanpingtai': dingdan_obj.Platform or 0, # 前端需要 fadanpingtai对应 fadan_pingtai
'jiage': float(dingdan_obj.Amount) if dingdan_obj.Amount else 0.00, # 前端需要 jiage对应 jine
'tupian_url': dingdan_obj.ImageURL or '', # 前端需要 tupian_url对应 tupian
'Remark': dingdan_obj.Remark or '',
'beizhu': dingdan_obj.Remark or '',
# 服务信息字段
'jiedan_dashou_id': dingdan_obj.PlayerID or '',
'PlayerCommission': float(dingdan_obj.PlayerCommission) if dingdan_obj.PlayerCommission else 0.00,
'AssignedID': dingdan_obj.AssignedID or '',
'PlayerRemark': dingdan_obj.PlayerRemark or '',
'dashou_fencheng': float(dingdan_obj.PlayerCommission) if dingdan_obj.PlayerCommission else 0.00,
'zhiding_id': dingdan_obj.AssignedID or '',
'dashou_liuyan': dingdan_obj.PlayerRemark or '',
# 时间字段
'chuangjianshijian': dingdan_obj.CreateTime.strftime(
@@ -4516,8 +4515,8 @@ class AdGetDingdanXiangQing(APIView):
shangjia_kuozhan = dingdan_obj.shangjia_kuozhan
response_data.update({
'MerchantID': shangjia_kuozhan.MerchantID or '',
'MerchantNickname': shangjia_kuozhan.MerchantNickname or '',
'shangjia_id': shangjia_kuozhan.MerchantID or '',
'shangjia_nicheng': shangjia_kuozhan.MerchantNickname or '',
'shangjia_pingjia': shangjia_kuozhan.MerchantReview or '',
'cfliyou': shangjia_kuozhan.PenaltyReason or '', # 商家处罚理由
'bhliyou': shangjia_kuozhan.RejectReason or '', # 驳回理由
@@ -4525,8 +4524,8 @@ class AdGetDingdanXiangQing(APIView):
except MerchantOrderExt.DoesNotExist:
# 扩展表不存在,返回空值
response_data.update({
'MerchantID': '',
'MerchantNickname': '',
'shangjia_id': '',
'shangjia_nicheng': '',
'shangjia_pingjia': '',
'cfliyou': '',
'bhliyou': '',

View File

@@ -34,6 +34,12 @@ ROLE_CONFIG = {
'sort_field': 'CompletedAmount',
'fields': ('AcceptedOrderTotal', 'CompletedOrderTotal', 'AcceptedAmount', 'CompletedAmount'),
'int_fields': frozenset({'AcceptedOrderTotal', 'CompletedOrderTotal'}),
'response_field_map': {
'AcceptedOrderTotal': 'jiedan_zongliang',
'CompletedOrderTotal': 'chengjiao_zongliang',
'AcceptedAmount': 'jiedan_zonge',
'CompletedAmount': 'chengjiao_zonge',
},
},
'guanshi': {
'model': ManagerDailyStats,
@@ -41,6 +47,11 @@ ROLE_CONFIG = {
'sort_field': 'TotalIncome',
'fields': ('InvitedPlayerCount', 'RechargedPlayerCount', 'TotalIncome'),
'int_fields': frozenset({'InvitedPlayerCount', 'RechargedPlayerCount'}),
'response_field_map': {
'InvitedPlayerCount': 'yaoqing_dashou_shu',
'RechargedPlayerCount': 'chongzhi_dashou_shu',
'TotalIncome': 'shouru_zonge',
},
},
'zuzhang': {
'model': LeaderDailyStats,
@@ -48,6 +59,11 @@ ROLE_CONFIG = {
'sort_field': 'TotalIncome',
'fields': ('InvitedManagerCount', 'CommissionAmount', 'TotalIncome'),
'int_fields': frozenset({'InvitedManagerCount'}),
'response_field_map': {
'InvitedManagerCount': 'yaoqing_guanshi_shu',
'CommissionAmount': 'fenyong_jine',
'TotalIncome': 'shouru_zonge',
},
},
'shangjia': {
'model': MerchantDailyStats,
@@ -55,6 +71,12 @@ ROLE_CONFIG = {
'sort_field': 'SettledAmount',
'fields': ('AssignedOrderCount', 'AssignedAmount', 'SettledOrderCount', 'SettledAmount'),
'int_fields': frozenset({'AssignedOrderCount', 'SettledOrderCount'}),
'response_field_map': {
'AssignedOrderCount': 'paifa_dingdan_shu',
'AssignedAmount': 'paifa_jine',
'SettledOrderCount': 'jiesuan_dingdan_shu',
'SettledAmount': 'jiesuan_jine',
},
},
}
@@ -186,6 +208,7 @@ class PhbHqsjView(APIView):
id_field = cfg['id_field']
result_list = []
response_field_map = cfg.get('response_field_map', {})
for idx, row in enumerate(rows):
yonghuid = row[id_field]
item = {
@@ -195,7 +218,8 @@ class PhbHqsjView(APIView):
'touxiang': avatar_map.get(yonghuid, '') or '',
}
for field in cfg['fields']:
item[field] = _fmt_value(row.get(field), field in int_fields)
response_key = response_field_map.get(field, field)
item[response_key] = _fmt_value(row.get(field), field in int_fields)
result_list.append(item)
return Response({