Forum.php 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253
  1. <?php
  2. namespace app\api\controller;
  3. use app\admin\controller\User;
  4. use app\common\model\DatumIntro;
  5. use app\common\model\ForumReply;
  6. use app\common\model\PlatformComment;
  7. use app\common\model\PlatformSwitch;
  8. use app\common\model\UserCollect;
  9. use app\common\model\UserForum;
  10. use app\common\model\UserLevelRank;
  11. use app\common\model\UserSearch;
  12. use library\tools\Data;
  13. /**
  14. * @title 论坛
  15. * @controller Forum
  16. * @group base
  17. */
  18. class Forum extends Base
  19. {
  20. // 需要登录的
  21. protected $need_login = [];
  22. public function initialize(){
  23. parent::initialize();
  24. parent::setUid();
  25. }
  26. /**
  27. * @title 获取论坛列表
  28. * @desc 获取论坛列表
  29. * @author qc
  30. * @method GET
  31. * @url /api/Forum/getForumList
  32. * @header name:Authorization require:1 desc:Token
  33. * @param name:is_tj type:int default:0 desc:是否推荐0否1是
  34. * @param name:title type:string default:-- desc:标题
  35. * @param name:page type:int default:0 desc:页数
  36. * @param name:page_num type:int default:20 desc:每页数
  37. * @param name:sort_type type:int default:1 desc:1默认2时间升序3时间降序
  38. * @return name:title type:string default:-- desc:标题
  39. * @return name:content type:string default:0 desc:内容
  40. * @return name:level type:int default:-- desc:vip等级id
  41. * @return name:label type:string default:-- desc:标签
  42. * @return name:name type:string default:-- desc:发布用户
  43. * @return name:headimg type:string default:-- desc:发布用户头像
  44. * @return name:browse_num type:int default:-- desc:浏览量
  45. * @return name:reply_num type:int default:-- desc:回答量
  46. */
  47. public function getForumList()
  48. {
  49. $sel_where = [];
  50. $title = input('get.title');
  51. $label = input('get.label');
  52. $is_tj = input('get.is_tj');
  53. $sort_type = input('get.sort_type',1);
  54. $sel_where[] = ['f.is_deleted','=',0];
  55. if($title) $sel_where[] = ['f.title','like','%'.$title.'%'];
  56. if($label) $sel_where[] = ['f.label','like','%'.$label.'%'];
  57. $order = 'f.sort desc ,f.id desc';
  58. if($sort_type == 2)$order = 'f.id asc';
  59. if($sort_type == 3)$order = 'f.id desc';
  60. if($title && $this->user_id) UserSearch::saveSearchTitle($this->user_id,$title,6);
  61. $user_level = UserLevelRank::getUserVip($this->user_id);
  62. $where_str = 'f.level >= '.$user_level;
  63. if($is_tj) {
  64. $search_log = UserSearch::getSearchTitle($this->user_id,6);
  65. $search_arr = [];
  66. foreach ($search_log as $t){
  67. $search_arr[] = " f.title like '".'%'.$t."%'" .' ';
  68. }
  69. if(!empty($search_arr)) $where_str = implode(' OR ',$search_arr);
  70. }
  71. $list = UserForum::where($sel_where)
  72. ->alias('f')
  73. ->field('f.id,f.title,f.content,f.level,f.browse_num,f.create_at,u.name,u.headimg, IFNULL( (SELECT count(DISTINCT r.user_id) FROM dd_forum_reply as r WHERE f.id=r.forum_id group by user_id ),0 ) as reply_num')
  74. ->leftJoin('store_member u','u.id = f.user_id')
  75. ->where($where_str)
  76. ->limit($this->off_set,$this->page_num)
  77. ->order($order)
  78. ->select()->toArray();
  79. array_walk($list,function (&$v,$k)
  80. {
  81. });
  82. $this->success('ok',['list'=>$list]);
  83. }
  84. /**
  85. * @title 获取论坛详情
  86. * @desc 获取论坛详情
  87. * @author qc
  88. * @method GET
  89. * @url /api/Forum/getForumInfo
  90. * @header name:Authorization require:1 desc:Token
  91. * @param name:id type:string default:-- desc:论坛记录id
  92. * @return name:title type:string default:-- desc:标题
  93. * @return name:content type:string default:0 desc:内容
  94. * @return name:level type:int default:-- desc:vip等级id
  95. * @return name:label type:string default:-- desc:标签
  96. * @return name:name type:string default:-- desc:发布用户
  97. * @return name:headimg type:string default:-- desc:发布用户头像
  98. * @return name:browse_num type:int default:-- desc:浏览量
  99. * @return name:is_collect type:int default:-- desc:是否关注【0否1是】
  100. * @return name:switch_open type:int default:-- desc:开关是否开启【0否1是】
  101. */
  102. public function getForumInfo(){
  103. $id = input('get.id');
  104. $user_level = UserLevelRank::getUserVip($this->user_id);
  105. $detail = UserForum::where('id',$id)
  106. ->alias('f')
  107. ->field('f.id,f.title,f.content,f.level,f.browse_num,f.create_at,u.name,u.headimg,IFNULL( (SELECT count(DISTINCT r.user_id) FROM dd_forum_reply as r WHERE f.id=r.forum_id group by user_id ),0 ) as reply_num')
  108. ->leftJoin('store_member u','u.id = f.user_id')
  109. ->find()->toArray();
  110. if($detail['is_deleted']) $this->error('改论坛已删除');
  111. if($detail['level'] > $user_level) $this->error('用户等级不足');
  112. $detail['is_collect'] = UserCollect::checkCollectByType($this->user_id,5,$detail['id']);
  113. $detail['switch_open'] = PlatformSwitch::checkSwitch($this->user_id,5,$detail['id']);
  114. UserForum::where('id',$id)->setInc('browse_num');// 增加浏览量
  115. $this->success('ok',['detail'=>$detail]);
  116. }
  117. /**
  118. * @title 关注||取消关注
  119. * @desc 关注||取消关注
  120. * @author qc
  121. * @method POST
  122. * @url /api/Forum/forumCollect
  123. * @header name:Authorization require:1 desc:Token
  124. * @param name:id type:int require:1 default:-- desc:论坛id
  125. * @param name:status type:int default:0 desc:收藏状态(0取消关注【未关注】,1关注)
  126. */
  127. public function forumCollect()
  128. {
  129. $coll_status = UserCollect::plateCollect($this->user_id,5,input('post.id',0),0);
  130. $coll_status ? $this->success('关注成功',['status'=>1]) : $this->success('取消关注成功',['status'=>0]);
  131. }
  132. /**
  133. * @title 开启||关闭通知开关
  134. * @desc 开启||关闭通知开关
  135. * @author qc
  136. * @method POST
  137. * @url /api/Forum/forumSwitch
  138. * @header name:Authorization require:1 desc:Token
  139. * @param name:id type:int require:1 default:-- desc:论坛id
  140. * @param name:status type:int default:0 desc:收藏状态(0取消开启【未开启】,1开启)
  141. */
  142. public function forumSwitch()
  143. {
  144. $switch_status = PlatformSwitch::userSwitch($this->user_id,5,input('post.id',0));
  145. $switch_status ? $this->success('开启成功',['status'=>1]) : $this->success('关闭成功',['status'=>0]);
  146. }
  147. /**
  148. * @title 论坛回复
  149. * @desc 论坛回复
  150. * @author qc
  151. * @method POST
  152. * @url /api/Forum/replyForum
  153. * @header name:Authorization require:1 desc:Token
  154. * @param name:id type:int default:-- desc:论坛id
  155. * @param name:content type:string default:-- desc:内容
  156. */
  157. public function replyForum()
  158. {
  159. $id = input('post.id');
  160. $content = input('post.content');
  161. $issue_user = UserForum::where('id',$id)->value('user_id');
  162. ForumReply::create(['user_id'=>$this->user_id,'content'=>$content,'issue_user'=>$issue_user,'forum_id'=>$id]);
  163. $this->success('回复成功');
  164. }
  165. /**
  166. * @title 论坛回复列表
  167. * @desc 论坛回复列表
  168. * @author qc
  169. * @method POST
  170. * @url /api/Forum/getReplyList
  171. * @header name:Authorization require:1 desc:Token
  172. * @param name:forum_id type:int default:0 desc:论坛记录id
  173. * @param name:page type:int default:0 desc:页数
  174. * @param name:page_num type:int default:20 desc:每页数
  175. * @return name:id type:int default:-- desc:论坛回复id
  176. * @return name:content type:string default:-- desc:内容
  177. */
  178. public function getReplyList()
  179. {
  180. }
  181. /**
  182. * @title 对论坛回复进行评论
  183. * @desc 对论坛回复进行评论
  184. * @author qc
  185. * @method POST
  186. * @url /api/Forum/commentReply
  187. * @header name:Authorization require:1 desc:Token
  188. * @param name:id type:int default:-- desc:回复的id
  189. * @param name:content type:string default:-- desc:内容
  190. */
  191. public function commentReply()
  192. {
  193. }
  194. /**
  195. * @title 用户发布论坛
  196. * @desc 用户发布论坛
  197. * @author qc
  198. * @method POST
  199. * @url /api/Forum/userReferForum
  200. * @header name:Authorization require:1 desc:Token
  201. * @param name:title type:string default:-- desc:标题
  202. * @param name:content type:string default:-- desc:内容
  203. * @param name:label type:string default:-- desc:论坛标签id(多个用逗号隔开)
  204. */
  205. public function userReferForum()
  206. {
  207. $title = input('post.title');
  208. $content = input('post.content');
  209. $label = input('post.label');
  210. $data = [
  211. 'title' => $title,
  212. 'user_id' => $this->user_id,
  213. 'content' => $content,
  214. 'label' => $label,
  215. 'level' => UserLevelRank::getUserVip($this->user_id),
  216. ];
  217. UserForum::create($data);
  218. $this->success('发布成功');
  219. }
  220. /**
  221. * @title 用户删除论坛记录
  222. * @desc 用户删除论坛记录
  223. * @author qc
  224. * @method POST
  225. * @url /api/Forum/delForum
  226. * @header name:Authorization require:1 desc:Token
  227. * @param name:id type:int default:-- desc:id
  228. */
  229. public function delForum(){
  230. UserForum::where(['user_id'=>$this->user_id,'id'=>input('post.id')])->delete();
  231. $this->success('删除成功');
  232. }
  233. }