|
|
@@ -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()];
|
|
|
}
|
|
|
}
|