Selaa lähdekoodia

容器库,容器列表,容器资产树,容器项目树,公司,部门,角色等公共列表不受权限限制

kely 7 kuukautta sitten
vanhempi
säilyke
40f3169042

+ 5 - 0
app/Http/Controllers/API/CompanyController.php

@@ -49,6 +49,11 @@ class CompanyController extends Controller
 
     }
 
+    public function publicSearch(Request $request){
+        $company=Company::query()->filter($request->all())->where('id',Auth::user()->company->id)->get();
+        return CompanyResource::collection($company);
+    }
+
 
     public function store(CreateOrUpdateRequest $request)
     {

+ 19 - 4
app/Http/Controllers/API/DepartmentController.php

@@ -14,11 +14,26 @@ class DepartmentController extends Controller
 
     public function index(Request $request)
     {
-        $sort=$request->input('sort','desc');
-        $pageSize=$request->get('page_size') ?? 10;
-        $department=Department::filter($request->all())->where("parent_id",0) ->orderBy('created_at',$sort)->with(['children'])->paginate($pageSize);
+        return $this->getDepartments($request);
+    }
+
+    public function publicSearch(Request $request)
+    {
+      return $this->getDepartments($request);
+    }
+
+    protected function getDepartments(Request $request)
+    {
+        $sort = $request->input('sort', 'desc');
+        $pageSize = $request->get('page_size') ?? 10;
+        $departments = Department::filter($request->all())->orderBy('created_at', $sort)->paginate($pageSize);
+        $departmentTree = !empty(make_tree($departments->toArray()['data'])) ? make_tree($departments->toArray()['data']) : $departments->toArray()['data'];
+
 
-        return DepartmentResource::collection($department);
+        return [
+            'data' => $departmentTree,
+            'total' => $departments->total(),
+        ];
     }
 
 

+ 11 - 0
app/Http/Controllers/API/RoleController.php

@@ -5,6 +5,7 @@ namespace App\Http\Controllers\API;
 use App\Http\Controllers\Controller;
 use App\Http\Requests\API\Role\CreateOrUpdateRequest;
 use App\Http\Resources\API\RoleResource;
+use App\Http\Resources\API\RoleSimpleResource;
 use App\Models\Menu;
 use App\Models\Role;
 use Illuminate\Http\Request;
@@ -21,6 +22,16 @@ class RoleController extends Controller
         return RoleResource::collection($roles);
     }
 
+    /**
+     * Display a listing of the resource.
+     */
+    public function publicSearch(Request $request)
+    {
+        $roles = Role::query()->filter($request->all())->get();
+
+        return RoleSimpleResource::collection($roles);
+    }
+
     /**
      * Store a newly created resource in storage.
      */

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

@@ -82,6 +82,15 @@ class UserController extends Controller
         return UserSimpleResource::collection($user);
     }
 
+    public function publicSearch(Request $request){
+        $pageSize=$request->get('page_size') ?? 10;
+        $sort=$request->input('sort','desc');
+        $user=User::query()
+            ->where('company_id',Auth::user()->company_id)
+            ->filter($request->all())->orderBy('created_at',$sort)->paginate($pageSize);
+        return UserSimpleResource::collection($user);
+    }
+
     /**
      * add a new User
      * @return \Illuminate\Http\Response

+ 26 - 0
app/Http/Resources/API/RoleSimpleResource.php

@@ -0,0 +1,26 @@
+<?php
+/**
+ * Created by IntelliJ IDEA.
+ * User: kelyliang
+ * Date: 2024/8/1
+ * Time: 下午 12:07
+ */
+
+namespace App\Http\Resources\API;
+
+
+class RoleSimpleResource 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,
+        ];
+    }
+}

+ 28 - 24
routes/api.php

