Browse Source

多个资产所关联的需求

kely 1 year ago
parent
commit
bcd130c5ed
2 changed files with 23 additions and 0 deletions
  1. 22 0
      app/Http/Controllers/API/RequirementController.php
  2. 1 0
      routes/api.php

+ 22 - 0
app/Http/Controllers/API/RequirementController.php

@@ -9,6 +9,7 @@ use App\Http\Requests\API\Requirement\LinkPlanRequest;
 use App\Http\Requests\API\Requirement\BatchCreateRequest;
 use App\Http\Resources\API\AssetRequirementResource;
 use App\Http\Resources\API\RequirementResource;
+use App\Models\Asset;
 use App\Models\Enums\RequirementStatus;
 use App\Models\Plan;
 use App\Models\Requirement;
@@ -31,6 +32,27 @@ class RequirementController extends Controller
         return AssetRequirementResource::collection($requirements);
     }
 
+    public function byAssets(Request $request){
+        $assetIds = $request->get("assets", []);
+        $emptyResponse = $this->success(['data' => []]);
+        if (! $assetIds) {
+            return $emptyResponse;
+        }
+
+        $assets = Asset::query()->where(function ($query) use ($assetIds) {
+            foreach ($assetIds as $index => $assetId) {
+                $where = $index == 0 ? "where" : "orWhere";
+                $query->$where("path", "like", "%,". $assetId . ",%");
+            }
+        })->pluck("id");
+        if ($assets->isEmpty()) {
+            return $emptyResponse;
+        }
+
+        $requirement=Requirement::query()->with('asset')->whereIn('asset_id',$assets->toArray())->get();
+        return AssetRequirementResource::collection($requirement);
+    }
+
 //    public function byAsset(Request $request,string $assetId)
 //    {
 //        $requirements=Requirement::filter($request->all())->with(['createdBy', 'plan','group']) ->where('asset_id', $assetId)->simplePaginate();

+ 1 - 0
routes/api.php

@@ -94,6 +94,7 @@ Route::middleware(['auth:sanctum'])->group(function () {
         Route::post("config-setting", [API\ConfigController::class, "setting"])->name("config.setting");
 
         Route::get("plan-by-assets", [API\PlanController::class, "byAssets"])->name("plan.by-assets");
+        Route::get("requirement-by-assets", [API\RequirementController::class, "byAssets"])->name("requirement.by-assets");
 
         Route::post("upload", [API\FileController::class, "upload"])->name("fileUpload");
         Route::post("download", [API\FileController::class, "download"])->name("fileDownload");