| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221 |
- <?php
- declare (strict_types=1);
- namespace app\api\controller;
- use app\BaseController;
- use app\model\api\ForumPost;
- use app\model\api\ForumComment;
- use app\model\api\User as UserModel;
- use app\Request;
- use library\services\UtilService;
- use think\facade\Db;
- /**
- * 论坛控制器
- */
- class Forum extends BaseController
- {
- /**
- * 检查用户发帖权限
- * @param int $uid
- * @return bool
- */
- private function checkPostPermission($uid)
- {
- $user = Db::name('user')->where('uid', $uid)->find();
- return !empty($user) && $user['permission'] == 1;
- }
- /**
- * 帖子列表
- * @param Request $request
- */
- public function postList(Request $request)
- {
- $post = UtilService::getMore([
- ['page', 1],
- ['pageSize', 20],
- ], $request);
- $result = (new ForumPost())->getList((int)$post['page'], (int)$post['pageSize']);
- return app('json')->success($result);
- }
- /**
- * 帖子详情
- * @param Request $request
- */
- public function postDetail(Request $request)
- {
- $post = UtilService::getMore([
- ['id', 0, 'empty', '参数错误'],
- ], $request);
- $detail = (new ForumPost())->getDetail((int)$post['id']);
- if (!$detail) {
- return app('json')->fail('帖子不存在');
- }
- return app('json')->success($detail);
- }
- /**
- * 发布帖子
- * @param Request $request
- */
- public function createPost(Request $request)
- {
- $uid = $request->user['uid'];
- // 检查发帖权限
- if (!$this->checkPostPermission($uid)) {
- return app('json')->fail('您没有发帖权限');
- }
- $postData = UtilService::getMore([
- ['title', '', 'empty', '请填写标题'],
- ['content', '', 'empty', '请填写内容'],
- ['images', []],
- ], $request);
- // 验证标题长度
- if (mb_strlen($postData['title']) > 200) {
- return app('json')->fail('标题不能超过200个字符');
- }
- // 验证内容长度
- if (mb_strlen($postData['content']) < 10) {
- return app('json')->fail('内容不能少于10个字符');
- }
- $result = (new ForumPost())->createPost($uid, $postData);
- if ($result[0]) {
- return app('json')->success($result[1]);
- } else {
- return app('json')->fail($result[1]);
- }
- }
- /**
- * 我的帖子列表
- * @param Request $request
- */
- public function myPosts(Request $request)
- {
- $uid = $request->user['uid'];
- $post = UtilService::getMore([
- ['page', 1],
- ['pageSize', 20],
- ], $request);
- $result = (new ForumPost())->getUserPosts($uid, (int)$post['page'], (int)$post['pageSize']);
- return app('json')->success($result);
- }
- /**
- * 评论列表
- * @param Request $request
- */
- public function commentList(Request $request)
- {
- $post = UtilService::getMore([
- ['post_id', 0, 'empty', '参数错误'],
- ['page', 1],
- ['pageSize', 20],
- ], $request);
- $result = (new ForumComment())->getList((int)$post['post_id'], (int)$post['page'], (int)$post['pageSize']);
- return app('json')->success($result);
- }
- /**
- * 添加评论
- * @param Request $request
- */
- public function addComment(Request $request)
- {
- $uid = $request->user['uid'];
- $postData = UtilService::getMore([
- ['post_id', 0, 'empty', '参数错误'],
- ['content', '', 'empty', '请填写评论内容'],
- ], $request);
- // 验证内容长度
- if (mb_strlen($postData['content']) < 1) {
- return app('json')->fail('评论内容不能为空');
- }
- if (mb_strlen($postData['content']) > 1000) {
- return app('json')->fail('评论内容不能超过1000个字符');
- }
- $result = (new ForumComment())->addComment($uid, (int)$postData['post_id'], $postData['content']);
- if ($result[0]) {
- return app('json')->success($result[1], $result[2] ?? []);
- } else {
- return app('json')->fail($result[1]);
- }
- }
- /**
- * 删除评论
- * @param Request $request
- */
- public function deleteComment(Request $request)
- {
- $uid = $request->user['uid'];
- $post = UtilService::getMore([
- ['id', 0, 'empty', '参数错误'],
- ], $request);
- $result = (new ForumComment())->deleteComment((int)$post['id'], $uid);
- if ($result[0]) {
- return app('json')->success($result[1]);
- } else {
- return app('json')->fail($result[1]);
- }
- }
- /**
- * 我的评论列表
- * @param Request $request
- */
- public function myComments(Request $request)
- {
- $uid = $request->user['uid'];
- $post = UtilService::getMore([
- ['page', 1],
- ['pageSize', 20],
- ], $request);
- $result = (new ForumComment())->getUserComments($uid, (int)$post['page'], (int)$post['pageSize']);
- return app('json')->success($result);
- }
- /**
- * 检查发帖权限
- * @param Request $request
- */
- public function checkPermission(Request $request)
- {
- $uid = $request->user['uid'];
- $hasPermission = $this->checkPostPermission($uid);
- return app('json')->success('查询成功', [
- 'has_permission' => $hasPermission
- ]);
- }
- }
|