request->param('status', ''); $q = ForumTopic::with(['board']); if ($status !== '' && in_array((int) $status, [-1, 0, 1], true)) { $q->where('status', (int) $status); } $list = $q->order('id desc')->paginate(20); $this->assign('list', $list); $this->assign('typeMap', ForumTopic::$typeMap); $this->assign('filterStatus', $status); return $this->fetch('topic/index'); } public function edit($id = 0) { $row = ForumTopic::find($id); $boards = ForumBoard::enabledList(); $this->assign('row', $row); $this->assign('boards', $boards); $this->assign('typeMap', ForumTopic::$typeMap); return $this->fetch('topic/edit'); } public function update($id = 0) { $row = ForumTopic::find($id); if (!$row) { return $this->error('记录不存在'); } $row->save($this->request->post()); \addon\forum\service\ForumSearchService::sync($id); return $this->success([], '更新成功'); } public function delete($id = 0) { $row = ForumTopic::find($id); if ($row) { $row->status = -1; $row->save(); \addon\forum\service\ForumSearchService::remove($id); } return $this->success([], '删除成功'); } /** * 置顶/加精/审核状态切换 */ public function state($id = 0) { $field = $this->request->post('field', ''); $value = (int) $this->request->post('value', 0); if (!in_array($field, ['is_top', 'is_essence', 'status'])) { return $this->error('非法字段'); } ForumTopic::where('id', $id)->update([$field => $value]); return $this->success([], '操作成功'); } /** * 审核通过(人工复核):置为正常可见 */ public function audit($id = 0) { $row = ForumTopic::find($id); if (!$row) { return $this->error('帖子不存在'); } $row->status = 1; $row->audit_reason = '人工审核通过'; $row->save(); return $this->success([], '审核通过'); } /** * 审核驳回:下架并填写理由 */ public function reject($id = 0) { $row = ForumTopic::find($id); if (!$row) { return $this->error('帖子不存在'); } $reason = trim((string) $this->request->post('reason', '')); $row->status = -1; $row->audit_reason = $reason === '' ? '人工审核驳回' : $reason; $row->save(); return $this->success([], '已驳回'); } }