FansController.class.php 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  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. $uid = I('user_id');
  53. if(!$uid)$uid=$this->userId;
  54. $userRes = $this->fans($uid, $lastId, $pageSize);
  55. if ($userRes==NULL && $lastId>0){
  56. $data = array('code'=>0,'msg'=>'无更多数据','data'=>array());
  57. $this->returnData($data);exit;
  58. }
  59. $fansArr = array();
  60. $userIdArr = array();
  61. foreach ($userRes as $row){
  62. $userIdArr[] = $row['user_id'];
  63. $fansArr[$row['user_id']] = $row['fans_id'];
  64. }
  65. if (empty($userIdArr)){
  66. $data = array('code'=>0,'msg'=>'','data'=>array());
  67. $this->returnData($data);exit;
  68. }
  69. $condition = array('course_status'=>3,'course_flag'=>1,'is_show'=>1);
  70. $condition['user_id']=array('IN',$userIdArr);
  71. $orderby = 'course_id desc';
  72. $pageSize = I('page_size',1000);
  73. $res = D('Course')->getCourseList($condition, $pageSize, $orderby);
  74. if ($res!=NULL){
  75. $userWordsRes = $this->square();
  76. foreach ($res as $key=>$row){
  77. if (in_array($row['course_id'], $userWordsRes) || $row['user_id']==$this->userId){
  78. $res[$key]['is_add'] = 1;
  79. }else{
  80. $res[$key]['is_add'] = 0;
  81. }
  82. $res[$key]['fans_id'] = $fansArr[$row['user_id']];
  83. }
  84. }
  85. $data = array('code'=>0,'msg'=>'','data'=>$res);
  86. $this->returnData($data);exit;
  87. }
  88. //关注和取消关注
  89. public function edit(){
  90. $uid = I('uid');
  91. //1:关注,0:取关
  92. $toFollow = I('to_follow');
  93. if (!in_array($toFollow, array(0,1))){
  94. $data = array('code'=>0,'msg'=>'类型错误');
  95. $this->returnData($data);exit;
  96. }
  97. $userInfo = M('User')->where(array('user_id'=>$uid))->field('user_id')->find();
  98. if ($userInfo==NULL){
  99. $data = array('code'=>0,'msg'=>'用户id错误');
  100. $this->returnData($data);exit;
  101. }
  102. $res = M('Fans')->where(array('user_id'=>$this->userId,'fans_user_id'=>$uid))->field('fans_id')->find();
  103. if ($toFollow==1){
  104. if ($res==NULL){
  105. M('Fans')->add(array('user_id'=>$this->userId,'fans_user_id'=>$uid,'operate_dt'=>time(),));
  106. $data = array('code'=>0,'msg'=>'关注成功');
  107. $this->returnData($data);exit;
  108. }else{
  109. $data = array('code'=>0,'msg'=>'关注成功');
  110. $this->returnData($data);exit;
  111. }
  112. }else if($toFollow==0){
  113. if ($res==NULL){
  114. $data = array('code'=>0,'msg'=>'获取关注信息错误');
  115. $this->returnData($data);exit;
  116. }else{
  117. M('Fans')->where(array('user_id'=>$this->userId,'fans_user_id'=>$uid))->delete();
  118. $data = array('code'=>0,'msg'=>'取消关注成功');
  119. $this->returnData($data);exit;
  120. }
  121. }else{
  122. $data = array('code'=>1,'msg'=>'用户id错误');
  123. $this->returnData($data);exit;
  124. }
  125. }
  126. //获取关注列表
  127. private function fans($userId, $lastId, $pageSize, $user_name=''){
  128. if (!empty($lastId)){
  129. $join = 'f LEFT JOIN t_user u ON u.user_id=f.fans_user_id';
  130. $arr=array('f.user_id'=>$userId,'fans_id'=>array('LT',$lastId),);
  131. if($user_name){
  132. $arr['user_name']=array('like', "%{$user_name}%");
  133. }
  134. $res = M('Fans')->join($join)->where($arr)->order('fans_id desc')->limit($pageSize)->field('fans_id,u.user_id,user_name,user_icon')->select();
  135. }else{
  136. $join = 'f LEFT JOIN t_user u ON u.user_id=f.fans_user_id';
  137. $arr=array('f.user_id'=>$userId,);
  138. if($user_name){
  139. $arr['user_name']=array('like', "%{$user_name}%");
  140. }
  141. $res = M('Fans')->join($join)->where($arr)->order('fans_id desc')->limit($pageSize)->field('fans_id,u.user_id,user_name,user_icon')->select();
  142. }
  143. return $res;
  144. }
  145. //获取被关注列表
  146. private function fans_user($userId, $lastId, $pageSize, $user_name=''){
  147. $join = 'f LEFT JOIN t_user u ON u.user_id=f.user_id';
  148. $arr=array('f.fans_user_id'=>$userId);
  149. if (!empty($lastId)){
  150. $arr['fans_id']=array('LT',$lastId);
  151. }
  152. if($user_name){
  153. $arr['user_name']=array('like', "%{$user_name}%");
  154. }
  155. $res = M('Fans')->join($join)->where($arr)->order('fans_id desc')->limit($pageSize)->field('fans_id,u.user_id,user_name,user_icon')->select();
  156. foreach($res as $k=>&$v){
  157. $fansInfo = M('Fans')->where(array('user_id'=>$userId,'fans_user_id'=>$v['user_id']))->field('fans_id')->find();
  158. $v['is_fans'] = $fansInfo==NULL?0:1;
  159. }
  160. return $res;
  161. }
  162. //获取已经添加的课程或者自由记
  163. private function square($uwType=0){
  164. $condition = array('user_id'=>$this->userId);
  165. if (!empty($uwType)){
  166. $condition['uw_type'] = $uwType;
  167. }
  168. $res = M('UserWords')->where($condition)->field('course_id')->select();
  169. if ($res==NULL){
  170. return array();
  171. }
  172. $arr = array();
  173. foreach ($res as $r){
  174. $arr[] = $r['course_id'];
  175. }
  176. return $arr;
  177. }
  178. }