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]];
            $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);
        }
        $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();
    }
}
";
                            }else{
                                $dataStr.=$ditem['msgCont'];
                            }
                        }
                        $item->comment = $dataStr;
                    }
                }
            });
            return $this->json(0, 'success', $list);
        }
        return $this->view();
    }
}