实现配送员分账

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 fastapi import APIRouter, Depends
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
from typing import List, Optional from typing import List, Optional
@ -432,6 +433,19 @@ async def complete_order(
else: else:
order.status = OrderStatus.COMPLETED # 无需支付,直接完成 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: if complete_data.images:
order.complete_images = ",".join(complete_data.images) order.complete_images = ",".join(complete_data.images)
@ -513,4 +527,4 @@ async def pickup_order(
) )
except Exception as e: except Exception as e:
db.rollback() 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_BASE_PRICE: float = 3.0 # 基础费用
ORDER_EXTRA_PACKAGE_PRICE: float = 0.5 # 额外包裹费用 ORDER_EXTRA_PACKAGE_PRICE: float = 0.5 # 额外包裹费用
ORDER_EXTRA_PACKAGE_THRESHOLD: int = 5 # 额外收费阈值 ORDER_EXTRA_PACKAGE_THRESHOLD: int = 5 # 额外收费阈值
ORDER_DELIVERYMAN_SHARE_RATIO: float = 0.8 # 配送员分账比例
# JWT 配置 # JWT 配置
SECRET_KEY: str = "s10GmiRMmplfYWXYZLSsE3X36Ld4gVZxHgAcdqFGC20v3llv7UdOeWLBEEP3e40p" SECRET_KEY: str = "s10GmiRMmplfYWXYZLSsE3X36Ld4gVZxHgAcdqFGC20v3llv7UdOeWLBEEP3e40p"
@ -66,4 +67,4 @@ class Settings(BaseSettings):
env_file = ".env" env_file = ".env"
extra = "allow" # 允许额外的环境变量 extra = "allow" # 允许额外的环境变量
settings = Settings() settings = Settings()