cqp 4 недель назад
Родитель
Сommit
e75a03b9ad

+ 28 - 2
app/Http/Controllers/Api/U8Controller.php

@@ -275,11 +275,24 @@ class U8Controller extends BaseController
         }
     }
 
-    public function setField(Request $request)
+    public function setFieldAdd(Request $request)
     {
         $userData = $request->userData;
         $service = new U8XkyServerService();
-        list($status,$data) = $service->setField($request->all(),$userData);
+        list($status,$data) = $service->setFieldAdd($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function setFieldEdit(Request $request)
+    {
+        $userData = $request->userData;
+        $service = new U8XkyServerService();
+        list($status,$data) = $service->setFieldEdit($request->all(),$userData);
 
         if($status){
             return $this->json_return(200,'',$data);
@@ -327,6 +340,19 @@ class U8Controller extends BaseController
         }
     }
 
+    public function fieldDel(Request $request)
+    {
+        $userData = $request->userData;
+        $service = new U8XkyServerService();
+        list($status,$data) = $service->fieldDel($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
     public function vendorU8List(Request $request)
     {
         $userData = $request->userData;

+ 23 - 0
app/Model/Field.php

@@ -0,0 +1,23 @@
+<?php
+
+namespace App\Model;
+
+use Illuminate\Database\Eloquent\Model;
+
+class Field extends Model
+{
+    protected $guarded = [];
+    protected $table = "field"; //指定表
+    const CREATED_AT = null;
+    const UPDATED_AT = null;
+    protected $dateFormat = 'U';
+
+    const STATE_ZERO = 'stock';//
+    const STATE_ONE = 1;//
+    const STATE_TWO = 2;//
+    public static $name = [
+        self::STATE_ZERO => '库存',
+        self::STATE_ONE => '',
+        self::STATE_TWO => '',
+    ];
+}

+ 1 - 1
app/Model/FieldData.php

@@ -12,7 +12,7 @@ class FieldData extends Model
     const UPDATED_AT = null;
     protected $dateFormat = 'U';
 
-    const STATE_ZERO = 0;//
+    const STATE_ZERO = 'stock';
     const STATE_ONE = 1;//
     const STATE_TWO = 2;//
     public static $name = [

+ 124 - 32
app/Service/U8XkyServerService.php

@@ -3,6 +3,7 @@
 namespace App\Service;
 
 use App\Model\DDEmployee;
+use App\Model\Field;
 use App\Model\FieldData;
 use App\Model\Inventory;
 use App\Model\Record;
@@ -184,7 +185,7 @@ class U8XkyServerService extends Service
         }
 
         if(! $is_add){
-            $order = Inventory::where('id', $data['id'])->first();
+            $order = Inventory::where('id', $data['id'])->where('del_time',0)->first();
             if(empty($order)) return [false, '存货信息不存在或已被删除'];
             $order = $order->toArray();
             list($status, $msg) = $this->checkState(U8State::type_four, $user, $order['order_number']);
@@ -278,7 +279,7 @@ class U8XkyServerService extends Service
             DB::beginTransaction();
             $time = time();
 
-            $order = Inventory::where('id', $data['id'])->first();
+            $order = Inventory::where('id', $data['id'])->where('del_time',0)->first();
             if(empty($order)) return [false, '存货信息不存在或已被删除'];
             $order = $order->toArray();
             list($status, $msg) = $this->checkState(U8State::type_five, $user, $order['order_number']);
@@ -403,7 +404,7 @@ class U8XkyServerService extends Service
         }
 
         if(! $is_add){
-            $order = Vendor::where('id', $data['id'])->first();
+            $order = Vendor::where('id', $data['id'])->where('del_time',0)->first();
             if(empty($order)) return [false, '供应商信息不存在或已被删除'];
             $order = $order->toArray();
             list($status, $msg) = $this->checkState(U8State::type_five, $user, $order['order_number']);
@@ -489,7 +490,7 @@ class U8XkyServerService extends Service
             DB::beginTransaction();
             $time = time();
 
-            $order = Vendor::where('id', $data['id'])->first();
+            $order = Vendor::where('id', $data['id'])->where('del_time',0)->first();
             if(empty($order)) return [false, '供应商信息不存在或已被删除'];
             $order = $order->toArray();
             list($status, $msg) = $this->checkState(U8State::type_five, $user, $order['order_number']);
@@ -508,7 +509,7 @@ class U8XkyServerService extends Service
         return [true, ''];
     }
 
-    public function filedCommon($data, $user, $field = []){
+    public function filedCommon1($data, $user, $field = []){
         $model = FieldData::select([
                 'userid',
                 'type',
@@ -522,6 +523,26 @@ class U8XkyServerService extends Service
         return $model;
     }
 
+    public function getField($data, $user){
+        if(empty($data['type'])) return [false, 'type类型不能为空'];
+        $type = $data['type'];
+        $config  = config("field.{$type}") ?? [];
+
+        return [true, $config];
+    }
+
+    public function filedCommon($data, $user, $field = []){
+        if(empty($user['qx'])) return [false, '权限不足'];
+        $type = $data['type'] ?? null;
+        $model = Field::where('login_type', $user['login_type'])
+            ->when(! empty($type), function ($query) use($type){
+                return $query->where('type', $type);
+            })
+            ->select('id','userid','type');
+
+        return $model;
+    }
+
     public function fieldList($data, $user){
         $model = $this->filedCommon($data, $user);
         $list = $this->limit($model,'',$data);
@@ -537,7 +558,6 @@ class U8XkyServerService extends Service
             ->pluck('name', 'userid')
             ->toArray();
         foreach ($data['data'] as $key => $value){
-            $data['data'][$key]['crt_time'] = $value['crt_time'] ? date('Y-m-d H:i:s',$value['crt_time']) : '';
             $data['data'][$key]['user_title'] = $map[$value['userid']] ?? '';
             $data['data'][$key]['type_title'] = FieldData::$name[$value['type']] ?? '';
         }
@@ -546,48 +566,120 @@ class U8XkyServerService extends Service
     }
 
     public function fieldDetail($data, $user){
-        if(! isset($data['type'])) return [false, 'type不能为空'];
-        if(! isset($data['userid'])) return [false, '人员id不能为空'];
+        if(empty($user['qx'])) return [false, '权限不足'];
+        if(empty($data['id'])) return [false, 'ID不能为空'];
+        $order = Field::where('id', $data['id'])->first();
+        if(empty($order)) return ['字段设置不存在或已删除'];
+        $order = $order->toArray();
+        $order['field'] = FieldData::where('field_id', $order['id'])
+            ->get()->toArray();
 
-        return [true, FieldData::where('type', $data['type'])
-            ->where('login_type', $user['login_type'])
-            ->where('userid', $data['userid'])
-            ->get()->toArray()];
+        return [true, $order];
     }
 
-    public function getField($data, $user){
-        if(empty($data['type'])) return [false, 'type类型不能为空'];
-        $type = $data['type'];
-        $config  = config("field.{$type}") ?? [];
+    public function setFieldAdd($data, $user){
+        list($status, $msg) = $this->setFieldRule($data, $user);
+        if(! $status) return [false, $msg];
 
-        return [true, $config];
+        try {
+
+            // 1. 插入主表并获取实例
+            $mainField = Field::create([
+                'userid'     => $data['userid'],
+                'crt_id'     => $user['userid'],
+                'type'       => $data['type'],
+                'login_type' => $user['login_type']
+            ]);
+
+            // 2. 获取返回的 ID
+            $parentId = $mainField->id;
+
+            // 3. 构造并插入子表数据
+            $insert = [];
+            foreach ($data['field'] as $value){
+                $insert[] = [
+                    'field_id'   => $parentId, // 将主表 ID 关联到子表
+                    'userid'     => $data['userid'],
+                    'key'        => $value['key'],
+                    'title'      => $value['title'],
+                    'login_type' => $user['login_type']
+                ];
+            }
+
+            FieldData::insert($insert);
+        } catch (\Throwable $exception) {
+            return [false, "异常: " . $exception->getMessage()];
+        }
+
+        return [true, ''];
+    }
+
+    public function setFieldEdit($data, $user){
+        list($status, $msg) = $this->setFieldRule($data, $user, false);
+        if(! $status) return [false, $msg];
+
+        try {
+            $insert = [];
+            foreach ($data['field'] as $value){
+                $insert[] = [
+                    'field_id'   => $data['id'], // 将主表 ID 关联到子表
+                    'userid' => $data['userid'],
+                    'key' => $value['key'],
+                    'title' => $value['title'],
+                    'login_type' => $user['login_type']
+                ];
+            }
+            FieldData::where('field_id', $data['id'])->delete();
+            FieldData::insert($insert);
+        } catch (\Throwable $exception) {
+            return [false, "异常: " . $exception->getMessage()];
+        }
+
+        return [true, ''];
     }
 
-    public function setField($data, $user){
+    public function setFieldRule(&$data, $user, $is_add = true){
+        if(! $is_add && empty($data['id'])) return [false, 'ID不能为空'];
+        $id = $data['id'] ?? 0;
         if(empty($user['qx'])) return [false, '权限不足,设置失败'];
         if(empty($data['userid'])) return [false, '人员ID不能为空'];
-        if(! isset($data['field'])) return [false, '字段列不存在'];
-
-        $insert = [];
+        if(empty($data['type'])) return [false, '设置类型不能为空'];
+        if(empty($data['field'])) return [false, '字段列不存在'];
         foreach ($data['field'] as $value){
-            $insert[] = [
-                'userid' => $data['userid'],
-                'key' => $value['key'],
-                'title' => $value['title'],
-                'login_type' => $user['login_type']
-            ];
+            if(empty($value['key'])) return [false, '字段名不能为空'];
+            if(empty($value['title'])) return [false, '字段中文名不能为空'];
+        }
+
+        if(! $is_add){
+            $order = Field::where('id', $id)->first();
+            if(empty($order)) return [false, '字段信息不存在或已被删除'];
+        }else{
+            $bool = Field::where('userid', $data['userid'])->exists();
+            if($bool) return [false, '该人员字段设置已存在,请勿重复新增'];
         }
 
+        return [true, ''];
+    }
+
+    public function fieldDel($data, $user){
+        if(empty($data['id'])) return [false, 'ID不能为空'];
+        if(empty($user['qx'])) return [false, '权限不足'];
+        $order = Field::where('id', $data['id'])->first();
+        if(empty($order)) return ['字段设置不存在或已删除'];
+
         try {
+            DB::beginTransaction();
 
-            FieldData::where('userid', $data['userid'])->where('login_type', $user['login_type'])->delete();
+            Field::where('id', $data['id'])->delete();
+            FieldData::where('field_id', $data['id'])->delete();
 
-            if(! empty($insert)) FieldData::insert($insert);
-        } catch (\Throwable $exception) {
-            return [false, "异常: " . $exception->getMessage()];
+            DB::commit();
+        }catch (\Throwable $exception){
+            DB::rollBack();
+            return [false, $exception->getMessage()];
         }
 
-        return [true, ''];
+        return [true, $order];
     }
 
     public function ddEmployeeList($data, $user){

+ 3 - 1
routes/api.php

@@ -132,9 +132,11 @@ Route::group(['middleware'=> ['checkLogin']],function ($route){
     $route->any('ddEmployeeList', 'Api\U8Controller@ddEmployeeList');
     $route->any('getField', 'Api\U8Controller@getField');
     //设置隐藏字段
-    $route->any('setField', 'Api\U8Controller@setField');
+    $route->any('setFieldAdd', 'Api\U8Controller@setFieldAdd');
+    $route->any('setFieldEdit', 'Api\U8Controller@setFieldEdit');
     //隐藏字段列表
     $route->any('fieldList', 'Api\U8Controller@fieldList');
     //隐藏字段详情
     $route->any('fieldDetail', 'Api\U8Controller@fieldDetail');
+    $route->any('fieldDel', 'Api\U8Controller@fieldDel');
 });