NoticeController.class.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  1. <?php
  2. namespace Api\Controller;
  3. use Common\Controller\ApiController;
  4. class NoticeController 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',15);
  12. $where='notice_type=0 and (ref_user_id='.$this->userId.' or (ref_user_id=0 and notice_title="系统消息"))';
  13. if ($lastId>0){
  14. $where='notice_id <'.$lastId.' and '.$where;
  15. }
  16. M('User')->where(array('user_id'=>$this->userId))->save(array('sys_notice'=>0));
  17. $res = M('Notice')->where($where)->order('notice_id desc')->field('extra,notice_id,record_id,notice_title,notice_status,notice_flag,notice_type,notice_content,operate_dt')->select();
  18. foreach ($res as $key=>$r){
  19. $res[$key]['extra']=json_decode($r['extra'],1);
  20. if(!$res[$key]['extra']){
  21. $res[$key]['extra']=null;
  22. }
  23. }
  24. $data = array('code'=>0,'msg'=>'','data'=>$res);
  25. $this->returnData($data);exit;
  26. }
  27. //评论消息
  28. public function reply(){
  29. $lastId = I('last_id',0);
  30. $pageSize = I('page_size',20);
  31. $condition = array('notice_type'=>3,'ref_user_id'=>array('like',array($this->userId,'0'),'OR'),);
  32. if ($lastId>0){
  33. $condition['notice_id'] = array('LT',$lastId);
  34. }
  35. M('User')->where(array('user_id'=>$this->userId))->save(array('reply_notice'=>0));
  36. $res = M('Notice')->where($condition)->order('notice_id desc')->field('extra,user_id,notice_id,record_id,notice_title,notice_status,notice_flag,notice_type,notice_content,operate_dt')->select();
  37. foreach ($res as $key=>$r){
  38. $res[$key]['extra']=json_decode($r['extra'],1);
  39. if(!$res[$key]['extra']){
  40. $res[$key]['extra']=null;
  41. }
  42. $choiceId=$res[$key]['extra']['choice_id'];
  43. $info = M('choice')->where(array('choice_id'=>$choiceId))->field('*')->find();
  44. $res[$key]['extra']['choice_content']=mb_substr(strip_tags(htmlspecialchars_decode($info['choice_content'])),0,200,'utf-8');
  45. $userList = array();
  46. $info = M('User')->join(' u LEFT JOIN t_user_level ul ON u.user_level=ul.level_id')->where(array('user_id'=>$r['user_id']))->field('user_id,user_phone,user_name,user_level,user_sex,user_icon,user_birthdate,user_score,user_city,user_province,"" as user_nickname,ul.level_name')->find();
  47. if ($info==NULL){
  48. continue;
  49. }else{
  50. $res[$key]['user_id']=$info['user_id'];
  51. $res[$key]['user_sex']=$info['user_sex'];
  52. $res[$key]['user_score'] = $info['user_score'];
  53. $res[$key]['user_icon']=$info['user_icon'];
  54. $res[$key]['user_city']=$info['user_city'];
  55. $res[$key]['level_name']=$info['level_name'];
  56. $res[$key]['user_province']=$info['user_province'];
  57. $res[$key]['user_birthdate']=$info['user_birthdate'];
  58. $res[$key]['user_name'] = $info['user_name'];
  59. $res[$key]['user_nickname'] = $info['user_nickname'];
  60. }
  61. }
  62. $data = array('code'=>0,'msg'=>'','data'=>$res);
  63. $this->returnData($data);exit;
  64. }
  65. //点赞消息
  66. public function praise(){
  67. $lastId = I('last_id',0);
  68. $pageSize = I('page_size',20);
  69. $condition = array('notice_type'=>4,'ref_user_id'=>array('like',array($this->userId,'0'),'OR'),);
  70. if ($lastId>0){
  71. $condition['notice_id'] = array('LT',$lastId);
  72. }
  73. M('User')->where(array('user_id'=>$this->userId))->save(array('praise_notice'=>0));
  74. $res = M('Notice')->where($condition)->order('notice_id desc')->field('extra,user_id,notice_id,record_id,notice_title,notice_status,notice_flag,notice_type,notice_content,operate_dt')->select();
  75. foreach ($res as $key=>$r){
  76. $res[$key]['extra']=json_decode($r['extra'],1);
  77. if(!$res[$key]['extra']){
  78. $res[$key]['extra']=null;
  79. }
  80. $choiceId=$res[$key]['extra']['choice_id'];
  81. $info = M('choice')->where(array('choice_id'=>$choiceId))->field('*')->find();
  82. //$res[$key]['extra']['choice_content']=mb_substr($info['choice_content'],0,200);
  83. $res[$key]['extra']['choice_content']=mb_substr(strip_tags(htmlspecialchars_decode($info['choice_content'])),0,200,'utf-8');
  84. $userList = array();
  85. $info = M('User')->join(' u LEFT JOIN t_user_level ul ON u.user_level=ul.level_id')->where(array('user_id'=>$r['user_id']))->field('user_id,user_phone,user_name,user_level,user_sex,user_icon,user_birthdate,user_score,user_city,user_province,"" as user_nickname,ul.level_name')->find();
  86. if ($info==NULL){
  87. continue;
  88. }else{
  89. $res[$key]['user_id']=$info['user_id'];
  90. $res[$key]['user_sex']=$info['user_sex'];
  91. $res[$key]['user_score'] = $info['user_score'];
  92. $res[$key]['user_icon']=$info['user_icon'];
  93. $res[$key]['user_city']=$info['user_city'];
  94. $res[$key]['level_name']=$info['level_name'];
  95. $res[$key]['user_province']=$info['user_province'];
  96. $res[$key]['user_birthdate']=$info['user_birthdate'];
  97. $res[$key]['user_name'] = $info['user_name'];
  98. $res[$key]['user_nickname'] = $info['user_nickname'];
  99. }
  100. }
  101. $data = array('code'=>0,'msg'=>'','data'=>$res);
  102. $this->returnData($data);exit;
  103. }
  104. //好友消息
  105. public function user(){
  106. $lastId = I('last_id',0);
  107. $pageSize = I('page_size',15);
  108. $condition = array('ref_user_id'=>$this->userId,'notice_type'=>array('IN',array(1,2)));
  109. if ($lastId>0){
  110. $condition['notice_id'] = array('LT',$lastId);
  111. }else{
  112. M('User')->where(array('user_id'=>$this->userId))->save(array('friend_notice'=>0));
  113. }
  114. $res = M('Notice')->where($condition)->order('notice_id desc')->field('notice_id,record_id,notice_title,notice_status,notice_flag,notice_type,notice_content,extra,user_id,ref_user_id,operate_dt')->select();
  115. foreach ($res as $k=>$r){
  116. if ($r['user_id']==0){
  117. }
  118. $fields = 'user_name,user_icon';
  119. $info = M('User')->where(array('user_id'=>$r['user_id']))->field($fields)->find();
  120. if ($info==NULL){
  121. $res[$k]['user_icon']='';
  122. $res[$k]['user_name'] = '';
  123. }else{
  124. $res[$k]['user_icon']=$info['user_icon'];
  125. $res[$k]['user_name'] = $info['user_name'];
  126. }
  127. $res[$k]['extra']=json_decode($res[$k]['extra'],1);
  128. if(!$res[$k]['extra']){
  129. $res[$k]['extra']=null;
  130. }
  131. }
  132. $data = array('code'=>0,'msg'=>'','data'=>$res);
  133. $this->returnData($data);exit;
  134. }
  135. //点赞消息列表
  136. public function share(){
  137. //$this->userId=1000001;
  138. $lastId = I('last_id',0);
  139. $pageSize = I('page_size',10);
  140. $condition = array('s.user_id'=>$this->userId,'share_status'=>1);
  141. if ($lastId>0){
  142. $condition['sw_id'] = array('LT',$lastId);
  143. }else{
  144. M('User')->where(array('user_id'=>$this->userId))->save(array('zan_notice'=>0));
  145. }
  146. $field = 'su.user_id,su.operate_dt,s.share_id,s.share_content,su.sw_id';
  147. $join = array(' su LEFT JOIN t_share s ON su.share_id = s.share_id');
  148. $res = M('ShareUser')->join($join)->where($condition)->order('sw_id desc')->limit($pageSize)->field($field)->select();
  149. $userNicknameArr = $this->getUserNickname();
  150. foreach ($res as $key=>$r){
  151. $userList = array();
  152. $info = M('User')->join(' u LEFT JOIN t_user_level ul ON u.user_level=ul.level_id')->where(array('user_id'=>$r['user_id']))->field('user_id,user_phone,user_name,user_level,user_sex,user_icon,user_birthdate,user_score,user_city,user_province,"" as user_nickname,ul.level_name')->find();
  153. if ($info==NULL){
  154. continue;
  155. }else{
  156. $res[$key]['user_id']=$info['user_id'];
  157. $res[$key]['user_sex']=$info['user_sex'];
  158. $res[$key]['user_score'] = $info['user_score'];
  159. $res[$key]['user_icon']=$info['user_icon'];
  160. $res[$key]['user_city']=$info['user_city'];
  161. $res[$key]['level_name']=$info['level_name'];
  162. $res[$key]['user_province']=$info['user_province'];
  163. $res[$key]['user_birthdate']=$info['user_birthdate'];
  164. $res[$key]['user_name'] = $info['user_name'];
  165. $res[$key]['user_nickname'] = $info['user_nickname'];
  166. }
  167. }
  168. $data = array('code'=>0,'msg'=>'','data'=>$res);
  169. $this->returnData($data);exit;
  170. }
  171. //获取单条消息,点赞列表
  172. public function info(){
  173. $shareId = I('share_id');
  174. $cons['s.share_id'] = $shareId;
  175. $res = M('Share')->join(' s LEFT JOIN t_user u ON s.user_id=u.user_id LEFT JOIN t_course c ON s.course_id=c.course_id')
  176. ->where($cons)->field('share_id,s.user_id,share_content,s.course_id,c.course_name,share_type as course_flag,s.operate_dt,u.user_name,u.user_icon')
  177. ->order('share_id desc')->select();
  178. if ($res == NULL){
  179. $data = array('code'=>0,'msg'=>'', 'data'=>'');
  180. $this->returnData($data);exit;
  181. }
  182. $userNicknameArr = $this->getUserNickname();
  183. foreach ($res as $k=>$r){
  184. //获取好友点赞
  185. $shareRes = M('ShareUser')->join('sw LEFT JOIN t_user u ON sw.user_id=u.user_id')
  186. ->where(array('share_id'=>$r['share_id']))
  187. ->field('sw.user_id,u.user_icon,u.user_name')->select();
  188. foreach ($shareRes as $key=>$item){
  189. if(isset($userNicknameArr[$item['user_id']])){
  190. $shareRes[$key]['user_nickname'] = $userNicknameArr[$item['user_id']];
  191. }else{
  192. $shareRes[$key]['user_nickname'] = '';
  193. }
  194. $shareRes[$key]['user_icon'] = empty($item['user_icon'])?'':$item['user_icon'];
  195. $shareRes[$key]['user_name'] = empty($item['user_name'])?'':$item['user_name'];
  196. }
  197. $res[$k]['user_list'] = $shareRes;
  198. }
  199. $data = array('code'=>0,'msg'=>'', 'data'=>$res);
  200. $this->returnData($data);exit;
  201. }
  202. //处理消息
  203. public function readNotice() {
  204. $noticeId = I('notice_id');
  205. $info = M('Notice')->where(array('notice_id'=>$noticeId))->field('notice_id')->find();
  206. if ($info==NULL){
  207. $data = array('code'=>1,'msg'=>'消息ID错误');
  208. $this->returnData($data);exit;
  209. }
  210. M('Notice')->where(array('notice_id'=>$noticeId))->save(array('notice_status'=>2));
  211. $data = array('code'=>0,'msg'=>'此消息已处理');
  212. $this->returnData($data);exit;
  213. }
  214. //删除消息
  215. public function del(){
  216. $noticeId = I('notice_id');
  217. $info = M('Notice')->where(array('notice_id'=>$noticeId))->field('notice_id')->find();
  218. if ($info==NULL){
  219. $data = array('code'=>0,'msg'=>'此消息已删除');
  220. $this->returnData($data);exit;
  221. }
  222. M('Notice')->where(array('notice_id'=>$noticeId))->delete();
  223. $data = array('code'=>0,'msg'=>'此消息已处理');
  224. $this->returnData($data);exit;
  225. }
  226. }