json(4001, '状态错误'); } if (!$info = CommentModel::findById($id)) { return $this->json(4001, '记录不存在'); } if ($this->request->isPost()) { $data = ['state' => $state]; if ($state == CommentModel::state_hide) { $data['is_delete'] = CommentModel::COMMON_ON; } $info->save($data); return $this->json(); } $disabled = CommentModel::getAllChildrenIds($id); $disabled[] = $id; $this->data['item'] = $info; return $this->view(); } /** * 恢复 * * @return Json|View * @throws DataNotFoundException * @throws DbException * @throws ModelNotFoundException * @throws Exception */ public function recovery() { $id = input('id/d', 0); if (!$info = CommentModel::findById($id)) { return $this->json(4001, '记录不存在'); } if ($this->request->isPost()) { $data = ["is_delete"=>CommentModel::COMMON_OFF]; $info->save($data); return $this->json(); } } /** * 加入黑名单 * @return Json */ public function addBlack() { $id = input("id/d"); $info = CommentModel::findById($id); if (empty($info)) { return $this->error('记录不存在'); } if ($this->request->isPost()) { if (empty($info)) { return $this->json(4001, '记录不存在'); } $time = input("time/d", 0, "abs"); if ($time <= 0) { return $this->json(4001, "时间输入错误"); } $account = AccountRepository::getInstance()->findOneByWhere(["user_code" => $info["user_code"]]); if (empty($account)) { return $this->json(4001, "用户不存在"); } $timeSecond = $time * 60; Db::startTrans(); try { //如果之前有黑名单设置 如果黑名单时间未过期 if (!empty($account["blank_time"]) && strtotime($account["blank_time"]) && strtotime($account["blank_time"]) > time()) { $account->save(["blank_time" => date("Y-m-d H:i:s", (strtotime($account["blank_time"]) + $timeSecond)), "blank_total" => (($account["blank_total"] ?? 0) + $time)]); } else { $account->save(["blank_time" => date("Y-m-d H:i:s", (time() + $timeSecond)), "blank_total" => (($account["blank_total"] ?? 0) + $time)]); } $info->save(["state" => CommentModel::state_hide]); Db::commit(); return $this->json(); } catch (RepositoryException $e) { Db::rollback(); return $this->json(5001, "失败"); } catch (Exception $e) { Db::rollback(); return $this->json(5002, "失败"); } } $this->data["id"] = $id; return $this->view(); } /** * 彻底删除 * @return Json */ public function del() { if (!$this->request->isPost()) { return $this->json(4000, '非法请求'); } $ids = $this->request->param('ids/a', []); CommentModel::destroy($ids); return $this->json(); } /** * 列表 * * @return Json|View * @throws Exception */ public function index() { $stateArray = CommentModel::allState(); $typeArray = CommentModel::allType(); if ($this->request->isPost()) { $keyword = $this->request->param('keyword/s',); $state = $this->request->param('state/d', "-1"); $type = $this->request->param('type/d', -1); $page = $this->request->param('page/d', 1); $size = $this->request->param('size/d', 30); $whereMap = [ ["comment.is_delete", "=", CommentModel::COMMON_OFF], ["comment.state", "in", [CommentModel::state_default,CommentModel::state_success]], ]; $orders = ['comment.id' => 'desc']; if (!empty($keyword)) { $whereMap[] = ['account.nick_name|comment.comment', 'like', "%$keyword%"]; } if ($type >= 0) { $whereMap[] = ['comment.type', '=', $type]; } if (isset($stateArray[$state])) { $whereMap[] = ['comment.state', '=', $state]; } $list = CommentModel::findList($whereMap, [], $page, $size, function ($q) { return $q->withJoin("account"); }, $orders); $list["list"]->each(function ($item){ if($item->type == CommentModel::type_text){ $data = json_decode($item->comment,true); if(!empty($data)){ $dataStr = ''; foreach ($data as $ditem){ if($ditem["msgType"] == CommentModel::msg_type_emoji){ $dataStr .= ""; }else{ $dataStr.=$ditem['msgCont']; } } $item->comment = $dataStr; } } }); return $this->json(0, 'success', $list); } $this->data["state"] = $stateArray; $this->data["type"] = $typeArray; return $this->view(); } /** * 列表 * * @return Json|View * @throws Exception */ public function recycleBin() { if ($this->request->isPost()) { $keyword = $this->request->param('keyword/s',); $page = $this->request->param('page/d', 1); $size = $this->request->param('size/d', 30); $whereMap = [["comment.is_delete", "=", CommentModel::COMMON_ON]]; if (!empty($keyword)) { $whereMap[] = ['account.nick_name|comment.comment', 'like', "%$keyword%"]; } $orders = ['comment.id' => 'desc']; $list = CommentModel::findList($whereMap, [], $page, $size, function ($q) { return $q->withJoin("account"); }, $orders); $list["list"]->each(function ($item){ if($item->type == CommentModel::type_text){ $data = json_decode($item->comment,true); if(!empty($data)){ $dataStr = ''; foreach ($data as $ditem){ if($ditem["msgType"] == CommentModel::msg_type_emoji){ $dataStr .= ""; }else{ $dataStr.=$ditem['msgCont']; } } $item->comment = $dataStr; } } }); return $this->json(0, 'success', $list); } return $this->view(); } }