232 lines
		
	
	
		
			6.6 KiB
		
	
	
	
		
			PHP
		
	
	
			
		
		
	
	
			232 lines
		
	
	
		
			6.6 KiB
		
	
	
	
		
			PHP
		
	
	
| <?php
 | |
| 
 | |
| namespace app\controller\manager;
 | |
| 
 | |
| use app\exception\RepositoryException;
 | |
| use app\model\Comment as CommentModel;
 | |
| 
 | |
| use app\repository\AccountRepository;
 | |
| use Exception;
 | |
| use think\facade\Db;
 | |
| use think\db\exception\DataNotFoundException;
 | |
| use think\db\exception\DbException;
 | |
| use think\db\exception\ModelNotFoundException;
 | |
| use think\exception\ValidateException;
 | |
| use think\response\Json;
 | |
| use think\response\View;
 | |
| use think\facade\Config;
 | |
| 
 | |
| /**
 | |
|  * 评论
 | |
|  *
 | |
|  * Class Comment
 | |
|  * @package app\controller\manager
 | |
|  */
 | |
| class Comment extends Base
 | |
| {
 | |
| 
 | |
|     protected function initialize()
 | |
|     {
 | |
|         parent::initialize();
 | |
|         Config::load("extra/wechat", "wechat");
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * 审核
 | |
|      *
 | |
|      * @return Json|View
 | |
|      * @throws DataNotFoundException
 | |
|      * @throws DbException
 | |
|      * @throws ModelNotFoundException
 | |
|      * @throws Exception
 | |
|      */
 | |
|     public function examine()
 | |
|     {
 | |
|         $id = input('id/d', 0);
 | |
|         $state = input('state/d', 0);
 | |
| 
 | |
|         if (!in_array($state, array_keys(CommentModel::allState()))) {
 | |
|             return $this->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);
 | |
| 
 | |
| 
 | |
|             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);
 | |
|             return $this->json(0, 'success', $list);
 | |
|         }
 | |
|         return $this->view();
 | |
|     }
 | |
| 
 | |
| 
 | |
| } |