增加新人订单标识

This commit is contained in:
aaron 2025-02-21 21:23:57 +08:00
parent 73d39b7d25
commit b53f424461
2 changed files with 17 additions and 6 deletions

View File

@ -177,6 +177,11 @@ async def create_order(
AddressDB.id == order.addressid AddressDB.id == order.addressid
).first() ).first()
# 是否为新人订单
is_first_order = db.query(ShippingOrderDB).filter(
ShippingOrderDB.userid == current_user.userid
).count() == 0
# 创建订单 # 创建订单
db_order = ShippingOrderDB( db_order = ShippingOrderDB(
orderid=orderid, orderid=orderid,
@ -196,7 +201,8 @@ async def create_order(
coupon_id=coupon_id, coupon_id=coupon_id,
final_amount=price_info.final_amount, final_amount=price_info.final_amount,
status=OrderStatus.CREATED, status=OrderStatus.CREATED,
delivery_method=order.delivery_method delivery_method=order.delivery_method,
is_first_order=is_first_order
) )
if order.price_request.pickup_images: if order.price_request.pickup_images:
db_order.pickup_images = order.price_request.pickup_images db_order.pickup_images = order.price_request.pickup_images
@ -358,6 +364,7 @@ async def get_order_detail(
"status": order.status, "status": order.status,
"complete_images": order.optimized_complete_images, "complete_images": order.optimized_complete_images,
"packages": package_list, "packages": package_list,
"is_first_order": order.is_first_order,
"create_time": order.create_time, "create_time": order.create_time,
"complete_time": order.completed_time, "complete_time": order.completed_time,
@ -554,6 +561,7 @@ async def get_user_orders(
"coupon_discount_amount": order.coupon_discount_amount, "coupon_discount_amount": order.coupon_discount_amount,
"point_discount_amount": order.point_discount_amount, "point_discount_amount": order.point_discount_amount,
"final_amount": order.final_amount, "final_amount": order.final_amount,
"is_first_order": order.is_first_order,
"packages": package_list, "packages": package_list,
"sub_orders": [PointProductOrderInfo.model_validate(sub_order) for sub_order in sub_orders], "sub_orders": [PointProductOrderInfo.model_validate(sub_order) for sub_order in sub_orders],
"address": { "address": {
@ -743,6 +751,7 @@ async def get_deliveryman_orders(
"coupon_discount_amount": order.coupon_discount_amount, "coupon_discount_amount": order.coupon_discount_amount,
"point_discount_amount": order.point_discount_amount, "point_discount_amount": order.point_discount_amount,
"final_amount": order.final_amount, "final_amount": order.final_amount,
"is_first_order": order.is_first_order,
"packages": package_list, "packages": package_list,
"sub_orders": [PointProductOrderInfo.model_validate(sub_order) for sub_order in sub_orders], "sub_orders": [PointProductOrderInfo.model_validate(sub_order) for sub_order in sub_orders],
"address": { "address": {

View File

@ -68,6 +68,7 @@ class ShippingOrderDB(Base):
completed_time = Column(DateTime(timezone=True), nullable=True) # 完成时间 completed_time = Column(DateTime(timezone=True), nullable=True) # 完成时间
complete_images = Column(String(1000), nullable=True) # 完成订单的图片URL多个URL用逗号分隔 complete_images = Column(String(1000), nullable=True) # 完成订单的图片URL多个URL用逗号分隔
create_time = Column(DateTime(timezone=True), server_default=func.now()) create_time = Column(DateTime(timezone=True), server_default=func.now())
is_first_order = Column(Boolean, default=False) # 新人订单
# 配送员信息 # 配送员信息
deliveryman_user_id = Column(Integer, ForeignKey("users.userid"), nullable=True) deliveryman_user_id = Column(Integer, ForeignKey("users.userid"), nullable=True)
@ -154,12 +155,13 @@ class OrderInfo(BaseModel):
received_time: Optional[datetime] = None received_time: Optional[datetime] = None
pickup_time: Optional[datetime] = None pickup_time: Optional[datetime] = None
completed_time: Optional[datetime] = None completed_time: Optional[datetime] = None
is_first_order: bool
def __init__(self, **data): # def __init__(self, **data):
super().__init__(**data) # super().__init__(**data)
# 将逗号分隔的图片URL字符串转换为列表 # # 将逗号分隔的图片URL字符串转换为列表
if self.complete_images and isinstance(self.complete_images, str): # if self.complete_images and isinstance(self.complete_images, str):
self.complete_images = self.complete_images.split(",") # self.complete_images = self.complete_images.split(",")
class Config: class Config:
from_attributes = True from_attributes = True