Explorar o código

feat(api): accept mineVehicles on vehicle-recharge-apply endpoints

Wire query param through list/get/create/update/submit/cancel for mini-program scope.

Co-authored-by: Cursor <cursoragent@cursor.com>
zlwu hai 1 mes
pai
achega
0a9d5ba2ed
Modificáronse 1 ficheiros con 25 adicións e 5 borrados
  1. 25 5
      backend/app/api/pl/vehicle_recharge.py

+ 25 - 5
backend/app/api/pl/vehicle_recharge.py

@@ -51,6 +51,14 @@ def _param_get(params: dict, *keys: str) -> Any:
     return None
 
 
+def _as_bool(value: Any) -> bool:
+    if isinstance(value, bool):
+        return value
+    if value is None:
+        return False
+    return str(value).strip().lower() in {"1", "true", "yes", "y"}
+
+
 def _body_to_params(body: BaseModel) -> dict:
     data = body.model_dump(by_alias=True, exclude_none=True)
     for key in ("ids", "columns"):
@@ -76,6 +84,7 @@ def _apply_list_kwargs(params: dict) -> dict:
         applicant_id=_param_get(params, "applicantId", "applicant_id"),
         sort_field=_param_get(params, "sortField", "sort_field"),
         sort_order=_param_get(params, "sortOrder", "sort_order"),
+        mine_vehicles=_as_bool(_param_get(params, "mineVehicles", "mine_vehicles")),
     )
 
 
@@ -106,6 +115,7 @@ def list_applies(
     apply_date_from: Optional[date] = Query(default=None, alias="applyDateFrom"),
     apply_date_to: Optional[date] = Query(default=None, alias="applyDateTo"),
     applicant_id: Optional[str] = Query(default=None, alias="applicantId"),
+    mine_vehicles: Optional[bool] = Query(default=None, alias="mineVehicles"),
     page: int = Query(default=1, ge=1),
     page_size: int = Query(default=20, ge=1, le=500, alias="pageSize"),
     db: Session = Depends(get_db),
@@ -120,6 +130,7 @@ def list_applies(
         applyDateFrom=apply_date_from,
         applyDateTo=apply_date_to,
         applicantId=applicant_id,
+        mineVehicles=mine_vehicles,
     )
     items, total = svc.list_applies(
         db,
@@ -209,52 +220,61 @@ def export_recharge_applies(
 @apply_router.get("/{id}", response_model=VehicleRechargeApplyRead)
 def get_apply(
     id: str,
+    mine_vehicles: bool = Query(default=False, alias="mineVehicles"),
     db: Session = Depends(get_db),
     user: DbUserContext = Depends(get_db_current_user),
 ) -> VehicleRechargeApplyRead:
     tenant_no = get_tenant_no(db, user.to_tenant_user_dict())
-    return svc.get_apply(db, tenant_no, user, id)
+    return svc.get_apply(db, tenant_no, user, id, mine_vehicles=mine_vehicles)
 
 
 @apply_router.post("/{id}/submit", response_model=VehicleRechargeApplyRead)
 def submit_apply(
     id: str,
+    mine_vehicles: bool = Query(default=False, alias="mineVehicles"),
     db: Session = Depends(get_db),
     user: DbUserContext = Depends(get_db_current_user),
 ) -> VehicleRechargeApplyRead:
     tenant_no = get_tenant_no(db, user.to_tenant_user_dict())
-    return svc.submit_apply(db, tenant_no, user, id)
+    return svc.submit_apply(db, tenant_no, user, id, mine_vehicles=mine_vehicles)
 
 
 @apply_router.post("/", response_model=VehicleRechargeApplyRead, status_code=status.HTTP_201_CREATED)
 def create_apply(
     payload: VehicleRechargeApplyCreate,
+    mine_vehicles: bool = Query(default=False, alias="mineVehicles"),
     db: Session = Depends(get_db),
     user: DbUserContext = Depends(get_db_current_user),
 ) -> VehicleRechargeApplyRead:
     tenant_no = get_tenant_no(db, user.to_tenant_user_dict())
-    return svc.create_apply(db, tenant_no, user, payload)
+    return svc.create_apply(
+        db, tenant_no, user, payload, mine_vehicles=mine_vehicles
+    )
 
 
 @apply_router.put("/{id}", response_model=VehicleRechargeApplyRead)
 def update_apply(
     id: str,
     payload: VehicleRechargeApplyUpdate,
+    mine_vehicles: bool = Query(default=False, alias="mineVehicles"),
     db: Session = Depends(get_db),
     user: DbUserContext = Depends(get_db_current_user),
 ) -> VehicleRechargeApplyRead:
     tenant_no = get_tenant_no(db, user.to_tenant_user_dict())
-    return svc.update_apply(db, tenant_no, user, id, payload)
+    return svc.update_apply(
+        db, tenant_no, user, id, payload, mine_vehicles=mine_vehicles
+    )
 
 
 @apply_router.post("/{id}/cancel", response_model=VehicleRechargeApplyRead)
 def cancel_apply(
     id: str,
+    mine_vehicles: bool = Query(default=False, alias="mineVehicles"),
     db: Session = Depends(get_db),
     user: DbUserContext = Depends(get_db_current_user),
 ) -> VehicleRechargeApplyRead:
     tenant_no = get_tenant_no(db, user.to_tenant_user_dict())
-    return svc.cancel_apply(db, tenant_no, user, id)
+    return svc.cancel_apply(db, tenant_no, user, id, mine_vehicles=mine_vehicles)
 
 
 @apply_router.delete("/{ids}", status_code=status.HTTP_204_NO_CONTENT)