Browse Source

抽离公共查询列表

kely 7 months ago
parent
commit
1b1d6ce07f

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

@@ -47,6 +47,28 @@ class AssetController extends Controller
 
     }
 
+    //公共Asset查询
+    public function  publicSearch(Request $request)
+    {
+        $fullAsset=[];
+        $paths = Asset::filter($request->all())
+            ->where('company_id',Auth::user()->company_id)
+            ->allowed()->pluck('path')->toArray();
+
+        foreach ($paths as $path){
+            $parentAssets = explode(',', substr($path, 1, -1));
+            $fullAsset=  array_merge($parentAssets,$fullAsset);
+        }
+
+        $resultAssets = Asset::whereIn('id', $fullAsset)->orderByDesc('created_at')->get();
+        return $this->success([
+            'data' => make_tree($resultAssets->toArray())
+        ]);
+
+
+    }
+
+
     /**
      * Store a newly created resource in storage.
      */

+ 8 - 0
app/Http/Controllers/API/AssetGroupController.php

@@ -4,6 +4,7 @@ namespace App\Http\Controllers\API;
 
 use App\Http\Controllers\Controller;
 use App\Http\Requests\API\AssetGroup\CreateOrUpdateRequest;
+use App\Http\Resources\API\ApprovalGroupSimpleResource;
 use App\Http\Resources\API\AssetGroupResource;
 use App\Models\AssetGroup;
 use Illuminate\Http\Request;
@@ -21,6 +22,13 @@ class AssetGroupController extends Controller
         return AssetGroupResource::collection($groups);
     }
 
+    //公共AssetGroup查询
+    public function publicSearch(Request $request)
+    {
+        $groups = AssetGroup::filter($request->all())->orderByDesc("sequence")->get();
+        return ApprovalGroupSimpleResource::collection($groups);
+    }
+
     /**
      * Store a newly created resource in storage.
      */

+ 9 - 0
app/Http/Controllers/API/NameRuleController.php

@@ -8,6 +8,7 @@ use App\Http\Requests\API\NamingRule\CombinationSettingRequest;
 use App\Http\Requests\API\NamingRule\CreateOrUpdateRequest;
 use App\Http\Resources\API\NamingRuleCombinationResource;
 use App\Http\Resources\API\NamingRuleResource;
+use App\Http\Resources\API\NamingRuleSimpleResource;
 use App\Models\Asset;
 use App\Models\CustomField;
 use App\Models\NamingRule;
@@ -28,6 +29,14 @@ class NameRuleController extends Controller
         return NamingRuleResource::collection($namingRules);
     }
 
+    //公共NameRule查询
+    public function publicSearch(Request $request)
+    {
+        $namingRules = NamingRule::allowed()->with(['company'])->filter($request->all())->get();
+
+        return NamingRuleSimpleResource::collection($namingRules);
+    }
+
     /**
      * Store a newly created resource in storage.
      */

+ 8 - 0
app/Http/Controllers/API/ProjectController.php

@@ -17,6 +17,7 @@ use App\Http\Resources\API\ProjectDetailResource;
 use App\Http\Resources\API\ProjectGroupViewTaskResource;
 use App\Http\Resources\API\ProjectKanbanRequirementResource;
 use App\Http\Resources\API\ProjectKanbanTaskResource;
+use App\Http\Resources\API\ProjectSimpleResource;
 use App\Http\Resources\API\RequirementGroupParentResource;
 use App\Http\Resources\API\RequirementGroupResource;
 use App\Http\Resources\API\SimplePlanResource;
@@ -65,6 +66,13 @@ class ProjectController extends Controller
         return ProjectResource::collection($projectAsset);
     }
 
+    public function publicSearch(Request $request)
+    {
+        $projectAsset = Project::filter($request->all())->allowed()->orderByDesc('created_at')->with('assets')->get();
+
+        return ProjectSimpleResource::collection($projectAsset);
+    }
+
     public function projectAssetTree(string $id){
         $project = Project::allowed($id)->findOrFail($id);
 

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

@@ -11,6 +11,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\Http\Resources\API\RequirementSimpleResource;
 use App\Imports\RequirementImport;
 use App\Models\Approval;
 use App\Models\Asset;
@@ -47,6 +48,18 @@ class RequirementController extends Controller
         return AssetRequirementResource::collection($requirements);
     }
 
+
+    //公共Requirement查询
+    public function publicSearch(Request $request)
+    {
+        $requirements = Requirement::filter($request->all())
+            ->where('company_id',Auth::user()->company_id)
+            ->orderByDesc('created_at')
+            ->get();
+
+        return RequirementSimpleResource::collection($requirements);
+    }
+
 //    public function byAsset(Request $request,string $assetId)
 //    {
 //        $requirements=Requirement::filter($request->all())->with(['createdBy', 'plan','group']) ->where('asset_id', $assetId)->simplePaginate();

