ChoiceController.class.php 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412
  1. <?php
  2. namespace Api\Controller;
  3. use Common\Controller\ApiController;
  4. class ChoiceController extends ApiController {
  5. public function __construct(){
  6. parent::__construct();
  7. }
  8. //获取精选或社区列表
  9. public function index(){
  10. $lastId = I('last_id',0);
  11. $pageSize = I('page_size',20);
  12. $choice_type = I('choice_type',2);
  13. $choiceId = I('choice_id',0);
  14. $is_user = I('is_user',0);
  15. $is_delete = I('is_delete',1);
  16. $condition = array('t_choice.choice_status'=>3,'t_choice.is_delete'=>$is_delete);
  17. if($choice_type){
  18. $condition['t_choice.choice_type']=$choice_type;
  19. }
  20. if($lastId>0){
  21. $condition['t_choice.choice_id'] = array('LT',$lastId);
  22. }
  23. if($choiceId){
  24. $condition['t_choice.choice_id']=$choiceId;
  25. }
  26. if($is_user){
  27. $condition['t_choice.user_id']=$this->userId;
  28. }
  29. $orderby = 'choice_id desc';
  30. $res = M('choice')->join('left join t_user on t_user.user_id = t_choice.user_id')->join('left join (select choice_id,count(uc_id) as collect from t_user_choices group by choice_id) as a on a.choice_id = t_choice.choice_id')->join('left join (select choice_id,count(cr_id) as reply from t_choice_reply group by choice_id) as b on b.choice_id = t_choice.choice_id')->join('left join (select choice_id,count(cp_id) as praise from t_choice_praise group by choice_id) as c on c.choice_id = t_choice.choice_id')->where($condition)->order($orderby)->group('t_choice.choice_id')->field('t_choice.*,t_user.user_name,t_user.user_name,user_icon,ifnull(a.collect,0) as collect,ifnull(b.reply,0) as reply,ifnull(c.praise,0) as praise')->order('t_choice.choice_id desc')->limit('0,'.$pageSize)->select();
  31. /*
  32. if ($lastId>0){
  33. $data = array('code'=>0,'msg'=>'无更多数据','data'=>array());
  34. $this->returnData($data);exit;
  35. }*/
  36. $praiseInfo = M('choice_praise')->where(array('is_delete'=>1,'user_id'=>$this->userId))->field('choice_id')->select();
  37. $collectInfo = M('user_choices')->where(array('is_delete'=>1,'user_id'=>$this->userId))->field('choice_id')->select();
  38. $praise_arr=array();
  39. $collect_arr=array();
  40. foreach($praiseInfo as $k=>$v){
  41. $praise_arr[]=$v['choice_id'];
  42. }
  43. foreach($collectInfo as $k=>$v){
  44. $collect_arr[]=$v['choice_id'];
  45. }
  46. foreach($res as $k=>$v){
  47. if(in_array($v['choice_id'],$praise_arr)){
  48. $res[$k]['is_praise']=1;
  49. }else{
  50. $res[$k]['is_praise']=0;
  51. }
  52. if(in_array($v['choice_id'],$collect_arr)){
  53. $res[$k]['is_collect']=1;
  54. }else{
  55. $res[$k]['is_collect']=0;
  56. }
  57. $res[$k]['choice_content']=htmlspecialchars_decode($v['choice_content']);
  58. }
  59. $data = array('code'=>0,'msg'=>'','data'=>$res);
  60. $this->returnData($data);exit;
  61. }
  62. //获取精选或社区详情
  63. public function info(){
  64. $choiceId = I('choice_id',0);
  65. $condition = array();
  66. $condition['t_choice.choice_id']=$choiceId;
  67. $orderby = 'choice_id desc';
  68. $res = M('choice')->join('left join t_user on t_user.user_id = t_choice.user_id')->join('left join (select choice_id,count(uc_id) as collect from t_user_choices group by choice_id) as a on a.choice_id = t_choice.choice_id')->join('left join (select choice_id,count(cr_id) as reply from t_choice_reply group by choice_id) as b on b.choice_id = t_choice.choice_id')->join('left join (select choice_id,count(cp_id) as praise from t_choice_praise group by choice_id) as c on c.choice_id = t_choice.choice_id')->where($condition)->order($orderby)->group('t_choice.choice_id')->field('t_choice.*,t_user.user_name,t_user.user_name,user_icon,ifnull(a.collect,0) as collect,ifnull(b.reply,0) as reply,ifnull(c.praise,0) as praise')->order('t_choice.choice_id desc')->select();
  69. if (!count($res)){
  70. $data = array('code'=>1,'msg'=>'社区ID错误');
  71. $this->returnData($data);exit;
  72. }
  73. $praiseInfo = M('choice_praise')->where(array('is_delete'=>1,'user_id'=>$this->userId))->field('choice_id')->select();
  74. $collectInfo = M('user_choices')->where(array('is_delete'=>1,'user_id'=>$this->userId))->field('choice_id')->select();
  75. $praise_arr=array();
  76. $collect_arr=array();
  77. foreach($praiseInfo as $k=>$v){
  78. $praise_arr[]=$v['choice_id'];
  79. }
  80. foreach($collectInfo as $k=>$v){
  81. $collect_arr[]=$v['choice_id'];
  82. }
  83. foreach($res as $k=>$v){
  84. if(in_array($v['choice_id'],$praise_arr)){
  85. $res[$k]['is_praise']=1;
  86. }else{
  87. $res[$k]['is_praise']=0;
  88. }
  89. if(in_array($v['choice_id'],$collect_arr)){
  90. $res[$k]['is_collect']=1;
  91. }else{
  92. $res[$k]['is_collect']=0;
  93. }
  94. $res[$k]['choice_content']=htmlspecialchars_decode($v['choice_content']);
  95. }
  96. $data = array('code'=>0,'msg'=>'','data'=>$res[0]);
  97. $this->returnData($data);exit;
  98. }
  99. //删除我的社区
  100. public function del(){
  101. $choiceId = I('choice_id');
  102. $choiceId = rtrim($choiceId,',');
  103. if (empty($choiceId)){
  104. $data = array('code'=>1,'msg'=>'社区ID错误');
  105. $this->returnData($data);exit;
  106. }
  107. M('choice')->where(array('choice_id'=>array('IN',$choiceId),'user_id'=>$this->userId))->delete();
  108. $data = array('code'=>0,'msg'=>'社区删除成功');
  109. $this->returnData($data);exit;
  110. }
  111. //点赞
  112. public function praise(){
  113. $choiceId = I('choice_id');
  114. if (empty($choiceId)){
  115. $data = array('code'=>1,'msg'=>'ID错误');
  116. $this->returnData($data);exit;
  117. }
  118. $praiseInfo = M('choice_praise')->where(array('choice_id'=>$choiceId,'is_delete'=>1,'user_id'=>$this->userId))->field('cp_id')->find();
  119. if ($praiseInfo!=NULL){
  120. $data = array('code'=>1,'msg'=>'已经点赞过该课程');
  121. $this->returnData($data);exit;
  122. }
  123. $userInfo = M('user')->where(array('user_id'=>$this->userId))->field('*')->find();
  124. $noticeContent = $userInfo['user_name'].'点赞了您的社区!';
  125. $res = M('choice')->where(array('choice_id'=>$choiceId,'is_delete'=>1))->field('user_id,choice_type')->find();
  126. $uid=$res['user_id'];
  127. if($uid){
  128. $reply_content='';
  129. $temp=array('choice_id'=>$choiceId,'reply_content'=>$reply_content,'choice_type'=>$res['choice_type']);
  130. M('Notice')->add(array('ref_user_id'=>$uid,'user_id'=>$this->userId,'notice_flag'=>0,'notice_status'=>1,'notice_type'=>4,'notice_title'=>'点赞消息','notice_content'=>$noticeContent,'operate_dt'=>time(),'extra'=>json_encode($temp)));
  131. M('User')->where(array('user_id'=>$uid))->setInc('praise_notice');
  132. $data = json_encode(array('type'=>4,'msg'=>$noticeContent,'data'=>array('title'=>$noticeContent,'choice_id'=>$choiceId,'choice_content'=>$reply_content)));
  133. $this->umengPush($uid, $data);
  134. }
  135. M('choice_praise')->add(array('choice_id'=>$choiceId,'user_id'=>$this->userId,'operate_dt'=>time()));
  136. $data = array('code'=>0,'msg'=>'课程点赞成功');
  137. $this->returnData($data);exit;
  138. }
  139. //取消点赞
  140. public function praise_cancel(){
  141. $choiceId = I('choice_id');
  142. $choiceId = rtrim($choiceId,',');
  143. if (empty($choiceId)){
  144. $data = array('code'=>1,'msg'=>'ID错误');
  145. $this->returnData($data);exit;
  146. }
  147. M('choice_praise')->where(array('choice_id'=>array('IN',$choiceId),'user_id'=>$this->userId))->delete();
  148. $data = array('code'=>0,'msg'=>'取消点赞成功');
  149. $this->returnData($data);exit;
  150. }
  151. //收藏
  152. public function collect_add(){
  153. $choiceId = I('choice_id');
  154. if (empty($choiceId)){
  155. $data = array('code'=>1,'msg'=>'ID错误');
  156. $this->returnData($data);exit;
  157. }
  158. $collectInfo = M('user_choices')->where(array('choice_id'=>$choiceId,'is_delete'=>1,'user_id'=>$this->userId))->field('uc_id')->find();
  159. if ($collectInfo!=NULL){
  160. $data = array('code'=>1,'msg'=>'已经收藏过该课程');
  161. $this->returnData($data);exit;
  162. }
  163. M('user_choices')->add(array('choice_id'=>$choiceId,'user_id'=>$this->userId,'operate_dt'=>time()));
  164. $data = array('code'=>0,'msg'=>'课程收藏成功');
  165. $this->returnData($data);exit;
  166. }
  167. //取消收藏
  168. public function collect_cancel(){
  169. $choiceId = I('choice_id');
  170. $choiceId = rtrim($choiceId,',');
  171. if (empty($choiceId)){
  172. $data = array('code'=>1,'msg'=>'ID错误');
  173. $this->returnData($data);exit;
  174. }
  175. M('user_choices')->where(array('choice_id'=>array('IN',$choiceId),'user_id'=>$this->userId))->delete();
  176. $data = array('code'=>0,'msg'=>'取消收藏成功');
  177. $this->returnData($data);exit;
  178. }
  179. //收藏列表
  180. public function collect_list(){
  181. $lastId = I('last_id','');
  182. if(!$lastId){
  183. $lastId=10000000;
  184. }
  185. $pageSize = I('page_size',20);
  186. $collect = M('user_choices')->where(array('is_delete'=>1,'user_id'=>$this->userId,'uc_id'=>array('LT',$lastId)))->field('choice_id,uc_id')->order('operate_dt desc')->limit('0,'.$pageSize)->select();
  187. $arr=array();
  188. $arr2=array();
  189. foreach($collect as $k=>$v){
  190. $arr[]=$v['choice_id'];
  191. $arr2[$v['choice_id']]=$v['uc_id'];
  192. }
  193. if(!$arr){
  194. $data = array('code'=>0,'msg'=>'收藏列表为空','data'=>array());
  195. $this->returnData($data);exit;
  196. }
  197. $condition = array('t_choice.is_delete'=>1,'t_choice.choice_id'=>array('IN',implode(',',$arr)));
  198. $res = M('choice')->join('left join t_user on t_user.user_id = t_choice.user_id')->join('left join (select choice_id,count(uc_id) as collect from t_user_choices group by choice_id) as a on a.choice_id = t_choice.choice_id')->join('left join (select choice_id,count(cr_id) as reply from t_choice_reply group by choice_id) as b on b.choice_id = t_choice.choice_id')->join('left join (select choice_id,count(cp_id) as praise from t_choice_praise group by choice_id) as c on c.choice_id = t_choice.choice_id')->where($condition)->group('t_choice.choice_id')->field('t_choice.*,t_user.user_name,t_user.user_icon,ifnull(a.collect,0) as collect,ifnull(b.reply,0) as reply,ifnull(c.praise,0) as praise')->select();
  199. $praiseInfo = M('choice_praise')->where(array('is_delete'=>1,'user_id'=>$this->userId))->field('choice_id')->select();
  200. $collectInfo = M('user_choices')->where(array('is_delete'=>1,'user_id'=>$this->userId))->field('choice_id')->select();
  201. $praise_arr=array();
  202. $collect_arr=array();
  203. foreach($praiseInfo as $k=>$v){
  204. $praise_arr[]=$v['choice_id'];
  205. }
  206. foreach($collectInfo as $k=>$v){
  207. $collect_arr[]=$v['choice_id'];
  208. }
  209. foreach($res as $k=>$v){
  210. $res[$k]['uc_id']=$arr2[$v['choice_id']];
  211. if(in_array($v['choice_id'],$praise_arr)){
  212. $res[$k]['is_praise']=1;
  213. }else{
  214. $res[$k]['is_praise']=0;
  215. }
  216. if(in_array($v['choice_id'],$collect_arr)){
  217. $res[$k]['is_collect']=1;
  218. }else{
  219. $res[$k]['is_collect']=0;
  220. }
  221. $res[$k]['choice_content']=htmlspecialchars_decode($v['choice_content']);
  222. }
  223. $data = array('code'=>0,'msg'=>'','data'=>$res);
  224. $this->returnData($data);exit;
  225. }
  226. //评论列表
  227. public function reply_list(){
  228. $choiceId = I('choice_id');
  229. if (empty($choiceId)){
  230. $data = array('code'=>1,'msg'=>'精选ID错误');
  231. $this->returnData($data);exit;
  232. }
  233. $lastId = I('last_id','');
  234. if(!$lastId){
  235. $lastId=10000000;
  236. }
  237. $pageSize = I('page_size',20);
  238. $res = M('choice_reply')->join('left join t_user as a on a.user_id = t_choice_reply.user_id')->join('left join t_user as b on b.user_id = t_choice_reply.reply_user_id')->join('left join t_choice_reply_praise on t_choice_reply_praise.cr_id = t_choice_reply.cr_id')->where(array('t_choice_reply.is_delete'=>1,'t_choice_reply.choice_id'=>$choiceId,'t_choice_reply.cr_id'=>array('LT',$lastId)))->group('t_choice_reply.cr_id')->field('t_choice_reply.*,a.user_name,a.user_icon,b.user_name as reply_user_name,count(t_choice_reply_praise.cr_id) as praise')->order('t_choice_reply.operate_dt desc')->limit('0,'.$pageSize)->select();
  239. foreach($res as $k=>$v){
  240. if(!$v['cr_id']){
  241. unset($res[$k]);
  242. }
  243. }
  244. $praiseInfo = M('choice_reply_praise')->where(array('is_delete'=>1,'user_id'=>$this->userId))->field('cr_id')->select();
  245. $praise_arr=array();
  246. foreach($praiseInfo as $k=>$v){
  247. $praise_arr[]=$v['cr_id'];
  248. }
  249. foreach($res as $k=>$v){
  250. if(in_array($v['cr_id'],$praise_arr)){
  251. $res[$k]['is_praise']=1;
  252. }else{
  253. $res[$k]['is_praise']=0;
  254. }
  255. }
  256. $data = array('code'=>0,'msg'=>'','data'=>$res);
  257. $this->returnData($data);exit;
  258. }
  259. //评论点赞
  260. public function reply_praise(){
  261. $cr_id = I('cr_id');
  262. if (empty($cr_id)){
  263. $data = array('code'=>1,'msg'=>'评论ID错误');
  264. $this->returnData($data);exit;
  265. }
  266. $replyInfo = M('choice_reply')->where(array('cr_id'=>$cr_id,'is_delete'=>1))->field('cr_id,choice_id')->find();
  267. if (!$replyInfo){
  268. $data = array('code'=>1,'msg'=>'该评论不存在');
  269. $this->returnData($data);exit;
  270. }
  271. $choice_reply_praise = M('choice_reply_praise')->where(array('cr_id'=>$cr_id,'is_delete'=>1,'user_id'=>$this->userId))->field('cr_id')->find();
  272. if ($choice_reply_praise!=NULL){
  273. $data = array('code'=>1,'msg'=>'已经点赞过该评论');
  274. $this->returnData($data);exit;
  275. }
  276. $choiceId=$replyInfo['choice_id'];
  277. $userInfo = M('user')->where(array('user_id'=>$this->userId))->field('*')->find();
  278. $noticeContent = $userInfo['user_name'].'点赞了您的评论!';
  279. $res = M('choice')->where(array('choice_id'=>$choiceId,'is_delete'=>1))->field('user_id,choice_type')->find();
  280. $uid=$res['user_id'];
  281. if($uid){
  282. $reply_content=$replyInfo['reply_content'];
  283. $temp=array('choice_id'=>$choiceId,'reply_content'=>$reply_content,'choice_type'=>$res['choice_type']);
  284. M('Notice')->add(array('ref_user_id'=>$uid,'user_id'=>$this->userId,'notice_flag'=>0,'notice_status'=>1,'notice_type'=>4,'notice_title'=>'点赞消息','notice_content'=>$noticeContent,'operate_dt'=>time(),'extra'=>json_encode($temp)));
  285. M('User')->where(array('user_id'=>$uid))->setInc('praise_notice');
  286. $data = json_encode(array('type'=>4,'msg'=>$noticeContent,'data'=>array('title'=>$noticeContent,'choice_id'=>$choiceId,'choice_content'=>$reply_content)));
  287. $this->umengPush($uid, $data);
  288. }
  289. M('choice_reply_praise')->add(array('cr_id'=>$cr_id,'user_id'=>$this->userId,'operate_dt'=>time()));
  290. $data = array('code'=>0,'msg'=>'评论点赞成功');
  291. $this->returnData($data);exit;
  292. }
  293. //取消评论点赞
  294. public function reply_praise_cancel(){
  295. $cr_id = I('cr_id');
  296. $cr_id = rtrim($cr_id,',');
  297. if (empty($cr_id)){
  298. $data = array('code'=>1,'msg'=>'ID错误');
  299. $this->returnData($data);exit;
  300. }
  301. M('choice_reply_praise')->where(array('cr_id'=>array('IN',$cr_id),'user_id'=>$this->userId))->delete();
  302. $data = array('code'=>0,'msg'=>'取消点赞成功');
  303. $this->returnData($data);exit;
  304. }
  305. //编辑社区内容
  306. public function edit(){
  307. $choiceId = I('choice_id','');
  308. $choiceName = I('choice_name','');
  309. $choice_img = I('choice_img','');
  310. $choice_content = I('choice_content','');
  311. $is_delete = I('is_delete','');
  312. $userInfo = M('user')->where(array('user_id'=>$this->userId))->field('*')->find();
  313. if($userInfo['forbidden']>time()){
  314. $data = array('code'=>1,'msg'=>'用户被禁言','data'=>array());
  315. $this->returnData($data);exit;
  316. }
  317. if (mb_strlen($choiceName,'UTF8')<2 || mb_strlen($choiceName,'UTF8')>14){
  318. $data = array('code'=>1,'msg'=>'社区名称2到14个汉字','data'=>array());
  319. $this->returnData($data);exit;
  320. }
  321. if ( mb_strlen($choice_content,'UTF8')>2000){
  322. $data = array('code'=>1,'msg'=>'社区内容限制2000个汉字','data'=>array());
  323. $this->returnData($data);exit;
  324. }
  325. $res = M('choice')->where(array('choice_name'=>$choiceName,'is_delete'=>1))->field('choice_id')->find();
  326. //新增
  327. if (!$choiceId && $res!=NULL){
  328. $data = array('code'=>1,'msg'=>'社区名称重复','data'=>array());
  329. $this->returnData($data);exit;
  330. }
  331. //更新
  332. if ($choiceId && $res!=NULL &&$choiceId!=$res['choice_id']){
  333. $data = array('code'=>1,'msg'=>'社区名称重复','data'=>array());
  334. $this->returnData($data);exit;
  335. }
  336. if (empty($choiceId)){
  337. if(!$is_delete){
  338. $is_delete=1;
  339. }
  340. M('choice')->add(array('user_id'=>$this->userId,'choice_source'=>2,'choice_status'=>3,'choice_type'=>1,'choice_img'=>$choice_img,'choice_content'=>$choice_content,'choice_name'=>$choiceName,'operate_dt'=>time(),'is_delete'=>$is_delete));
  341. }else{
  342. $arr=array('choice_img'=>$choice_img,'choice_content'=>$choice_content,'choice_name'=>$choiceName,'operate_dt'=>time());
  343. if($is_delete){
  344. $arr['is_delete']=$is_delete;
  345. }
  346. M('choice')->where(array('choice_id'=>$choiceId))->save($arr);
  347. }
  348. $data = array('code'=>0,'msg'=>'社区发布成功');
  349. $this->returnData($data);exit;
  350. }
  351. //编辑社区评论
  352. public function reply_edit(){
  353. $choiceId = I('choice_id','');
  354. $reply_user_id = I('reply_user_id','0');
  355. $reply_content = I('reply_content','');
  356. $userInfo = M('user')->where(array('user_id'=>$this->userId))->field('*')->find();
  357. if($userInfo['forbidden']>time()){
  358. $data = array('code'=>1,'msg'=>'用户被禁言','data'=>array());
  359. $this->returnData($data);exit;
  360. }
  361. if ( mb_strlen($reply_content,'UTF8')>140){
  362. $data = array('code'=>1,'msg'=>'评论内容限制140个汉字','data'=>array());
  363. $this->returnData($data);exit;
  364. }
  365. M('choice_reply')->add(array('choice_id'=>$choiceId,'user_id'=>$this->userId,'reply_user_id'=>$reply_user_id,'reply_content'=>$reply_content,'operate_dt'=>time()));
  366. $noticeContent = $userInfo['user_name'].'评论了您的社区!';
  367. $res = M('choice')->where(array('choice_id'=>$choiceId,'is_delete'=>1))->field('user_id,choice_type')->find();
  368. $uid=$res['user_id'];
  369. if($uid){
  370. $temp=array('choice_id'=>$choiceId,'reply_content'=>$reply_content,'choice_type'=>$res['choice_type']);
  371. M('Notice')->add(array('ref_user_id'=>$uid,'user_id'=>$this->userId,'notice_flag'=>0,'notice_status'=>1,'notice_type'=>3,'notice_title'=>'评论消息','notice_content'=>$noticeContent,'operate_dt'=>time(),'extra'=>json_encode($temp)));
  372. M('User')->where(array('user_id'=>$uid))->setInc('reply_notice');
  373. $data = json_encode(array('type'=>3,'msg'=>$noticeContent,'data'=>array('title'=>$noticeContent,'choice_id'=>$choiceId,'choice_content'=>$reply_content)));
  374. $this->umengPush($uid, $data);
  375. }
  376. $data = array('code'=>0,'msg'=>'评论发布成功');
  377. $this->returnData($data);exit;
  378. }
  379. //推送接口
  380. public function push(){
  381. $uid = I('uid','0');
  382. $data= I('data','{}');
  383. $temp=base64_decode($data);
  384. $this->umengPush($uid, $temp);
  385. $data = array('code'=>0,'msg'=>'推送成功');
  386. $this->returnData($data);exit;
  387. }
  388. }