标记完成'; /** * 判断是否允许显示此操作 * * @return bool */ public function allowed() { return $this->row->completion_status === PARTICIPATION_STATUS::IN_PROGRESS; } /** * 处理请求 * * @param Request $request * @return mixed */ public function handle(Request $request) { try { $id = $this->getKey(); $participation = ActivityParticipation::findOrFail($id); if ($participation->completion_status !== PARTICIPATION_STATUS::IN_PROGRESS) { return $this->response()->error('只有进行中的参与记录才能标记为完成'); } $participation->completion_status = PARTICIPATION_STATUS::COMPLETED; $participation->completion_time = now(); $participation->save(); // 触发活动完成事件 event(new \App\Module\Activity\Events\ActivityCompletedEvent( $participation->user_id, $participation->activity_id )); return $this->response() ->success("参与记录 [{$id}] 已标记为完成") ->refresh(); } catch (\Exception $e) { return $this->response() ->error('操作失败: ' . $e->getMessage()); } } /** * 确认信息 * * @return array|string|void */ public function confirm() { return ['确定要标记此参与记录为完成吗?', '标记完成后,用户将可以领取活动奖励']; } }