+ 10 - 0
app/Http/Controllers/API/RequirementGroupController.php

@@ -23,6 +23,16 @@ class RequirementGroupController extends Controller
         return RequirementGroupResource::collection($groups);
     }
 
+
+    //公共RequirementGroup查询
+    public function publicSearch(Request $request)
+    {
+        $groups = RequirementGroup::filter($request->all())->where("parent_id",0)->with(['children'])->get();
+
+        return RequirementGroupResource::collection($groups);
+    }
+
+
     /**
      * Store a newly created resource in storage.
      */

+ 28 - 0
app/Http/Resources/API/ApprovalGroupSimpleResource.php

@@ -0,0 +1,28 @@
+<?php
+/**
+ * Created by IntelliJ IDEA.
+ * User: kelyliang
+ * Date: 2024/7/29
+ * Time: 上午 10:35
+ */
+
+namespace App\Http\Resources\API;
+
+
+use Illuminate\Http\Resources\Json\JsonResource;
+
+class ApprovalGroupSimpleResource extends JsonResource
+{
+    /**
+     * Transform the resource into an array.
+     *
+     * @return array<string, mixed>
+     */
+    public function toArray(Request $request): array
+    {
+        return [
+            'id' => $this->id,
+            'name' => $this->name,
+        ];
+    }
+}

+ 10 - 0
routes/api.php

@@ -104,6 +104,11 @@ Route::middleware(['auth:sanctum','account.limit'])->group(function () {
         Route::get("asset/{asset_id}/report",[API\AssetController::class, 'report'])->name('asset.report');
         Route::get("asset-tree",[API\AssetController::class, 'tree'])->name('asset.tree');
         Route::get("asset/{asset}/dynamic", [API\AssetController::class, "dynamic"])->name("asset.dynamic");
+        Route::get("asset/publicSearch",[API\AssetController::class, 'publicSearch'])->name('asset.publicSearch');
+
+        Route::get("assetGroup/publicSearch",[API\AssetGroupController::class, 'publicSearch'])->name('asset-group.publicSearch');
+
+        Route::get("requirementGroup/publicSearch",[API\RequirementGroupController::class, 'publicSearch'])->name('requirement-group.publicSearch');
 
         Route::patch("requirement/{requirement_id}/close",[API\RequirementController::class, 'close'])->name('requirement.close');
         Route::patch("requirement/{requirement_id}/start",[API\RequirementController::class, 'start'])->name('requirement.start');
@@ -112,6 +117,8 @@ Route::middleware(['auth:sanctum','account.limit'])->group(function () {
         Route::patch("requirement/plan/unlink", [API\RequirementController::class, "unlinkPlan"])->name("requirement.unlinkPlan");
         Route::get("requirement-export", [API\RequirementController::class, "export"])->name("requirement.export");
         Route::post("requirement-import", [API\RequirementController::class, "import"])->name("requirement.import");
+        Route::get("requirement/publicSearch",[API\RequirementController::class, 'publicSearch'])->name('requirement.publicSearch');
+
 
         Route::get("project-tree",[API\ProjectController::class, 'tree'])->name('project.tree');
         Route::get("project/{project}/dynamic", [API\ProjectController::class, "dynamic"])->name("project.dynamic");
@@ -140,6 +147,7 @@ Route::middleware(['auth:sanctum','account.limit'])->group(function () {
             ->name("project.requirement"); //项目需求
         Route::get("project/{project}/not-link-asset-requirement", [API\ProjectController::class, "notLinkAssetRequirement"])
             ->name("project.not-link-asset-requirement"); //项目未关联的资产需求
+        Route::get("project/publicSearch",[API\ProjectController::class, 'publicSearch'])->name('project.publicSearch');
 
         Route::patch("task/{task}/closed", [API\TaskController::class, "closed"])->name("task.closed");
         Route::patch("task/{task}/start", [API\TaskController::class, "start"])->name("task.start");
@@ -170,6 +178,8 @@ Route::middleware(['auth:sanctum','account.limit'])->group(function () {
             ->name("naming-rule.combination-show");
         Route::post("naming-rule/{name_rule}/autoname", [API\NameRuleController::class, "autoname"])
             ->name("name-rule.autoname");
+        Route::post("naming-rule/publicSearch", [API\NameRuleController::class, "publicSearch"])
+            ->name("name-rule.publicSearch");
 
         Route::get("team-member/{project}", [API\TeamMemberController::class, "members"])->name("team-member.list");
         Route::delete("team-member/{team_member}", [API\TeamMemberController::class, "destroy"])->name("team-member.destroy");