This commit is contained in:
aaron 2025-03-08 15:08:22 +08:00
parent 7312aedaaf
commit 5e8ba2203b
3 changed files with 34 additions and 9 deletions

View File

@ -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)}元/件"

View File

@ -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()

View File

@ -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