FansController.class.php 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. <?php
  2. namespace Api\Controller;
  3. use Common\Controller\ApiController;
  4. class FansController extends ApiController {
  5. public function __construct(){
  6. parent::__construct();
  7. }
  8. //用户关注的所有人的列表
  9. public function index(){
  10. $userId = I('uid');
  11. $lastId = I('last_id',0);
  12. $pageSize = I('page_size',20);
  13. $user_name = I('user_name');
  14. if (empty($userId)){
  15. $userId = $this->userId;
  16. }
  17. $res = $this->fans($userId, $lastId, $pageSize, $user_name );
  18. /* if ($res==NULL){
  19. $res = array(new \stdClass());
  20. } */
  21. if ($res==NULL && $lastId>0){
  22. $data = array('code'=>0,'msg'=>'无更多数据','data'=>array());
  23. $this->returnData($data);exit;
  24. }
  25. $data = array('code'=>0,'msg'=>'','data'=>$res,);
  26. $this->returnData($data);exit;
  27. }
  28. //关注此用户的所有人的列表
  29. public function user(){
  30. $userId = I('uid');
  31. $lastId = I('last_id',0);
  32. $pageSize = I('page_size',20);
  33. $user_name = I('user_name');
  34. if (empty($userId)){
  35. $userId = $this->userId;
  36. }
  37. $res = $this->fans_user($userId, $lastId, $pageSize, $user_name );
  38. /* if ($res==NULL){
  39. $res = array(new \stdClass());
  40. } */
  41. if ($res==NULL && $lastId>0){
  42. $data = array('code'=>0,'msg'=>'无更多数据','data'=>array());
  43. $this->returnData($data);exit;
  44. }
  45. $data = array('code'=>0,'msg'=>'','data'=>$res,);
  46. $this->returnData($data);exit;
  47. }
  48. //用户关注的所有人的动态
  49. public function course(){
  50. $lastId = I('last_id',0);
  51. $pageSize = I('page_size',20);
  52. $userRes = $this->fans($this->userId, $lastId, $pageSize);
  53. if ($userRes==NULL && $lastId>0){
  54. $data = array('code'=>0,'msg'=>'无更多数据','data'=>array());
  55. $this->returnData($data);exit;
  56. }
  57. $fansArr = array();
  58. $userIdArr = array();
  59. foreach ($userRes as $row){
  60. $userIdArr[] = $row['user_id'];
  61. $fansArr[$row['user_id']] = $row['fans_id'];
  62. }
  63. if (empty($userIdArr)){
  64. $data = array('code'=>0,'msg'=>'','data'=>array());
  65. $this->returnData($data);exit;
  66. }
  67. $condition = array('course_status'=>3,'course_flag'=>1,'is_show'=>1);
  68. $condition['user_id']=array('IN',$userIdArr);
  69. $orderby = 'course_id desc';
  70. $pageSize = I('page_size',1000);
  71. $res = D('Course')->getCourseList($condition, $pageSize, $orderby);
  72. if ($res!=NULL){
  73. $userWordsRes = $this->square();
  74. foreach ($res as $key=>$row){
  75. if (in_array($row['course_id'], $userWordsRes) || $row['user_id']==$this->userId){
  76. $res[$key]['is_add'] = 1;
  77. }else{
  78. $res[$key]['is_add'] = 0;
  79. }
  80. $res[$key]['fans_id'] = $fansArr[$row['user_id']];
  81. }
  82. }
  83. $data = array('code'=>0,'msg'=>'','data'=>$res);
  84. $this->returnData($data);exit;
  85. }
  86. //关注和取消关注
  87. public function edit(){
  88. $uid = I('uid');
  89. //1:关注,0:取关
  90. $toFollow = I('to_follow');
  91. if (!in_array($toFollow, array(0,1))){
  92. $data = array('code'=>0,'msg'=>'类型错误');
  93. $this->returnData($data);exit;
  94. }
  95. $userInfo = M('User')->where(array('user_id'=>$uid))->field('user_id')->find();
  96. if ($userInfo==NULL){
  97. $data = array('code'=>0,'msg'=>'用户id错误');
  98. $this->returnData($data);exit;
  99. }
  100. $res = M('Fans')->where(array('user_id'=>$this->userId,'fans_user_id'=>$uid))->field('fans_id')->find();
  101. if ($toFollow==1){
  102. if ($res==NULL){
  103. M('Fans')->add(array('user_id'=>$this->userId,'fans_user_id'=>$uid,'operate_dt'=>time(),));
  104. $data = array('code'=>0,'msg'=>'关注成功');
  105. $this->returnData($data);exit;
  106. }else{
  107. $data = array('code'=>0,'msg'=>'关注成功');
  108. $this->returnData($data);exit;
  109. }
  110. }else if($toFollow==0){
  111. if ($res==NULL){
  112. $data = array('code'=>0,'msg'=>'获取关注信息错误');
  113. $this->returnData($data);exit;
  114. }else{
  115. M('Fans')->where(array('user_id'=>$this->userId,'fans_user_id'=>$uid))->delete();
  116. $data = array('code'=>0,'msg'=>'取消关注成功');
  117. $this->returnData($data);exit;
  118. }
  119. }else{
  120. $data = array('code'=>1,'msg'=>'用户id错误');
  121. $this->returnData($data);exit;
  122. }
  123. }
  124. //获取关注列表
  125. private function fans($userId, $lastId, $pageSize, $user_name=''){
  126. if (!empty($lastId)){
  127. $join = 'f LEFT JOIN t_user u ON u.user_id=f.fans_user_id';
  128. $arr=array('f.user_id'=>$userId,'fans_id'=>array('LT',$lastId),);
  129. if($user_name){
  130. $arr['user_name']=array('like', "%{$user_name}%");
  131. }
  132. $res = M('Fans')->join($join)->where($arr)->order('fans_id desc')->limit($pageSize)->field('fans_id,u.user_id,user_name,user_icon')->select();
  133. }else{
  134. $join = 'f LEFT JOIN t_user u ON u.user_id=f.fans_user_id';
  135. $arr=array('f.user_id'=>$userId,);
  136. if($user_name){
  137. $arr['user_name']=array('like', "%{$user_name}%");
  138. }
  139. $res = M('Fans')->join($join)->where($arr)->order('fans_id desc')->limit($pageSize)->field('fans_id,u.user_id,user_name,user_icon')->select();
  140. }
  141. return $res;
  142. }
  143. //获取被关注列表
  144. private function fans_user($userId, $lastId, $pageSize, $user_name=''){
  145. $join = 'f LEFT JOIN t_user u ON u.user_id=f.user_id';
  146. $arr=array('f.fans_user_id'=>$userId);
  147. if (!empty($lastId)){
  148. $arr['fans_id']=array('LT',$lastId);
  149. }
  150. if($user_name){
  151. $arr['user_name']=array('like', "%{$user_name}%");
  152. }
  153. $res = M('Fans')->join($join)->where($arr)->order('fans_id desc')->limit($pageSize)->field('fans_id,u.user_id,user_name,user_icon')->select();
  154. foreach($res as $k=>&$v){
  155. $fansInfo = M('Fans')->where(array('user_id'=>$userId,'fans_user_id'=>$v['user_id']))->field('fans_id')->find();
  156. $v['is_fans'] = $fansInfo==NULL?0:1;
  157. }
  158. return $res;
  159. }
  160. //获取已经添加的课程或者自由记
  161. private function square($uwType=0){
  162. $condition = array('user_id'=>$this->userId);
  163. if (!empty($uwType)){
  164. $condition['uw_type'] = $uwType;
  165. }
  166. $res = M('UserWords')->where($condition)->field('course_id')->select();
  167. if ($res==NULL){
  168. return array();
  169. }
  170. $arr = array();
  171. foreach ($res as $r){
  172. $arr[] = $r['course_id'];
  173. }
  174. return $arr;
  175. }
  176. }