Userfollow.php 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262
  1. <?php
  2. namespace app\api\controller;
  3. use app\common\controller\Api;
  4. use think\Db;
  5. /**
  6. * 关注
  7. */
  8. class Userfollow extends Api
  9. {
  10. protected $noNeedLogin = [];
  11. protected $noNeedRight = ['*'];
  12. //我的关注列表
  13. public function my_follow_list(){
  14. $list = Db::name('user_follow')
  15. ->alias('follow')
  16. ->join('user','follow.follow_uid = user.id','LEFT')
  17. ->join('user_wallet uw','user.id = uw.user_id','LEFT')
  18. ->field('user.id,user.username,user.nickname,user.avatar,user.bio,user.birthday,user.gender,user.attribute,uw.vip_endtime')
  19. ->where('follow.uid',$this->auth->id)->order('follow.id desc')->autopage()->select();
  20. $list = list_domain_image($list,['avatar']);
  21. $list = list_birthday_age($list);
  22. if(!empty($list)){
  23. foreach($list as $key => &$val){
  24. //用户vip
  25. $val['is_vip'] = $val['vip_endtime'] > time() ? 1 : 0;
  26. unset($val['vip_endtime']);
  27. //是否关注
  28. $val['is_follow'] = 1;
  29. }
  30. }
  31. $this->success('success',$list);
  32. }
  33. //我的粉丝列表
  34. public function my_fans_list(){
  35. $list = Db::name('user_follow')
  36. ->alias('follow')
  37. ->join('user','follow.uid = user.id','LEFT')
  38. ->join('user_wallet uw','user.id = uw.user_id','LEFT')
  39. ->field('user.id,user.username,user.nickname,user.avatar,user.bio,user.birthday,user.gender,user.attribute,uw.vip_endtime')
  40. ->where('follow.follow_uid',$this->auth->id)->order('follow.id desc')->autopage()->select();
  41. $list = list_domain_image($list,['avatar']);
  42. $list = list_birthday_age($list);
  43. //我的关注uids
  44. $my_follow_uids = $this->my_follow_uids();
  45. if(!empty($list)){
  46. foreach($list as $key => &$val){
  47. //用户vip
  48. $val['is_vip'] = $val['vip_endtime'] > time() ? 1 : 0;
  49. unset($val['vip_endtime']);
  50. //是否关注
  51. $val['is_follow'] = in_array($val['id'],$my_follow_uids) ? 1 : 0;
  52. }
  53. }
  54. $this->success('success',$list);
  55. }
  56. //我的好友,拿粉丝列表改的
  57. public function my_friend_list(){
  58. $list = Db::name('user_follow')
  59. ->alias('follow')
  60. ->join('user','follow.uid = user.id','LEFT')
  61. ->join('user_wallet uw','user.id = uw.user_id','LEFT')
  62. ->field('user.id,user.username,user.nickname,user.avatar,user.bio,user.birthday,user.gender,user.attribute,uw.vip_endtime')
  63. ->where('follow.follow_uid',$this->auth->id)->order('follow.id desc')->autopage()->select();
  64. $list = list_domain_image($list,['avatar']);
  65. $list = list_birthday_age($list);
  66. //我的关注uids
  67. $my_follow_uids = $this->my_follow_uids();
  68. $new_rs = []; //另起
  69. if(!empty($list)){
  70. foreach($list as $key => &$val){
  71. //用户vip
  72. $val['is_vip'] = $val['vip_endtime'] > time() ? 1 : 0;
  73. unset($val['vip_endtime']);
  74. //是否关注
  75. $val['is_follow'] = in_array($val['id'],$my_follow_uids) ? 1 : 0;
  76. //我的粉丝,且是我的关注的,另起
  77. if($val['is_follow'] == 1){
  78. $new_rs[] = $val;
  79. }
  80. }
  81. }
  82. $this->success('success',$new_rs);
  83. }
  84. //好友审核列表。粉丝列表改的。关注了我,我还没关注他的
  85. //接口转移了,使用 newfriend_list
  86. public function my_fans_unfollow_list(){
  87. $this->newfriend_list();
  88. //我的关注uids
  89. $my_follow_uids = $this->my_follow_uids();
  90. $list = Db::name('user_follow')
  91. ->alias('follow')
  92. ->join('user','follow.uid = user.id','LEFT')
  93. ->join('user_wallet uw','user.id = uw.user_id','LEFT')
  94. ->field('user.id,user.username,user.nickname,user.avatar,user.bio,user.birthday,user.gender,user.attribute,uw.vip_endtime')
  95. ->where('follow.follow_uid',$this->auth->id)->where('user.id','NOT IN',$my_follow_uids)->order('follow.id desc')->autopage()->select();
  96. $list = list_domain_image($list,['avatar']);
  97. $list = list_birthday_age($list);
  98. if(!empty($list)){
  99. foreach($list as $key => &$val){
  100. //用户vip
  101. $val['is_vip'] = $val['vip_endtime'] > time() ? 1 : 0;
  102. unset($val['vip_endtime']);
  103. //是否关注
  104. $val['is_follow'] = in_array($val['id'],$my_follow_uids) ? 1 : 0;
  105. }
  106. }
  107. $this->success('success',$list);
  108. }
  109. //好友待审核列表。
  110. public function newfriend_list(){
  111. //我的关注uids
  112. $my_follow_uids = $this->my_follow_uids();
  113. // dump($my_follow_uids);
  114. //向我发起好友消息的人,未读
  115. $user_ids = Db::name('message')->where('infotype','newfriend')->where('user_id',$this->auth->id)->where('status',0)->order('id desc')->column('infotype_id');
  116. // dump($user_ids);
  117. $list = [];
  118. if(!empty($user_ids)){
  119. $user_ids_str = implode(',',$user_ids);
  120. $list = Db::name('user')->alias('user')
  121. ->join('user_wallet uw','user.id = uw.user_id','LEFT')
  122. ->field('user.id,user.username,user.nickname,user.avatar,user.bio,user.birthday,user.gender,user.attribute,uw.vip_endtime')
  123. ->where('user.id','IN',$user_ids)
  124. ->where('user.id','NOT IN',$my_follow_uids)
  125. ->orderRaw('field(user.id,'.$user_ids_str.')')->autopage()->select();
  126. $list = list_domain_image($list,['avatar']);
  127. $list = list_birthday_age($list);
  128. if(!empty($list)){
  129. foreach($list as $key => &$val){
  130. //用户vip
  131. $val['is_vip'] = $val['vip_endtime'] > time() ? 1 : 0;
  132. unset($val['vip_endtime']);
  133. //是否关注
  134. $val['is_follow'] = in_array($val['id'],$my_follow_uids) ? 1 : 0;
  135. }
  136. }
  137. }
  138. $this->success('success',$list);
  139. }
  140. //关注某人
  141. public function follow_one(){
  142. $follow_uid = input('follow_uid',0);
  143. if(!$follow_uid){
  144. $this->error(__('Invalid parameters'));
  145. }
  146. $checkuser = Db::name('user')->find($follow_uid);
  147. if(empty($checkuser)){
  148. $this->error('此用户不存在');
  149. }
  150. if($follow_uid == $this->auth->id){
  151. $this->error('不能关注自己');
  152. }
  153. $map = [
  154. 'uid' => $this->auth->id,
  155. 'follow_uid' => $follow_uid,
  156. ];
  157. $check = Db::name('user_follow')->where($map)->find();
  158. if($check){
  159. //取关
  160. $rs = Db::name('user_follow')->where($map)->delete();
  161. $this->success('操作成功');
  162. }
  163. Db::startTrans();
  164. $id = Db::name('user_follow')->insertGetId($map);
  165. if(!$id){
  166. Db::rollback();
  167. $this->error('关注失败');
  168. }
  169. //被关注人如果没有关注我,发一条消息,让他加好友,也就是让他回关
  170. $map2 = [
  171. 'uid' => $follow_uid,
  172. 'follow_uid' => $this->auth->id,
  173. ];
  174. $check = Db::name('user_follow')->where($map2)->find();
  175. if(empty($check) && $this->user_power($this->auth->id,'yinsi') != 1){
  176. $message = [
  177. 'user_id' => $follow_uid,
  178. 'title' => '好友请求',
  179. 'content' => '有人关注了你,回关TA成为好友',
  180. 'createtime' => time(),
  181. 'status' => 0,
  182. 'infotype' => 'newfriend',//关注,请求好友
  183. 'infotype_id' => $this->auth->id,
  184. ];
  185. Db::name('message')->insertGetId($message);
  186. }
  187. Db::commit();
  188. $this->success('操作成功',$id);
  189. }
  190. //取关某人
  191. public function un_follow_one(){
  192. $follow_uid = input('follow_uid',0);
  193. if(!$follow_uid){
  194. $this->error(__('Invalid parameters'));
  195. }
  196. $checkuser = Db::name('user')->find($follow_uid);
  197. if(empty($checkuser)){
  198. $this->error('此用户不存在');
  199. }
  200. $map = [
  201. 'uid' => $this->auth->id,
  202. 'follow_uid' => $follow_uid,
  203. ];
  204. //不检查,全删
  205. $rs = Db::name('user_follow')->where($map)->delete();
  206. $this->success('操作成功');
  207. }
  208. //我的关注uids
  209. private function my_follow_uids(){
  210. return Db::name('user_follow')->where('uid',$this->auth->id)->column('follow_uid');
  211. }
  212. //我的粉丝uids
  213. private function my_fans_uids(){
  214. return Db::name('user_follow')->where('follow_uid',$this->auth->id)->column('uid');
  215. }
  216. }