增加固定金额分账

This commit is contained in:
aaron 2025-03-04 23:33:45 +08:00
parent 232a49ba32
commit 1fcf9cd3ce
3 changed files with 20 additions and 8 deletions

View File

@ -395,6 +395,8 @@ async def get_order_detail(
deliveryman_share = 0 deliveryman_share = 0
if current_user.delivery_commission_rate is not None: if current_user.delivery_commission_rate is not None:
deliveryman_share = round(order.original_amount * (current_user.delivery_commission_rate / 100.0), 2) deliveryman_share = round(order.original_amount * (current_user.delivery_commission_rate / 100.0), 2)
if current_user.delivery_commission_fixed is not None:
deliveryman_share = current_user.delivery_commission_fixed
# 如果有配送员 id则获取配送员信息 # 如果有配送员 id则获取配送员信息
if order.deliveryman_user_id: if order.deliveryman_user_id:
@ -1064,7 +1066,10 @@ async def deliveryman_complete_order(
order.completed_time = datetime.now() order.completed_time = datetime.now()
# 计算配送员分账金额 # 计算配送员分账金额
deliveryman_share = order.original_amount * current_user.delivery_commission_rate / 100 if current_user.delivery_commission_rate is not None:
deliveryman_share = order.original_amount * current_user.delivery_commission_rate / 100
else:
deliveryman_share = current_user.delivery_commission_fixed
# 使用账户管理器处理分账 # 使用账户管理器处理分账
account_manager = AccountManager(db) account_manager = AccountManager(db)

View File

@ -23,7 +23,7 @@ from app.models.user_auth import UserAuthDB, UserAuthCreate, UserAuthInfo
from app.core.qcloud import qcloud_manager from app.core.qcloud import qcloud_manager
from app.models.merchant import MerchantDB from app.models.merchant import MerchantDB
from app.models.address import AddressDB, AddressInfo from app.models.address import AddressDB, AddressInfo
from app.models.user import UserUpdateRoles, UserUpdateDeliveryCommissionRate from app.models.user import UserUpdateRoles, UserUpdateDeliveryCommission
from app.models.order import ShippingOrderDB, OrderStatus from app.models.order import ShippingOrderDB, OrderStatus
from app.core.redis_client import redis_client from app.core.redis_client import redis_client
@ -243,9 +243,9 @@ async def update_user_info(
db.rollback() db.rollback()
return error_response(code=500, message=f"更新失败: {str(e)}") return error_response(code=500, message=f"更新失败: {str(e)}")
@router.put("/delivery-commission-rate", response_model=ResponseModel) @router.put("/delivery-commission", response_model=ResponseModel)
async def update_delivery_commission_rate( async def update_delivery_commission(
update_data: UserUpdateDeliveryCommissionRate, update_data: UserUpdateDeliveryCommission,
db: Session = Depends(get_db), db: Session = Depends(get_db),
current_user: UserDB = Depends(get_admin_user) current_user: UserDB = Depends(get_admin_user)
): ):
@ -255,7 +255,11 @@ async def update_delivery_commission_rate(
if not user: if not user:
return error_response(code=404, message="用户不存在") return error_response(code=404, message="用户不存在")
user.delivery_commission_rate = update_data.delivery_commission_rate if update_data.delivery_commission_rate:
user.delivery_commission_rate = update_data.delivery_commission_rate
if update_data.delivery_commission_fixed:
user.delivery_commission_fixed = update_data.delivery_commission_fixed
db.commit() db.commit()
db.refresh(user) db.refresh(user)

View File

@ -50,6 +50,7 @@ class UserDB(Base):
community_id = Column(Integer, ForeignKey("communities.id"), nullable=True) # 归属小区 community_id = Column(Integer, ForeignKey("communities.id"), nullable=True) # 归属小区
is_auth = Column(Boolean, nullable=False, default=False) is_auth = Column(Boolean, nullable=False, default=False)
delivery_commission_rate = Column(Integer, nullable=False, default=0) # 配送佣金比例 delivery_commission_rate = Column(Integer, nullable=False, default=0) # 配送佣金比例
delivery_commission_fixed = Column(DECIMAL(10, 2), nullable=False, default=0) # 配送佣金固定金额
@property @property
def optimized_avatar(self): def optimized_avatar(self):
@ -83,6 +84,7 @@ class UserInfo(BaseModel):
community_name: Optional[str] = None community_name: Optional[str] = None
is_auth: bool = False is_auth: bool = False
delivery_commission_rate: Optional[int] = None delivery_commission_rate: Optional[int] = None
delivery_commission_fixed: Optional[float] = None
class Config: class Config:
from_attributes = True from_attributes = True
@ -119,9 +121,10 @@ class UserUpdateRoles(BaseModel):
user_id: int user_id: int
roles: List[UserRole] roles: List[UserRole]
class UserUpdateDeliveryCommissionRate(BaseModel): class UserUpdateDeliveryCommission(BaseModel):
user_id: int user_id: int
delivery_commission_rate: int delivery_commission_rate: Optional[int] = None
delivery_commission_fixed: Optional[float] = None
def generate_user_code(db=None) -> str: def generate_user_code(db=None) -> str:
"""生成6位大写字母+数字的用户编码""" """生成6位大写字母+数字的用户编码"""