diff --git a/app/api/endpoints/order.py b/app/api/endpoints/order.py index 3bbb0e4..626432b 100644 --- a/app/api/endpoints/order.py +++ b/app/api/endpoints/order.py @@ -103,12 +103,7 @@ def calculate_price(price_request: OrderPriceCalculateRequest,user: UserDB,db: S extra_package_price = float(community.extra_package_price) extra_package_threshold = int(community.extra_package_threshold) - original_amount = base_price - - # 超过阈值的包裹额外收费 - if package_count > extra_package_threshold: - extra_count = package_count - extra_package_threshold - original_amount += extra_count * extra_package_price + original_amount = round(base_price + extra_package_price * (package_count - extra_package_threshold), 2) result.price_info.package_count = package_count result.price_info.pickup_images_count = pickup_images_count @@ -145,7 +140,7 @@ def calculate_price(price_request: OrderPriceCalculateRequest,user: UserDB,db: S remaining_amount -= points_discount_amount # 计算最终金额 - result.price_info.final_amount = remaining_amount + result.price_info.final_amount = round(remaining_amount, 2) # 计算价格详情 result.price_detail_text = f"基础配送费{round(base_price, 1)}元 (含{extra_package_threshold}件包裹),超出部分{round(extra_package_price, 1)}元/件" diff --git a/app/api/endpoints/order_additional_fee.py b/app/api/endpoints/order_additional_fee.py index 528d5cf..fd227a4 100644 --- a/app/api/endpoints/order_additional_fee.py +++ b/app/api/endpoints/order_additional_fee.py @@ -176,10 +176,11 @@ async def accept_additional_fee( # 更新加价请求 @router.put("/{request_id}", response_model=ResponseModel) async def update_additional_fee( + background_tasks: BackgroundTasks, request_id: int, new_fee_request: OrderAdditionalFeeUpdate, db: Session = Depends(get_db), - current_user: UserDB = Depends(get_deliveryman_user) + deliveryman: UserDB = Depends(get_deliveryman_user) ): """更新加价请求""" # 获取加价请求 @@ -187,12 +188,19 @@ async def update_additional_fee( OrderAdditionalFeeDB.id == request_id, OrderAdditionalFeeDB.result == AdditionalFeeResult.PENDING ).first() + + order = db.query(ShippingOrderDB).filter( + ShippingOrderDB.orderid == old_fee_request.orderid + ).first() + + if not order: + return error_response(code=404, message="订单不存在") if not old_fee_request: return error_response(code=404, message="加价请求不存在") # 检查是否是订单用户 - if old_fee_request.deliveryman_id != current_user.userid: + if old_fee_request.deliveryman_id != deliveryman.userid: return error_response(code=403, message="您无权处理该加价请求") # 更新加价请求 @@ -203,6 +211,27 @@ async def update_additional_fee( try: db.commit() db.refresh(old_fee_request) + + # 发送通知给用户 + user = db.query(UserDB).filter(UserDB.userid == order.userid).first() + if user: + await qcloud_manager.send_sms_code_additional_fee(user.phone) + + if user.mp_openid: + #发送模板消息 + data={ + "character_string1": old_fee_request.orderid, + "thing2": deliveryman.nickname, + "time3": datetime.now().strftime("%Y-%m-%d %H:%M:%S") + } + background_tasks.add_task( + sent_order_status_change_message, + openid=user.mp_openid, + template_id=settings.ADDITIONAL_FEE_REQUEST_TEMPLATE_ID, + data=data, + orderid=old_fee_request.orderid + ) + return success_response(data=OrderAdditionalFeeInfo.model_validate(old_fee_request)) except Exception as e: db.rollback() diff --git a/app/middleware/request_logger.py b/app/middleware/request_logger.py index 19301da..15c1d8c 100644 --- a/app/middleware/request_logger.py +++ b/app/middleware/request_logger.py @@ -44,6 +44,7 @@ class RequestLoggerMiddleware(BaseHTTPMiddleware): if body_bytes: body = json.loads(body_bytes) body = self.filter_sensitive_data(body, path) + print(f"请求体: {body}") except: pass