@@ -29,43 +29,36 @@ Route::get("file/download/{uuid}/share-file", [API\FileController::class, "downl
 
 
 Route::middleware(['auth:sanctum','account.limit'])->group(function () {
+    //公共权限
     Route::post("/logout", [API\AuthController::class, "logout"]);
     Route::get("user/details", [API\UserController::class, 'details']);
-
-    //公共权限
+    Route::get("user-items", [API\UserController::class, 'publicSearch']);
+    Route::get("asset-tree",[API\AssetController::class, 'tree']);
     Route::get("asset/{asset_id}/report",[API\AssetController::class, 'report']);
-    Route::get("project-items",[API\ProjectController::class, "publicSearch"]);
     Route::get("asset-items",[API\AssetController::class, "publicSearch"]);
     Route::get("asset-group-items",[API\AssetGroupController::class, "publicSearch"]);
     Route::get("requirement-group-items",[API\RequirementGroupController::class, "publicSearch"]);
     Route::get("requirement-items",[API\RequirementController::class, "publicSearch"]);
-    Route::get("naming-rule-enabled", [API\NameRuleController::class, "enabled"]);
+    Route::get("role-items",[API\RoleController::class, "publicSearch"]);
     Route::get("project-by-asset",[API\ProjectController::class, "byAsset"]);
+    Route::get("project-items",[API\ProjectController::class, "publicSearch"]);
+    Route::get("project-tree",[API\ProjectController::class, 'tree']);
     Route::get("plan-by-assets", [API\PlanController::class, "byAssets"]);
     Route::get("notification", [API\NotificationController::class, "index"]);
     Route::get("notification/unread", [API\NotificationController::class, "unread"]);
     Route::post("notification/mark-as-read", [API\NotificationController::class, "markAsRead"]);
-    Route::get("company", [API\CompanyController::class, "index"]);
-    Route::get("company/{company_id}", [API\CompanyController::class, "show"]);
+    Route::get("naming-rule-enabled", [API\NameRuleController::class, "enabled"]);
     Route::get("container-report", [API\ContainerController::class, "containerReport"]);
-//    Route::apiResource("company", API\CompanyController::class)->only([
-//        'index', 'show'
-//    ]);
+    Route::get("library", [API\LibraryController::class, "index"]);
+    Route::get('container', [API\ContainerController::class, "index"]);
     Route::get("action/{object_type}/history/{object_id}", [API\ActionController::class, "history"]);
+    Route::get("company-items", [API\CompanyController::class, "publicSearch"]);
+    Route::get("department-items", [API\DepartmentController::class, "publicSearch"]);
 
     // Allow access only to admin role
     Route::middleware(['permission', 'role.super-admin', 'system.operation-log'])->group(function () {
-//        Route::get("config", [API\ConfigController::class, "index"])->name("config.index");
-//        Route::post("config-setting", [API\ConfigController::class, "setting"])->name("config.setting");
-//        Route::get("config/message-notification-setting", [API\ConfigController::class, "messageNotificationSetting"])
-//            ->name("config.message-notification-setting");
-//        Route::post("config/message-notification-setting", [API\ConfigController::class, "storeMessageNotificationSetting"])
-//            ->name("config.store-message-notification-setting");
-
-        //Route::put("company/action", [API\CompanyController::class, "action"])->name("company.action");
-
         Route::apiResource("company", API\CompanyController::class)->only([
-            'store', 'update', 'destroy'
+            'store','destroy','show'
         ]);
 
 
@@ -90,13 +83,26 @@ Route::middleware(['auth:sanctum','account.limit'])->group(function () {
             'custom-field' => API\CustomFieldController::class,
             'naming-rule' => API\NameRuleController::class,
             'task' => API\TaskController::class,
-            'library' => API\LibraryController::class,
+//            'library' => API\LibraryController::class,
             'department' => API\DepartmentController::class,
             'user' => API\UserController::class,
-            'container' => API\ContainerController::class,
+//            'container' => API\ContainerController::class,
             'approval-flow'  => API\ApprovalFlowController::class,
             'approval' => API\ApprovalController::class,
         ]);
+        Route::apiResource("company", API\CompanyController::class)->only([
+            'index', 'show', 'update'
+        ]);
+
+
+
+        Route::apiResource("library", API\LibraryController::class)->only([
+            'store','update','destroy','show'
+        ]);
+
+        Route::apiResource("container", API\ContainerController::class)->only([
+            'store','update','destroy','show'
+        ]);
 
         Route::get("config", [API\ConfigController::class, "index"])->name("config.index");
         Route::post("config-setting", [API\ConfigController::class, "setting"])->name("config.setting");
@@ -122,8 +128,6 @@ Route::middleware(['auth:sanctum','account.limit'])->group(function () {
 
         Route::get("library-linkage/{type}", [API\LibraryController::class, "linkage"])->name("library.linkage");
 
-
-        Route::get("asset-tree",[API\AssetController::class, 'tree'])->name('asset.tree');
         Route::get("asset/{asset}/dynamic", [API\AssetController::class, "dynamic"])->name("asset.dynamic");
 
 
@@ -136,7 +140,7 @@ Route::middleware(['auth:sanctum','account.limit'])->group(function () {
         Route::get("requirement-export", [API\RequirementController::class, "export"])->name("requirement.export");
         Route::post("requirement-import", [API\RequirementController::class, "import"])->name("requirement.import");
 
-        Route::get("project-tree",[API\ProjectController::class, 'tree'])->name('project.tree');
+
         Route::get("project/{project}/dynamic", [API\ProjectController::class, "dynamic"])->name("project.dynamic");
         Route::get("project/{project}/latest-dynamic", [API\ProjectController::class, "latestDynamic"])->name("project.latest-dynamic");
         Route::get("project/{project}/kanban", [API\ProjectController::class, "kanban"])->name("project.kanban");