实现配送员分账
This commit is contained in:
parent
64e2f4a339
commit
8716233e29
@ -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)}")
|
||||
@ -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()
|
||||
Loading…
Reference in New Issue
Block a user