feat(api): filter vehicle options by mineVehicles personnel
Limit GET /transport/vehicle to plates linked via pl_vehicle_personnel for the current user. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
1 parent
0a9d5ba2ed
commit
48aef9f233
1 file changed
+18
@@ -443,6 +443,11 @@ def list_vehicles(
|
||||
alias="excludeIneligibleCarrier",
|
||||
description="排除资质不全或协议过期的承运商车辆",
|
||||
),
|
||||
mine_vehicles: Optional[bool] = Query(
|
||||
default=None,
|
||||
alias="mineVehicles",
|
||||
description="仅返回当前用户关联驾押人员所挂靠车辆",
|
||||
),
|
||||
page: int = Query(default=1, ge=1),
|
||||
page_size: int = Query(default=20, ge=1, le=500, alias="pageSize"),
|
||||
db: Session = Depends(get_db),
|
||||
@@ -455,6 +460,7 @@ def list_vehicles(
|
||||
vehicleType=vehicle_type,
|
||||
carrierId=carrier_id,
|
||||
vehicleStatus=vehicle_status,
|
||||
mineVehicles=mine_vehicles,
|
||||
)
|
||||
query = db.query(PlVehicle).filter(
|
||||
PlVehicle.tenant_no == tenant_no,
|
||||
@@ -483,6 +489,18 @@ def list_vehicles(
|
||||
if column_filters:
|
||||
query = query.filter(*column_filters)
|
||||
|
||||
mine_flag = _param_get(params, "mineVehicles", "mine_vehicles")
|
||||
if mine_flag is True or (
|
||||
mine_flag is not None
|
||||
and str(mine_flag).strip().lower() in {"1", "true", "yes", "y"}
|
||||
):
|
||||
from app.services.pl_vehicle_mine_vehicles import license_plates_for_user_personnel
|
||||
|
||||
plates = license_plates_for_user_personnel(db, tenant_no, user.id)
|
||||
if not plates:
|
||||
return VehicleListResponse(total=0, list=[])
|
||||
query = query.filter(PlVehicle.license_plate.in_(list(plates)))
|
||||
|
||||
# 车辆为主数据,列表不做 create_by 数据范围过滤
|
||||
query = query.order_by(
|
||||
case((PlVehicle.order_num.is_(None), 1), else_=0).asc(),
|
||||
|
||||
Reference in new issue
Block a user