cqp 22 小时之前
父节点
当前提交
8886baee87
共有 1 个文件被更改,包括 35 次插入13 次删除
  1. 35 13
      app/Service/ItemService.php

+ 35 - 13
app/Service/ItemService.php

@@ -919,7 +919,9 @@ class ItemService extends Service
             3 => [
                 'model' => ItemNodeMission::class,
                 'name'  => '任务',
-                'relations' => ['model' => ItemNodeMission::class, 'key' => 'parent_item_node_mission_id', 'msg' => '该任务下已存在子任务,请先删除子任务'],
+                'relations' => [
+                    ['model' => ItemNodeMission::class, 'key' => 'parent_item_node_mission_id', 'msg' => '该任务下已存在子任务,请先删除子任务']
+                ],
             ],
         ];
 
@@ -2730,14 +2732,18 @@ class ItemService extends Service
         return [true, $customer];
     }
 
-    public function itemMissionProgressBoard($data,$user){
+    public function itemMissionProgressBoard($data = [], $user = []){
         $is_my = $data['is_my'] ?? 0;
         $my = $user['id'] ?? 0;
+        $share_id = $data['item_node_mission_share_id'] ?? 0;
         $list = ItemNodeMissionContent::where('del_time',0)
             ->where('item_node_mission_id', $data['id'])
             ->when(! empty($is_my),function ($query) use($my){
                 return $query->where('crt_id', $my);
             })
+            ->when(! empty($share_id),function ($query) use($share_id){
+                return $query->where('item_node_mission_id', $share_id);
+            })
             ->select('*')
             ->get()->toArray();
 
@@ -3405,6 +3411,9 @@ class ItemService extends Service
         //任务详情
         $customer['item_node_mission'] = ItemNodeMission::where('id', $customer['item_node_mission_id'])->first();
 
+        //任务进展信息 该链接下所有
+        $customer['mission_progress'] = $this->itemMissionProgressBoard(['id' => $customer['item_node_mission_id'], 'item_node_mission_share_id' => $customer['id']]);
+
         return [true, $customer];
     }
 
@@ -3503,6 +3512,7 @@ class ItemService extends Service
         if(empty($data['share_token'])) return [false, '分享链接不能为空'];
         list($status, $msg) = $this->shareCheck($data['share_token'], $user['id']);
         if(! $status) return [false, $msg];
+        $share_array = $msg;
 
         // 1. 基础校验
         if (empty($data['id'])) return [false, '任务ID不能为空'];
@@ -3603,7 +3613,7 @@ class ItemService extends Service
                 'total_work_min'        => $calculatedTotal,
                 'mark'                  => $value['mark'] ?? '',
                 'crt_time'              => time(),
-                'upd_time'              => time(),
+                'item_node_mission_share_id' => $share_array['id']
             ]
         ];
 
@@ -3613,16 +3623,28 @@ class ItemService extends Service
     }
 
     public function shareCheck($share_token = "", $employee = 0){
-        $employee_id = ItemNodeMissionShare::from('item_node_mission_share as a')
-            ->join('item_node_mission_details as b', 'b.item_node_mission_id','a.item_node_mission_id')
-            ->where('a.del_time',0)
-            ->where('b.del_time',0)
-            ->where('b.type',ItemNodeMissionDetails::type_one)
-            ->where('a.share_token', $share_token)
-            ->pluck('b.data_id')
-            ->toArray();
-        if(empty($employee_id) || ! in_array($employee, $employee_id)) return [false, '账号无该链接编辑权限'];
+        $share = ItemNodeMissionShare::where('del_time',0)
+            ->where('share_token', $share_token)
+            ->first();
+        if(empty($share)) return [false, '分享链接不存在或已被删除'];
 
-        return [true, ''];
+        $time = time();
+
+        // 核心拦截:已过期(1) 或 已作废(2) 或者是时间戳层面的实际过期,均不允许编辑
+        if ($share->status == ItemNodeMissionShare::TYPE_ONE || $share->expire_time <= $time) {
+            return [false, '该分享链接已过期'];
+        }
+        if ($share->status == ItemNodeMissionShare::TYPE_TWO) {
+            return [false, '该分享链接已作废'];
+        }
+
+        $bool = ItemNodeMissionDetails::where('del_time',0)
+            ->where('type',ItemNodeMissionDetails::type_one)
+            ->where('item_node_mission_id', $share->item_node_mission_id)
+            ->where('data_id', $employee)
+            ->exists();
+        if(! $bool) return [false, '账号无该链接编辑权限'];
+
+        return [true, $share->toArray()];
     }
 }