This commit is contained in:
aaron 2025-03-08 23:35:10 +08:00
parent ef8ad72322
commit 9d84614ea8
2 changed files with 42 additions and 35 deletions

View File

@ -103,7 +103,7 @@ def calculate_price(price_request: OrderPriceCalculateRequest,user: UserDB,db: S
extra_package_price = float(community.extra_package_price) extra_package_price = float(community.extra_package_price)
extra_package_threshold = int(community.extra_package_threshold) extra_package_threshold = int(community.extra_package_threshold)
original_amount = round(base_price + extra_package_price * (package_count - extra_package_threshold), 2) original_amount = round((base_price + extra_package_price * (package_count - extra_package_threshold)), 2)
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
@ -550,51 +550,46 @@ async def deliveryman_get_order_status_count(
db: Session = Depends(get_db), db: Session = Depends(get_db),
current_user: UserDB = Depends(get_current_user) current_user: UserDB = Depends(get_current_user)
): ):
"""获取社区订单状态数量""" """获取社区订单状态数量"""
status_list = [OrderStatus.CREATED, OrderStatus.RECEIVED, OrderStatus.DELIVERING, OrderStatus.UNPAID, OrderStatus.COMPLETED]
created_count = db.query( result = []
ShippingOrderDB.status for status in status_list:
).filter( query = db.query(
ShippingOrderDB.address_community_id == community_id, ShippingOrderDB.status
ShippingOrderDB.status == OrderStatus.CREATED ).filter(
) ShippingOrderDB.address_community_id == community_id,
ShippingOrderDB.status == status
if time_period_id:
created_count = created_count.filter(
ShippingOrderDB.time_period_id == time_period_id
) )
created_count = created_count.count()
others_status_count = db.query( # 如果传入了时间周期id则过滤时间周期
ShippingOrderDB.status, if time_period_id:
func.count(ShippingOrderDB.orderid) query = query.filter(
).filter( ShippingOrderDB.time_period_id == time_period_id
ShippingOrderDB.address_community_id == community_id, )
ShippingOrderDB.status != OrderStatus.CREATED,
ShippingOrderDB.deliveryman_user_id == current_user.userid
).group_by(
ShippingOrderDB.status
)
if time_period_id:
others_status_count = others_status_count.filter(
ShippingOrderDB.time_period_id == time_period_id
)
others_status_count = others_status_count.all()
result = [{ # 不是待接单的订单,需要过滤配送员
"status": OrderStatus.CREATED, if status != OrderStatus.CREATED:
"count": created_count query = query.filter(
}] ShippingOrderDB.deliveryman_user_id == current_user.userid
)
for status, count in others_status_count: # 不是未支付、已完成订单,需要过滤配送日期
if status != OrderStatus.UNPAID and status != OrderStatus.COMPLETED:
query = query.filter(
ShippingOrderDB.delivery_date == datetime.now().date()
)
count = query.count()
result.append({ result.append({
"status": status, "status": status,
"count": count "count": count
}) })
return success_response(data=result) return success_response(data=result)
# 提供一个接口,传入 community_id 返回每栋楼栋的订单数量 # 提供一个接口,传入 community_id 返回每栋楼栋的订单数量
@router.get("/community_building/count", response_model=ResponseModel) @router.get("/community_building/count", response_model=ResponseModel)
async def deliveryman_get_community_building_order_count( async def deliveryman_get_community_building_order_count(
@ -640,6 +635,12 @@ async def deliveryman_get_community_building_order_count(
ShippingOrderDB.deliveryman_user_id == current_user.userid ShippingOrderDB.deliveryman_user_id == current_user.userid
) )
# 如果订单状态不是待支付和已完成,则只显示今日配送的订单
if status not in [OrderStatus.UNPAID, OrderStatus.COMPLETED]:
query = query.filter(
ShippingOrderDB.delivery_date == datetime.now().date()
)
building_order_count = query.group_by( building_order_count = query.group_by(
ShippingOrderDB.address_community_building_id ShippingOrderDB.address_community_building_id
).all() ).all()
@ -892,6 +893,10 @@ async def deliveryman_orders(
if OrderStatus.CREATED not in statuses: if OrderStatus.CREATED not in statuses:
query = query.filter(ShippingOrderDB.deliveryman_user_id == deliveryman.userid) query = query.filter(ShippingOrderDB.deliveryman_user_id == deliveryman.userid)
# 如果订单状态不是待支付和已完成,则只显示今日配送的订单
if OrderStatus.UNPAID not in statuses and OrderStatus.COMPLETED not in statuses:
query = query.filter(ShippingOrderDB.delivery_date == datetime.now().date())
# 楼栋筛选 # 楼栋筛选
if building_id: if building_id:
query = query.filter(ShippingOrderDB.address_community_building_id == building_id) query = query.filter(ShippingOrderDB.address_community_building_id == building_id)
@ -903,6 +908,7 @@ async def deliveryman_orders(
# 配送时段筛选 # 配送时段筛选
if time_period_id: if time_period_id:
query = query.filter(ShippingOrderDB.time_period_id == time_period_id) query = query.filter(ShippingOrderDB.time_period_id == time_period_id)
# 获取总数 # 获取总数
total = query.count() total = query.count()

View File

@ -14,6 +14,7 @@ class UserRole(str, enum.Enum):
DELIVERYMAN = "deliveryman" DELIVERYMAN = "deliveryman"
MERCHANT = "merchant" MERCHANT = "merchant"
ADMIN = "admin" ADMIN = "admin"
PARTNER = "partner"
class Gender(str, enum.Enum): class Gender(str, enum.Enum):
MALE = "MALE" MALE = "MALE"