实现配送员分账

This commit is contained in:
aaron 2025-01-23 12:00:26 +08:00
parent 64e2f4a339
commit 8716233e29
2 changed files with 17 additions and 2 deletions

View File

@ -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)}")
return error_response(code=500, message=f"操作失败: {str(e)}")

View File

@ -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()
settings = Settings()