no message

This commit is contained in:
aaron 2025-01-22 23:06:34 +08:00
parent 24354b9373
commit 64e2f4a339
2 changed files with 22 additions and 1 deletions

View File

@ -14,6 +14,8 @@ from app.models.database import get_db
from app.api.deps import get_admin_user
from app.models.user import UserDB
from app.core.response import success_response, error_response, ResponseModel
from app.models.merchant_pay_order import MerchantPayOrderDB
from sqlalchemy.sql import func
router = APIRouter()
@ -182,18 +184,36 @@ async def list_merchants(
if longitude is not None and latitude is not None:
query = query.add_columns(
text("ST_Distance_Sphere(point(longitude, latitude), point(:lon, :lat)) as distance")
).params(lon=longitude, lat=latitude).order_by(text("distance"))
).params(lon=longitude, lat=latitude)
# 默认按距离排序
query = query.order_by(text("distance"))
else:
# 如果没有经纬度,则按创建时间排序
query = query.order_by(MerchantDB.create_time.desc())
# 添加一个空的距离列,保持返回结构一致
query = query.add_columns(text("NULL as distance"))
merchants = query.offset(skip).limit(limit).all()
# 获取商家在线买单数量
merchant_ids = [m[0].id for m in merchants]
pay_order_counts = dict(
db.query(
MerchantPayOrderDB.merchant_id,
func.count(MerchantPayOrderDB.id).label('count')
).filter(
MerchantPayOrderDB.merchant_id.in_(merchant_ids)
).group_by(MerchantPayOrderDB.merchant_id).all()
)
# 处理返回结果
merchant_list = [{
**MerchantInfo.model_validate(m[0]).model_dump(),
"category_name": m[1],
"user_phone": m[2],
"user_nickname": m[3],
"online_pay_count": pay_order_counts.get(m[0].id, 0),
"distance": round(m[4]) if longitude is not None and latitude is not None else None
} for m in merchants]

View File

@ -76,6 +76,7 @@ class MerchantInfo(BaseModel):
user_id: int
user_phone: Optional[str] = None
user_nickname: Optional[str] = None
online_pay_count: Optional[int] = 0
name: str
business_hours: str
address: str