NoticeController.class.php 11 KB

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