| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- """小程序公共数据(同区域供应商列表等)"""
- 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,
- })
|