diff --git a/app/api/endpoints/order.py b/app/api/endpoints/order.py index 5767486..a575d41 100644 --- a/app/api/endpoints/order.py +++ b/app/api/endpoints/order.py @@ -1,3 +1,4 @@ +from app.core.account import AccountManager from fastapi import APIRouter, Depends from sqlalchemy.orm import Session from typing import List, Optional @@ -432,6 +433,19 @@ async def complete_order( else: order.status = OrderStatus.COMPLETED # 无需支付,直接完成 + # 只有在订单完成状态时才进行分账 + # 计算配送员分账金额 + deliveryman_share = order.original_amount * settings.ORDER_DELIVERYMAN_SHARE_RATIO + + # 使用账户管理器处理分账 + account_manager = AccountManager(db) + account_manager.change_balance( + user_id=order.deliveryman_user_id, + amount=deliveryman_share, + description=f"订单 {orderid} 配送费分账", + transaction_id=orderid + ) + # 保存完成图片 if complete_data.images: order.complete_images = ",".join(complete_data.images) @@ -513,4 +527,4 @@ async def pickup_order( ) except Exception as e: db.rollback() - return error_response(code=500, message=f"操作失败: {str(e)}") \ No newline at end of file + return error_response(code=500, message=f"操作失败: {str(e)}") \ No newline at end of file diff --git a/app/core/config.py b/app/core/config.py index a1ff059..e0fc5cc 100644 --- a/app/core/config.py +++ b/app/core/config.py @@ -12,6 +12,7 @@ class Settings(BaseSettings): ORDER_BASE_PRICE: float = 3.0 # 基础费用 ORDER_EXTRA_PACKAGE_PRICE: float = 0.5 # 额外包裹费用 ORDER_EXTRA_PACKAGE_THRESHOLD: int = 5 # 额外收费阈值 + ORDER_DELIVERYMAN_SHARE_RATIO: float = 0.8 # 配送员分账比例 # JWT 配置 SECRET_KEY: str = "s10GmiRMmplfYWXYZLSsE3X36Ld4gVZxHgAcdqFGC20v3llv7UdOeWLBEEP3e40p" @@ -66,4 +67,4 @@ class Settings(BaseSettings): env_file = ".env" extra = "allow" # 允许额外的环境变量 -settings = Settings() \ No newline at end of file +settings = Settings() \ No newline at end of file