Browse Source

custom_fields

peterguo 1 week ago
parent
commit
eadeb39794

+ 8 - 9
app/Http/Controllers/API/CustomFieldController.php

@@ -7,6 +7,7 @@ use App\Http\Requests\API\CustomField\CreateOrUpdateRequest;
 use App\Http\Resources\API\CustomFieldResource;
 use App\Http\Resources\API\NamingRuleSimpleResource;
 use App\Models\CustomField;
+use App\Models\Enums\CustomFieldGroupType;
 use App\Models\NamingRule;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Auth;
@@ -29,16 +30,14 @@ class CustomFieldController extends Controller
      */
     public function store(CreateOrUpdateRequest $request)
     {
-        if (Auth::user()->super_admin) {
-            $namingRule = NamingRule::query()->where("id", $request->group)->first();
-            if (!in_array(strtolower($request->group), config("custom-field.groups")) && !$namingRule) {
+        switch ($request->input('group_type')) {
+            case CustomFieldGroupType::NAMING_RULE->value:
+                NamingRule::query()->findOrFail($request->input('group'));
+                break;
+            case CustomFieldGroupType::DICTIONARY->value:
+                break;
+            default:
                 return $this->forbidden("Operation without permission");
-            }
-        } else {
-            $namingRule = NamingRule::query()->where("company_id", Auth::user()->company_id)->where("id", $request->group)->first();
-            if (! $namingRule) {
-                return $this->forbidden('Naming rule does not exist');
-            }
         }
 
         CustomField::query()->updateOrCreate([

+ 2 - 0
app/Http/Requests/API/CustomField/CreateOrUpdateRequest.php

@@ -3,6 +3,7 @@
 namespace App\Http\Requests\API\CustomField;
 
 use App\Http\Requests\RuleHelper;
+use App\Models\Enums\CustomFieldGroupType;
 use App\Models\Enums\CustomFieldType;
 use Illuminate\Foundation\Http\FormRequest;
 use Illuminate\Validation\Rule;
@@ -27,6 +28,7 @@ class CreateOrUpdateRequest extends FormRequest
     public function rules(): array
     {
         return [
+            'group_type' => ['required', new Enum(CustomFieldGroupType::class)],
             'key' => 'required',
             'group' => 'required',
             'type' => [

+ 1 - 1
app/Models/CustomField.php

@@ -13,7 +13,7 @@ class CustomField extends Model
     public $timestamps = false;
 
     protected $fillable = [
-        'group', 'key', 'options', 'type', 'required', 'label','remark','inputs'
+        'group_type', 'group', 'key', 'options', 'type', 'required', 'label','remark','inputs'
     ];
 
     protected $casts = [

+ 10 - 0
app/Models/Enums/CustomFieldGroupType.php

@@ -0,0 +1,10 @@
+<?php
+
+namespace App\Models\Enums;
+
+enum CustomFieldGroupType: string
+{
+    case NAMING_RULE = 'naming_rule';
+
+    case DICTIONARY = 'dictionary';
+}

+ 6 - 0
database/migrations/tenant/2025_03_17_113521_add_custom_fields_to_task_container_file_table.php

@@ -19,6 +19,9 @@ return new class extends Migration {
         Schema::table('containers', function (Blueprint $table) {
             $table->json('custom_fields')->nullable()->comment("自定义字段");
         });
+        Schema::table('custom_fields', function (Blueprint $table) {
+            $table->string('group_type')->nullable()->after("group")->comment("分组类型");
+        });
     }
 
     public function down(): void
@@ -32,5 +35,8 @@ return new class extends Migration {
         Schema::table('containers', function (Blueprint $table) {
             $table->dropColumn('custom_fields');
         });
+        Schema::table('custom_fields', function (Blueprint $table) {
+            $table->dropColumn('group_type');
+        });
     }
 };