update
This commit is contained in:
parent
3353b88431
commit
aaf5fcdeea
@ -79,16 +79,30 @@ def calculate_price(price_request: OrderPriceCalculateRequest,user: UserDB,db: S
|
||||
points_discount_amount=0,
|
||||
original_amount=0,
|
||||
final_amount=0
|
||||
),
|
||||
price_detail_text=settings.ORDER_PREORDER_PRICE_TEXT
|
||||
)
|
||||
)
|
||||
|
||||
original_amount = settings.ORDER_BASE_PRICE
|
||||
# 默认定价
|
||||
base_price = settings.ORDER_BASE_PRICE
|
||||
extra_package_price = settings.ORDER_EXTRA_PACKAGE_PRICE
|
||||
extra_package_threshold = settings.ORDER_EXTRA_PACKAGE_THRESHOLD
|
||||
|
||||
# 获取小区定价
|
||||
if price_request.community_id > 0:
|
||||
community = db.query(CommunityDB).filter(
|
||||
CommunityDB.id == price_request.community_id
|
||||
).first()
|
||||
if community:
|
||||
base_price = community.base_price
|
||||
extra_package_price = community.extra_package_price
|
||||
extra_package_threshold = community.extra_package_threshold
|
||||
|
||||
original_amount = base_price
|
||||
|
||||
# 超过阈值的包裹额外收费
|
||||
if package_count > settings.ORDER_EXTRA_PACKAGE_THRESHOLD:
|
||||
extra_count = package_count - settings.ORDER_EXTRA_PACKAGE_THRESHOLD
|
||||
original_amount += extra_count * settings.ORDER_EXTRA_PACKAGE_PRICE
|
||||
if package_count > extra_package_threshold:
|
||||
extra_count = package_count - extra_package_threshold
|
||||
original_amount += extra_count * extra_package_price
|
||||
|
||||
result.price_info.package_count = package_count
|
||||
result.price_info.pickup_images_count = pickup_images_count
|
||||
@ -125,7 +139,10 @@ def calculate_price(price_request: OrderPriceCalculateRequest,user: UserDB,db: S
|
||||
|
||||
# 计算最终金额
|
||||
result.price_info.final_amount = remaining_amount
|
||||
|
||||
|
||||
# 计算价格详情
|
||||
result.price_detail_text = f"基础配送费{round(base_price, 1)}元 (含{extra_package_threshold}件包裹),超出部分{round(extra_package_price, 1)}元/件"
|
||||
|
||||
return result
|
||||
|
||||
@router.post("/pre-order", response_model=ResponseModel)
|
||||
|
||||
@ -20,7 +20,6 @@ class Settings(BaseSettings):
|
||||
#订单创建成功文案
|
||||
ORDER_SUCCESS_TODAY_TEXT: str = "订单预计今晚前送达,请注意查收"
|
||||
ORDER_SUCCESS_TOMORROW_TEXT: str = "订单预计明晚前送达,请注意查收"
|
||||
ORDER_PREORDER_PRICE_TEXT: str = "基础费3元 (含5件包裹) 超出部分0.5元/件"
|
||||
|
||||
# JWT 配置
|
||||
SECRET_KEY: str = "s10GmiRMmplfYWXYZLSsE3X36Ld4gVZxHgAcdqFGC20v3llv7UdOeWLBEEP3e40p"
|
||||
@ -84,10 +83,6 @@ class Settings(BaseSettings):
|
||||
#配送订单取消
|
||||
DELIVERY_ORDER_CANCELLED_TEMPLATE_ID: str = "iGR0rPtOFC_u8Xj5-R730zoDD_4Kbswkf_jSTnSSd6E"
|
||||
|
||||
|
||||
# 企业微信机器人配置
|
||||
WECOM_WEBHOOK_URL: str = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=8d403f6f-2f11-4165-bfd8-851cdd6ba4f7"
|
||||
|
||||
class Config:
|
||||
case_sensitive = True
|
||||
env_file = ".env"
|
||||
|
||||
@ -21,6 +21,12 @@ class CommunityDB(Base):
|
||||
status = Column(Enum(CommunityStatus), nullable=False, default=CommunityStatus.UNOPEN)
|
||||
qy_group_qrcode = Column(String(200), nullable=True) # 企业微信群二维码地址
|
||||
webot_webhook = Column(String(200), nullable=True) # 企业微信机器人webhook
|
||||
|
||||
# 小区定价
|
||||
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) # 额外收费阈值
|
||||
|
||||
create_time = Column(DateTime(timezone=True), server_default=func.now())
|
||||
update_time = Column(DateTime(timezone=True), onupdate=func.now())
|
||||
|
||||
@ -48,6 +54,10 @@ class CommunityUpdate(BaseModel):
|
||||
status: Optional[CommunityStatus] = None
|
||||
qy_group_qrcode: Optional[str] = Field(None, max_length=200)
|
||||
webot_webhook: Optional[str] = Field(None, max_length=200)
|
||||
base_price: Optional[float] = Field(None)
|
||||
extra_package_price: Optional[float] = Field(None)
|
||||
extra_package_threshold: Optional[int] = Field(None)
|
||||
|
||||
class CommunityInfo(BaseModel):
|
||||
id: int
|
||||
name: str
|
||||
@ -57,6 +67,9 @@ class CommunityInfo(BaseModel):
|
||||
status: CommunityStatus
|
||||
qy_group_qrcode: Optional[str] = None
|
||||
webot_webhook: Optional[str] = None
|
||||
base_price: Optional[float] = None
|
||||
extra_package_price: Optional[float] = None
|
||||
extra_package_threshold: Optional[int] = None
|
||||
optimized_qy_group_qrcode: Optional[str] = None
|
||||
distance: Optional[float] = None # 距离,单位:米
|
||||
|
||||
|
||||
@ -111,6 +111,7 @@ class OrderPackage(BaseModel):
|
||||
|
||||
# 先定义 OrderPriceCalculateRequest
|
||||
class OrderPriceCalculateRequest(BaseModel):
|
||||
community_id: int = 0
|
||||
pickup_images: Optional[str] = None
|
||||
pickup_images_count: int = 0
|
||||
packages: Optional[List[OrderPackage]] = None
|
||||
|
||||
Loading…
Reference in New Issue
Block a user