diff --git a/orders/views.py b/orders/views.py index 60868f9..6efb425 100644 --- a/orders/views.py +++ b/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) diff --git a/shop/views.py b/shop/views.py index 37a2a2c..e104474 100644 --- a/shop/views.py +++ b/shop/views.py @@ -3075,12 +3075,12 @@ class ShopFineApplyView(APIView): # ---------- 3. 验证订单归属 ---------- try: - pingtai_ext = DingdanPingtai.query.select_related('dingdan').get( - dianpu_id=shop_id, - dingdan__dingdan_id=dingdan_id + pingtai_ext = PlatformOrderExt.query.select_related('Order').get( + ShopID=shop_id, + Order__OrderID=dingdan_id ) - order = pingtai_ext.dingdan - except DingdanPingtai.DoesNotExist: + order = pingtai_ext.Order + except PlatformOrderExt.DoesNotExist: logger.warning(f"罚款申请:订单 {dingdan_id} 不属于店铺 {shop_id}") return Response({'code': 404, 'msg': '订单不存在或不属于本店铺'}) @@ -3090,21 +3090,21 @@ class ShopFineApplyView(APIView): return Response({'code': 400, 'msg': '该订单无接单打手,无法罚款'}) # ---------- 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': '该打手已被罚款过'}) # ---------- 6. 创建罚单 ---------- with transaction.atomic(): - Fadan.query.create( - beichufa_id=dashou_id, - shenqing_chufa=str(shop_id), # 申请人记为店铺ID - shenfen=1, # 被处罚人身份:1 打手 - chufaliyou=chufaliyou, - fakuanjine=fakuanjine, - guanliandingdan_id=dingdan_id, - zhuangtai=1, # 待缴纳 - yingxiang_qiangdan=yingxiang_qiangdan, - shenqingren_shenfen=4, # 申请人身份:4 店铺管理员 + Penalty.query.create( + PenalizedUserID=dashou_id, + ApplicantID=str(shop_id), # 申请人记为店铺ID + Identity=1, # 被处罚人身份:1 打手 + Reason=chufaliyou, + FineAmount=fakuanjine, + RelatedOrderID=dingdan_id, + Status=1, # 待缴纳 + AffectsGrabbing=yingxiang_qiangdan, + ApplicantIdentity=4, # 申请人身份:4 店铺管理员 ) logger.info(f"本地罚款成功: 订单 {dingdan_id}, 打手 {dashou_id}, 金额 {fakuanjine}") return Response({'code': 200, 'msg': '罚款已生成'})