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', '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', '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(); | ||
|  |     } | ||
|  | 
 | ||
|  | 
 | ||
|  | } |