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,
|
points_discount_amount=0,
|
||||||
original_amount=0,
|
original_amount=0,
|
||||||
final_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:
|
if package_count > extra_package_threshold:
|
||||||
extra_count = package_count - settings.ORDER_EXTRA_PACKAGE_THRESHOLD
|
extra_count = package_count - extra_package_threshold
|
||||||
original_amount += extra_count * settings.ORDER_EXTRA_PACKAGE_PRICE
|
original_amount += extra_count * extra_package_price
|
||||||
|
|
||||||
result.price_info.package_count = package_count
|
result.price_info.package_count = package_count
|
||||||
result.price_info.pickup_images_count = pickup_images_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_info.final_amount = remaining_amount
|
||||||
|
|
||||||
|
# 计算价格详情
|
||||||
|
result.price_detail_text = f"基础配送费{round(base_price, 1)}元 (含{extra_package_threshold}件包裹),超出部分{round(extra_package_price, 1)}元/件"
|
||||||
|
|
||||||
return result
|
return result
|
||||||
|
|
||||||
@router.post("/pre-order", response_model=ResponseModel)
|
@router.post("/pre-order", response_model=ResponseModel)
|
||||||
|
|||||||
@ -20,7 +20,6 @@ class Settings(BaseSettings):
|
|||||||
#订单创建成功文案
|
#订单创建成功文案
|
||||||
ORDER_SUCCESS_TODAY_TEXT: str = "订单预计今晚前送达,请注意查收"
|
ORDER_SUCCESS_TODAY_TEXT: str = "订单预计今晚前送达,请注意查收"
|
||||||
ORDER_SUCCESS_TOMORROW_TEXT: str = "订单预计明晚前送达,请注意查收"
|
ORDER_SUCCESS_TOMORROW_TEXT: str = "订单预计明晚前送达,请注意查收"
|
||||||
ORDER_PREORDER_PRICE_TEXT: str = "基础费3元 (含5件包裹) 超出部分0.5元/件"
|
|
||||||
|
|
||||||
# JWT 配置
|
# JWT 配置
|
||||||
SECRET_KEY: str = "s10GmiRMmplfYWXYZLSsE3X36Ld4gVZxHgAcdqFGC20v3llv7UdOeWLBEEP3e40p"
|
SECRET_KEY: str = "s10GmiRMmplfYWXYZLSsE3X36Ld4gVZxHgAcdqFGC20v3llv7UdOeWLBEEP3e40p"
|
||||||
@ -84,10 +83,6 @@ class Settings(BaseSettings):
|
|||||||
#配送订单取消
|
#配送订单取消
|
||||||
DELIVERY_ORDER_CANCELLED_TEMPLATE_ID: str = "iGR0rPtOFC_u8Xj5-R730zoDD_4Kbswkf_jSTnSSd6E"
|
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:
|
class Config:
|
||||||
case_sensitive = True
|
case_sensitive = True
|
||||||
env_file = ".env"
|
env_file = ".env"
|
||||||
|
|||||||
@ -21,6 +21,12 @@ class CommunityDB(Base):
|
|||||||
status = Column(Enum(CommunityStatus), nullable=False, default=CommunityStatus.UNOPEN)
|
status = Column(Enum(CommunityStatus), nullable=False, default=CommunityStatus.UNOPEN)
|
||||||
qy_group_qrcode = Column(String(200), nullable=True) # 企业微信群二维码地址
|
qy_group_qrcode = Column(String(200), nullable=True) # 企业微信群二维码地址
|
||||||
webot_webhook = Column(String(200), nullable=True) # 企业微信机器人webhook
|
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())
|
create_time = Column(DateTime(timezone=True), server_default=func.now())
|
||||||
update_time = Column(DateTime(timezone=True), onupdate=func.now())
|
update_time = Column(DateTime(timezone=True), onupdate=func.now())
|
||||||
|
|
||||||
@ -48,6 +54,10 @@ class CommunityUpdate(BaseModel):
|
|||||||
status: Optional[CommunityStatus] = None
|
status: Optional[CommunityStatus] = None
|
||||||
qy_group_qrcode: Optional[str] = Field(None, max_length=200)
|
qy_group_qrcode: Optional[str] = Field(None, max_length=200)
|
||||||
webot_webhook: 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):
|
class CommunityInfo(BaseModel):
|
||||||
id: int
|
id: int
|
||||||
name: str
|
name: str
|
||||||
@ -57,6 +67,9 @@ class CommunityInfo(BaseModel):
|
|||||||
status: CommunityStatus
|
status: CommunityStatus
|
||||||
qy_group_qrcode: Optional[str] = None
|
qy_group_qrcode: Optional[str] = None
|
||||||
webot_webhook: 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
|
optimized_qy_group_qrcode: Optional[str] = None
|
||||||
distance: Optional[float] = None # 距离,单位:米
|
distance: Optional[float] = None # 距离,单位:米
|
||||||
|
|
||||||
|
|||||||
@ -111,6 +111,7 @@ class OrderPackage(BaseModel):
|
|||||||
|
|
||||||
# 先定义 OrderPriceCalculateRequest
|
# 先定义 OrderPriceCalculateRequest
|
||||||
class OrderPriceCalculateRequest(BaseModel):
|
class OrderPriceCalculateRequest(BaseModel):
|
||||||
|
community_id: int = 0
|
||||||
pickup_images: Optional[str] = None
|
pickup_images: Optional[str] = None
|
||||||
pickup_images_count: int = 0
|
pickup_images_count: int = 0
|
||||||
packages: Optional[List[OrderPackage]] = None
|
packages: Optional[List[OrderPackage]] = None
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user