cqp 1 сар өмнө
parent
commit
faf0691abe

+ 13 - 0
app/Http/Controllers/Api/ItemController.php

@@ -33,6 +33,19 @@ class ItemController extends BaseController
         }
     }
 
+    public function itemFileIsDelivery(Request $request)
+    {
+        $service = new ItemService();
+        $user = $request->userData;
+        list($status,$data) = $service->itemFileIsDelivery($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
     public function itemEdit(Request $request)
     {
         $service = new ItemService();

+ 7 - 0
app/Model/CustomFieldValue.php

@@ -20,6 +20,13 @@ class CustomFieldValue extends DataScopeBaseModel
         self::type_two => '附件',
     ];
 
+    const delivery_zero = 0;
+    const delivery_one = 1;
+    const delivery = [
+        self::delivery_zero => '否',
+        self::delivery_one => '是',
+    ];
+
     public function definition()
     {
         // 即使你不需要它的数据,whereHas 也要靠这个方法生成 SQL 的 JOIN 或 EXISTS

+ 8 - 1
app/Model/ItemFile.php

@@ -16,7 +16,7 @@ class ItemFile extends DataScopeBaseModel
     const type_one = 1;
     const type_two = 2;
     const type = [
-        self::type_one => '项目文件',
+        self::type_one => '文件',
         self::type_two => '交付物',
     ];
 
@@ -28,4 +28,11 @@ class ItemFile extends DataScopeBaseModel
         self::from_two => '节点',
         self::from_three => '任务',
     ];
+
+    const delivery_zero = 0;
+    const delivery_one = 1;
+    const delivery = [
+        self::delivery_zero => '否',
+        self::delivery_one => '是',
+    ];
 }

+ 54 - 0
app/Service/ItemService.php

@@ -23,6 +23,7 @@ use Illuminate\Support\Facades\DB;
 
 class ItemService extends Service
 {
+    // 项目 任务 节点 都可以用的 文件上传 文件删除 更改交付物状态
     public function itemFileUpLoad($data,$user){
         // 1. 基础校验
         $from = $data['from'] ?? null;
@@ -140,6 +141,59 @@ class ItemService extends Service
         return [true, ''];
     }
 
+    public function itemFileIsDelivery($data, $user)
+    {
+        $typeMap = [
+            1 => '标记为交付物',
+            2 => '解除交付物',
+        ];
+        $fromMap = [
+            'custom_fields' => CustomFieldValue::class,
+            'item_file' => ItemFile::class,
+        ];
+
+        if (empty($data['opt_type']) || !isset($typeMap[$data['opt_type']])) return [false, '操作标识错误'];
+        if (empty($data['data']) || !is_array($data['data'])) return [false, '文件数据不能为空'];
+
+        // 状态值映射
+        $statusValue = ($data['opt_type'] == 1) ? 1 : 0;
+
+        $idsByType = [
+            'custom_fields' => [],
+            'item_file' => [],
+        ];
+
+        foreach ($data['data'] as $value) {
+            if (empty($value['id'])) return [false, '文件ID不能为空'];
+            if (empty($value['type']) || !isset($fromMap[$value['type']])) return [false, '文件类型错误'];
+
+            $idsByType[$value['type']][] = $value['id'];
+        }
+
+        try {
+            DB::beginTransaction();
+
+            foreach ($idsByType as $type => $ids) {
+                if (!empty($ids)) {
+                    $modelClass = $fromMap[$type];
+                    $modelClass::whereIn('id', $ids)->update([
+                        'is_delivery' => $statusValue,
+                    ]);
+                }
+            }
+
+            DB::commit();
+        } catch (\Exception $exception) {
+            DB::rollBack();
+            return [false, $exception->getMessage()];
+        }
+
+        return [true, ''];
+    }
+    // 项目 任务 节点 都可以用的 文件上传 文件删除 更改交付物状态
+
+
+
     public function itemEdit($data,$user){
         list($status,$msg) = $this->itemRule($data, $user, false);
         if(!$status) return [$status,$msg];

+ 1 - 0
routes/api.php

@@ -98,6 +98,7 @@ Route::group(['middleware'=> ['checkLogin']],function ($route){
     $route->any('itemDetailBoard', 'Api\ItemController@itemDetailBoard');
     $route->any('itemFileUpLoad', 'Api\ItemController@itemFileUpLoad');
     $route->any('itemFileUpDelete', 'Api\ItemController@itemFileUpDelete');
+    $route->any('itemFileIsDelivery', 'Api\ItemController@itemFileIsDelivery');
 
     //项目节点
     $route->any('itemNodeList', 'Api\ItemController@itemNodeList');