From ce3c96768e982accffa7944b16b953d6f365b481 Mon Sep 17 00:00:00 2001 From: aaron <> Date: Sat, 22 Mar 2025 17:39:18 +0800 Subject: [PATCH] update --- app/api/endpoints/merchant_order.py | 38 +++++++++++++++++++++++----- app/api/endpoints/wechat.py | 14 ++-------- jobs.sqlite | Bin 24576 -> 24576 bytes 3 files changed, 33 insertions(+), 19 deletions(-) diff --git a/app/api/endpoints/merchant_order.py b/app/api/endpoints/merchant_order.py index 5a41ec9..ae0c322 100644 --- a/app/api/endpoints/merchant_order.py +++ b/app/api/endpoints/merchant_order.py @@ -132,12 +132,22 @@ async def cancel_order( if not order: return error_response(code=404, message="订单不存在") - order.status = MerchantOrderStatus.CANCELLED - db.commit() + try: - #TODO 退款 + order.status = MerchantOrderStatus.REFUNDING + db.commit() - return success_response(data=MerchantOrderInfo.model_validate(order)) + wechat = WeChatClient() + await wechat.apply_refund( + order_id=order.order_id, + total_amount=int(float(order.pay_amount) * 100) if not settings.DEBUG else 1, # 转换为分 + reason="用户取消订单" + ) + return success_response(data=MerchantOrderInfo.model_validate(order)) + + except Exception as e: + db.rollback() + return error_response(code=500, message=f"取消订单失败: {str(e)}") @router.put("/{order_id}/confirm", response_model=ResponseModel) async def confirm_order( @@ -153,10 +163,24 @@ async def confirm_order( if not order: return error_response(code=404, message="订单不存在") - order.status = MerchantOrderStatus.DELIVERING - db.commit() + try: + order.status = MerchantOrderStatus.DELIVERING + db.commit() - return success_response(data=MerchantOrderInfo.model_validate(order)) + # 如果订单有赠送积分,增加积分 + if order.gift_points > 0: + point_manager = PointManager(db) + point_manager.add_points( + user_id = order.user_id, + points = order.gift_points, + description = f"消费送蜂蜜", + order_id = order.order_id + ) + + return success_response(data=MerchantOrderInfo.model_validate(order)) + except Exception as e: + db.rollback() + return error_response(code=500, message=f"确认订单失败: {str(e)}") @router.get("/merchant/verify/{verify_code}", response_model=ResponseModel) diff --git a/app/api/endpoints/wechat.py b/app/api/endpoints/wechat.py index ed6bd90..b4957de 100644 --- a/app/api/endpoints/wechat.py +++ b/app/api/endpoints/wechat.py @@ -345,19 +345,9 @@ async def refund_notify( return error_response(code=404, message="订单不存在或状态不正确") # 更新订单状态 - order.status = MerchantOrderStatus.REFUNDED + order.status = MerchantOrderStatus.CANCELLED order.refund_transaction_id = data.get("transaction_id") order.refund_time = datetime.fromisoformat(success_time.replace('Z', '+00:00')) - - # 如果订单有赠送积分,则扣除积分 - if order.gift_points > 0: - point_manager = PointManager(db) - point_manager.deduct_points( - user_id = order.user_id, - points = order.gift_points, - description = f"订单退款,返还积分", - order_id = order.order_id - ) elif out_trade_no.startswith('P'): # 商家在线买单 order = db.query(MerchantPayOrderDB).filter( @@ -377,7 +367,7 @@ async def refund_notify( point_manager.deduct_points( user_id = order.user_id, points = order.gift_points, - description = f"订单退款,返还积分", + description = f"订单取消扣除", order_id = order.order_id ) diff --git a/jobs.sqlite b/jobs.sqlite index 22f5bba5b032d6ff6543768eaf0e04761b9a8204..6a3240455d46a8d9526c493669be7054f4c46291 100644 GIT binary patch delta 21 bcmZoTz}Rqrae@>Ro8m+nCm^{oVL?0qN-+k0 delta 21 bcmZoTz}Rqrae@>R>-UK=PC#;F!h(1JSAPg7