"""小程序公共数据(同区域供应商列表等)""" from fastapi import APIRouter, Depends, Query from sqlalchemy.orm import Session from app.core.database import get_db from app.core.auth import get_current_user from app.core.response import success_response, error_response from app.crud.user import user_crud from app.api.system_config import read_customer_service_phone_for_mini router = APIRouter(prefix="/api/mini/common", tags=["小程序端-公共"]) @router.get("/service-contact", response_model=dict) def get_service_contact( db: Session = Depends(get_db), current_user: dict = Depends(get_current_user), ): """客服电话(登录态,客户端/供应商/配送员共用)。""" if current_user.get("role") not in ("client", "supplier", "deliver"): return error_response(403, "无权限访问") phone = read_customer_service_phone_for_mini(db) return success_response({"servicePhone": phone}) @router.get("/suppliers", response_model=dict) def list_region_suppliers( db: Session = Depends(get_db), current_user: dict = Depends(get_current_user), page: int = Query(1, ge=1), pageSize: int = Query(20, ge=1, le=100), ): """当前用户所属区域内的供应商列表(用于配送/业务选择等)""" if current_user.get("role") not in ("client", "supplier", "deliver"): return error_response(403, "无权限访问") region_id = current_user.get("region_id") if not region_id: return success_response({"list": [], "total": 0, "page": page, "pageSize": pageSize, "totalPages": 0}) users, total = user_crud.get_multi_with_filters( db, role="supplier", region_id=region_id, is_active=True, skip=(page - 1) * pageSize, limit=pageSize, ) lst = [ { "id": u.id, "username": u.username, "realName": u.real_name, "phone": u.phone, "regionId": u.region_id, } for u in users ] total_pages = (total + pageSize - 1) // pageSize if total else 0 return success_response({ "list": lst, "total": total, "page": page, "pageSize": pageSize, "totalPages": total_pages, })