update
This commit is contained in:
parent
8a063a7cb2
commit
6b258c669f
@ -128,6 +128,7 @@ async def get_communities(
|
||||
"base_price": float(community.base_price),
|
||||
"extra_package_price": float(community.extra_package_price),
|
||||
"extra_package_threshold": community.extra_package_threshold,
|
||||
"more_station_price": float(community.more_station_price),
|
||||
"distance": float(distance_value) if distance_value is not None else None,
|
||||
"admin": None if community.admin is None else {
|
||||
"id": community.admin.userid,
|
||||
|
||||
@ -105,12 +105,16 @@ def calculate_price(price_request: OrderPriceCalculateRequest,user: UserDB,db: S
|
||||
extra_package_price = float(community.extra_package_price)
|
||||
extra_package_threshold = int(community.extra_package_threshold)
|
||||
|
||||
original_amount = round((base_price + extra_package_price * max(0, package_count - extra_package_threshold)), 2)
|
||||
# 是否有多驿站
|
||||
more_station_price = float(community.more_station_price) * (len(price_request.packages) - 1) if len(price_request.packages) > 1 else 0
|
||||
|
||||
original_amount = round(more_station_price + (base_price + extra_package_price * max(0, package_count - extra_package_threshold)), 2)
|
||||
|
||||
result.price_info.package_count = package_count
|
||||
result.price_info.pickup_images_count = pickup_images_count
|
||||
result.price_info.pickup_code_count = pickup_code_count
|
||||
result.price_info.original_amount = original_amount
|
||||
result.price_info.more_station_price = more_station_price
|
||||
result.price_info.final_amount = original_amount
|
||||
|
||||
remaining_amount = original_amount
|
||||
@ -145,7 +149,7 @@ def calculate_price(price_request: OrderPriceCalculateRequest,user: UserDB,db: S
|
||||
result.price_info.final_amount = round(remaining_amount, 2)
|
||||
|
||||
# 计算价格详情
|
||||
result.price_detail_text = f"基础配送费{round(base_price, 1)}元 (含{extra_package_threshold}件包裹),超出部分{round(extra_package_price, 1)}元/件"
|
||||
result.price_detail_text = f"基础配送费{round(base_price, 1)}元 (含{extra_package_threshold}件包裹),超出部分{round(extra_package_price, 1)}元/件,多驿站费: {round(more_station_price, 1)}元/驿站"
|
||||
|
||||
return result
|
||||
|
||||
@ -255,6 +259,7 @@ async def create_order(
|
||||
original_amount=original_amount,
|
||||
coupon_discount_amount=coupon_discount,
|
||||
point_discount_amount=price_info.points_discount_amount,
|
||||
more_station_price=price_info.more_station_price,
|
||||
coupon_id=coupon_id,
|
||||
final_amount=price_info.final_amount,
|
||||
status=OrderStatus.CREATED,
|
||||
@ -505,6 +510,7 @@ async def get_order_detail(
|
||||
"original_amount": order.original_amount,
|
||||
"coupon_discount_amount": order.coupon_discount_amount,
|
||||
"point_discount_amount": order.point_discount_amount,
|
||||
"more_station_price": order.more_station_price,
|
||||
"additional_fee_amount": order.additional_fee_amount,
|
||||
"coupon_id": order.coupon_id,
|
||||
"final_amount": order.final_amount,
|
||||
|
||||
@ -27,8 +27,9 @@ class CommunityDB(Base):
|
||||
|
||||
# 小区定价
|
||||
base_price = Column(DECIMAL(10,2), nullable=False, default=3.0) # 基础费用
|
||||
extra_package_price = Column(DECIMAL(10,2), nullable=False, default=0.5) # 额外包裹费用
|
||||
extra_package_threshold = Column(Integer, nullable=False, default=5) # 额外收费阈值
|
||||
extra_package_price = Column(DECIMAL(10,2), nullable=False, default=1) # 额外包裹费用
|
||||
extra_package_threshold = Column(Integer, nullable=False, default=2) # 额外收费阈值
|
||||
more_station_price = Column(DECIMAL(10,2), nullable=False, default=1.0) # 多驿站加价
|
||||
|
||||
create_time = Column(DateTime(timezone=True), server_default=func.now())
|
||||
update_time = Column(DateTime(timezone=True), onupdate=func.now())
|
||||
@ -71,7 +72,9 @@ class CommunityUpdate(BaseModel):
|
||||
base_price: Optional[float] = Field(None)
|
||||
extra_package_price: Optional[float] = Field(None)
|
||||
extra_package_threshold: Optional[int] = Field(None)
|
||||
more_station_price: Optional[float] = Field(None)
|
||||
admin_id: Optional[int] = Field(None)
|
||||
|
||||
class CommunityInfo(BaseModel):
|
||||
id: int
|
||||
name: str
|
||||
@ -85,6 +88,7 @@ class CommunityInfo(BaseModel):
|
||||
base_price: Optional[float] = None
|
||||
extra_package_price: Optional[float] = None
|
||||
extra_package_threshold: Optional[int] = None
|
||||
more_station_price: Optional[float] = None
|
||||
optimized_qy_group_qrcode: Optional[str] = None
|
||||
distance: Optional[float] = None # 距离,单位:米
|
||||
|
||||
|
||||
@ -72,6 +72,7 @@ class ShippingOrderDB(Base):
|
||||
original_amount = Column(Float, nullable=False)
|
||||
coupon_discount_amount = Column(Float, default=0)
|
||||
point_discount_amount = Column(Float, default=0)
|
||||
more_station_price = Column(Float, default=0)
|
||||
additional_fee_amount = Column(Float, default=0)
|
||||
coupon_id = Column(Integer, ForeignKey("user_coupons.id"), nullable=True)
|
||||
final_amount = Column(Float, nullable=False)
|
||||
@ -172,6 +173,7 @@ class OrderInfo(BaseModel):
|
||||
original_amount: float = 0
|
||||
coupon_discount_amount: float = 0
|
||||
point_discount_amount: float = 0
|
||||
more_station_price: float = 0
|
||||
additional_fee_amount: float = 0
|
||||
coupon_id: Optional[int] = None
|
||||
final_amount: float = 0
|
||||
@ -220,6 +222,7 @@ class OrderPriceInfo(BaseModel):
|
||||
original_amount: float = 0
|
||||
coupon_discount_amount: float = 0
|
||||
points_discount_amount: float = 0
|
||||
more_station_price: float = 0
|
||||
coupon_id: Optional[int] = None
|
||||
final_amount: float = 0
|
||||
|
||||
|
||||
BIN
jobs.sqlite
BIN
jobs.sqlite
Binary file not shown.
Loading…
Reference in New Issue
Block a user