Browse Source

对公司进行简单的增删改查

kely 11 months ago
parent
commit
261214255b

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

@@ -0,0 +1,64 @@
+<?php
+/**
+ * Created by IntelliJ IDEA.
+ * User: kelyliang
+ * Date: 2024/3/20
+ * Time: 下午 02:32
+ */
+
+namespace App\Http\Controllers\API;
+
+
+use App\Http\Controllers\Controller;
+use App\Http\Requests\API\Company\CreateOrUpdateRequest;
+use App\Http\Resources\API\CompanyResource;
+use App\Models\Company;
+use Illuminate\Http\Request;
+
+class CompanyController extends Controller
+{
+    public function index(Request $request)
+    {
+        $company=Company::query()->filter($request->all())->get();
+        return CompanyResource::collection($company);
+    }
+
+
+    public function store(CreateOrUpdateRequest $request)
+    {
+        $company=new Company();
+
+        $company->fill([
+            ...$request->all(),
+        ]);
+
+        $company->save();
+
+        return $this->created();
+    }
+
+    public function show(string $id)
+    {
+        $field = Company::query()->findOrFail($id);
+
+        return new CompanyResource($field);
+    }
+
+    public function update(CreateOrUpdateRequest $request,string $id){
+        $company=Company::findOrFail($id);
+        $company->fill($request->all());
+        $company->save();
+        return $this->noContent();
+    }
+
+
+    public function destroy(string $id)
+    {
+
+    }
+
+
+
+
+
+}

+ 35 - 0
app/Http/Requests/API/Company/CreateOrUpdateRequest.php

@@ -0,0 +1,35 @@
+<?php
+/**
+ * Created by IntelliJ IDEA.
+ * User: kelyliang
+ * Date: 2024/3/20
+ * Time: 下午 03:35
+ */
+
+namespace App\Http\Requests\API\Company;
+
+
+use App\Http\Requests\RuleHelper;
+use Illuminate\Foundation\Http\FormRequest;
+
+class CreateOrUpdateRequest extends FormRequest
+{
+    use RuleHelper;
+
+
+    /**
+     * Determine if the user is authorized to make this request.
+     */
+    public function authorize(): bool
+    {
+        return true;
+    }
+
+    public function rules(): array
+    {
+        return [
+            'name' => 'required|unique:company',
+        ];
+    }
+
+}

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

@@ -0,0 +1,26 @@
+<?php
+/**
+ * Created by IntelliJ IDEA.
+ * User: kelyliang
+ * Date: 2024/3/20
+ * Time: 下午 02:43
+ */
+
+namespace App\Http\Resources\API;
+
+
+use Illuminate\Http\Request;
+use Illuminate\Http\Resources\Json\JsonResource;
+
+class CompanyResource extends JsonResource
+{
+    public function toArray(Request $request): array
+    {
+        return[
+          'id' => $this->id,
+          'name' => $this->name,
+          'email' => $this->email,
+        ];
+    }
+
+}

+ 27 - 0
app/ModelFilters/CompanyFilter.php

@@ -0,0 +1,27 @@
+<?php
+/**
+ * Created by IntelliJ IDEA.
+ * User: kelyliang
+ * Date: 2024/3/20
+ * Time: 下午 03:10
+ */
+
+namespace App\ModelFilters;
+
+
+use EloquentFilter\ModelFilter;
+
+class CompanyFilter extends ModelFilter
+{
+    public $relations = [];
+
+    public function email($email): ModelFilter
+    {
+        return $this->where('email', $email);
+    }
+
+    public function name($name): ModelFilter
+    {
+        return $this->where('name', 'like', "%$name%");
+    }
+}

+ 7 - 1
app/Models/Company.php

@@ -2,15 +2,21 @@
 
 namespace App\Models;
 
+use EloquentFilter\Filterable;
 use Illuminate\Database\Eloquent\Factories\HasFactory;
 use Illuminate\Database\Eloquent\Model;
 
 class Company extends Model
 {
-    use HasFactory;
+    use HasFactory,Filterable;
 
     protected $table = 'company';
 
+    protected $fillable = [
+        'name',
+        'email',
+    ];
+
     protected $guarded = [
         'id'
     ];

+ 1 - 0
routes/api.php

@@ -36,6 +36,7 @@ Route::middleware(['auth:sanctum'])->group(function () {
             'task' => API\TaskController::class,
             'library' => API\LibraryController::class,
             'department' => API\DepartmentController::class,
+            'company' => API\CompanyController::class,
         ]);
         Route::get("asset/{asset_id}/report",[API\AssetController::class, 'report'])->name('asset.report');