商家订单详情增加距离。
This commit is contained in:
parent
3e90da4910
commit
c549a64292
@ -281,21 +281,25 @@ async def get_order_detail(
|
|||||||
current_user: UserDB = Depends(get_current_user)
|
current_user: UserDB = Depends(get_current_user)
|
||||||
):
|
):
|
||||||
"""获取订单详情"""
|
"""获取订单详情"""
|
||||||
order = db.query(
|
query = db.query(
|
||||||
MerchantOrderDB,
|
MerchantOrderDB,
|
||||||
MerchantProductDB.name.label('product_name'),
|
MerchantProductDB.name.label('product_name'),
|
||||||
MerchantProductDB.image_url.label('product_image'),
|
MerchantProductDB.image_url.label('product_image'),
|
||||||
MerchantDB.name.label('merchant_name'),
|
MerchantDB.name.label('merchant_name'),
|
||||||
MerchantDB.latitude.label('merchant_latitude'),
|
MerchantDB.latitude.label('merchant_latitude'),
|
||||||
MerchantDB.longitude.label('merchant_longitude'),
|
MerchantDB.longitude.label('merchant_longitude'),
|
||||||
MerchantDB.phone.label('merchant_phone'),
|
MerchantDB.phone.label('merchant_phone')
|
||||||
text("CASE WHEN :lat IS NOT NULL AND :lon IS NOT NULL THEN "
|
)
|
||||||
"ST_Distance_Sphere(point(merchants.longitude, merchants.latitude), point(:lon, :lat)) "
|
|
||||||
"ELSE NULL END as distance").params(
|
if longitude is not None and latitude is not None:
|
||||||
lat=latitude,
|
query = query.add_columns(
|
||||||
lon=longitude
|
text("ST_Distance_Sphere(point(merchants.longitude, merchants.latitude), "
|
||||||
) if longitude and latitude else text("NULL as distance")
|
"point(:lon, :lat)) as distance").params(lon=longitude, lat=latitude)
|
||||||
).join(
|
)
|
||||||
|
else:
|
||||||
|
query = query.add_columns(text("NULL as distance"))
|
||||||
|
|
||||||
|
order = query.join(
|
||||||
MerchantProductDB,
|
MerchantProductDB,
|
||||||
MerchantOrderDB.merchant_product_id == MerchantProductDB.id
|
MerchantOrderDB.merchant_product_id == MerchantProductDB.id
|
||||||
).join(
|
).join(
|
||||||
@ -305,6 +309,7 @@ async def get_order_detail(
|
|||||||
MerchantOrderDB.order_id == order_id
|
MerchantOrderDB.order_id == order_id
|
||||||
).first()
|
).first()
|
||||||
|
|
||||||
|
|
||||||
if not order:
|
if not order:
|
||||||
return error_response(code=404, message="订单不存在")
|
return error_response(code=404, message="订单不存在")
|
||||||
|
|
||||||
@ -334,7 +339,7 @@ async def get_order_detail(
|
|||||||
"merchant_longitude": order.merchant_longitude,
|
"merchant_longitude": order.merchant_longitude,
|
||||||
"merchant_phone": order.merchant_phone,
|
"merchant_phone": order.merchant_phone,
|
||||||
# 距离信息
|
# 距离信息
|
||||||
"distance": round(order.distance) if order.distance else None
|
"distance": round(order[7]) if order[7] else None
|
||||||
}
|
}
|
||||||
|
|
||||||
return success_response(data=order_data)
|
return success_response(data=order_data)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user