member_relation.php 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: stanley-king
  5. * Date: 16/7/21
  6. * Time: 下午12:07
  7. */
  8. require_once (BASE_ROOT_PATH . '/helper/relation_helper.php');
  9. require_once (BASE_ROOT_PATH . '/helper/model_helper.php');
  10. require_once (BASE_ROOT_PATH . '/helper/util_helper.php');
  11. require_once (BASE_ROOT_PATH . '/helper/room_helper.php');
  12. class member_relationControl extends mbMemberControl
  13. {
  14. //subscriber TEXT COMMENT '订阅我为好友的人。',
  15. //follower TEXT COMMENT '我订阅别人成为好友通过的人。'
  16. public function __construct()
  17. {
  18. parent::__construct();
  19. relation_helper::onLogin($_SESSION['member_id']);
  20. }
  21. //我关注的人
  22. public function subscriberOp()
  23. {
  24. $iRelation = new relation\mem_relation($_SESSION['member_id']);
  25. $follower = $iRelation->follower();
  26. $mem_desc = [];
  27. $pages = 0;
  28. $follower_infos = [];
  29. if(!empty($follower))
  30. {
  31. $follower = self::separate_page($follower,$pages);
  32. $members = Model('member')->getMemberList(['member_id' => ['in',$follower]]);
  33. foreach ($members as $val) {
  34. $info = new member_info($val);
  35. array_push($mem_desc,$info->filter());
  36. }
  37. $f_infos = Model('member_relation')->getRelationList(['member_id' => ['in',$follower]]);
  38. foreach ($f_infos as $val)
  39. {
  40. $relation = new relation\mem_relation($val);
  41. $item = ['fans_count' =>$relation->subscriber_count(),
  42. 'member_id' => $relation->member_id(),
  43. 'subscribed' => true];
  44. array_push($follower_infos,$item);
  45. }
  46. }
  47. return self::outsuccess(['subscribers' => $follower_infos,
  48. 'count' => $iRelation->follower_count(),
  49. 'mem_desc' => $mem_desc,
  50. 'mobile_page' => mobile_page($pages)]);
  51. }
  52. //我的粉丝
  53. public function followerOp()
  54. {
  55. $iRelation = new relation\mem_relation($_SESSION['member_id']);
  56. $follows = $iRelation->subscriber();
  57. $mem_desc = [];
  58. $pages = 0;
  59. $follower_infos = [];
  60. if(!empty($follows))
  61. {
  62. $follows = self::separate_page($follows,$pages);
  63. $members = Model('member')->getMemberList(['member_id' => ['in',$follows]]);
  64. foreach ($members as $val) {
  65. $info = new member_info($val);
  66. array_push($mem_desc,$info->filter());
  67. }
  68. $f_infos = Model('member_relation')->getRelationList(['member_id' => ['in',$follows]]);
  69. foreach ($f_infos as $val)
  70. {
  71. $relation = new relation\mem_relation($val);
  72. $item = [ 'fans_count' => $relation->subscriber_count(),
  73. 'member_id' => $relation->member_id(),
  74. 'subscribed' => $iRelation->is_follower($relation->member_id())];
  75. array_push($follower_infos,$item);
  76. }
  77. }
  78. return self::outsuccess(['followers' => $follower_infos,
  79. 'count' => $iRelation->subscriber_count(),
  80. 'mem_desc' => $mem_desc,
  81. 'mobile_page' => mobile_page($pages)]);
  82. }
  83. public function subscribeOp()
  84. {
  85. if(!isset($_GET['userid']) || empty($_GET['userid'])) {
  86. return self::outerr(errcode::ErrParamter,"需要传递userid参数.");
  87. }
  88. $userid = intval($_GET['userid']);
  89. if($userid <= 0) {
  90. return self::outerr(errcode::ErrParamter,"userid必须大于0.");
  91. }
  92. try
  93. {
  94. if(relation_helper::is_follow(session_helper::memberid(),$userid))
  95. {
  96. try
  97. {
  98. if(relation_helper::onUnSubscribe(session_helper::memberid(),$userid) == true) {
  99. return self::outsuccess(NULL);
  100. } else{
  101. return self::outerr(errcode::ErrRelation,"关注的用户不存在");
  102. }
  103. } catch (Exception $ex) {
  104. return self::outerr(errcode::ErrRelation,"关注的用户不存在");
  105. }
  106. }
  107. elseif(relation_helper::onSubscribe(session_helper::memberid(),$userid) == true) {
  108. return self::outsuccess(NULL);
  109. }
  110. else {
  111. return self::outerr(errcode::ErrRelation,"关注的用户不存在");
  112. }
  113. }
  114. catch (Exception $ex) {
  115. return self::outerr(errcode::ErrRelation,"关注的用户不存在");
  116. }
  117. }
  118. public function unsubscribeOp()
  119. {
  120. if(!isset($_GET['userid']) || empty($_GET['userid'])) {
  121. return self::outerr(errcode::ErrParamter,"需要传递userid参数.");
  122. }
  123. $userid = intval($_GET['userid']);
  124. if($userid <= 0) {
  125. return self::outerr(errcode::ErrParamter,"userid必须大于0.");
  126. }
  127. try
  128. {
  129. if(relation_helper::is_follow($_SESSION['member_id'],$userid))
  130. {
  131. if(relation_helper::onUnSubscribe($_SESSION['member_id'],$userid) == true) {
  132. return self::outsuccess(NULL);
  133. } else{
  134. return self::outerr(errcode::ErrRelation,"关注的用户不存在");
  135. }
  136. }
  137. elseif(relation_helper::onSubscribe($_SESSION['member_id'],$userid) == true) {
  138. return self::outsuccess(NULL);
  139. } else {
  140. return self::outerr(errcode::ErrRelation,"关注的用户不存在");
  141. }
  142. }
  143. catch (Exception $ex) {
  144. return self::outerr(errcode::ErrRelation,"关注的用户不存在");
  145. }
  146. }
  147. public function kinsOp()
  148. {
  149. $mem_desc = [];
  150. $kins = [];
  151. $invitor = $this->inviter();
  152. if($this->page_no() == 1 && !empty($invitor)) {
  153. $info = new member_info($invitor);
  154. $item = $info->filter();
  155. $item['is_invitor'] = true;
  156. $kin['fans_count'] = 3;
  157. $kin['member_id'] = $info->member_id();
  158. $kin['subscribed'] = true;
  159. $kins[] = $kin;
  160. $mem_desc [] = $item;
  161. }
  162. $mod_member = Model('member');
  163. $invitees = $mod_member->getMemberList(['inviter_id' => $_SESSION['member_id']],'*',$this->page_size());
  164. foreach ($invitees as $val) {
  165. $info = new member_info($val);
  166. $item = $info->filter();
  167. $item['is_invitor'] = true;
  168. $mem_desc [] = $item;
  169. $kin['fans_count'] = 3;
  170. $kin['member_id'] = $info->member_id();
  171. $kin['subscribed'] = true;
  172. $kins[] = $kin;
  173. }
  174. $pages = $mod_member->gettotalpage();
  175. $count = intval($mod_member->gettotalnum()) + (empty($invitor) ? 0 : 1);
  176. return self::outsuccess(['count' => $count,
  177. 'kins' => $kins,
  178. 'mem_desc' => $mem_desc,
  179. 'mobile_page' => mobile_page($pages)]);
  180. }
  181. private function inviter()
  182. {
  183. $mod_member = Model('member');
  184. if(isset($_SESSION['inviter_id']) == false) {
  185. $inviter_id = $mod_member->getMemberInfo(['member_id' => $_SESSION['member_id']],'inviter_id');
  186. $_SESSION['inviter_id'] = $inviter_id;
  187. }
  188. $inviter_id = $_SESSION['inviter_id'];
  189. if($inviter_id > 0) {
  190. $info = $mod_member->getMemberInfoByID($inviter_id);
  191. return $info;
  192. } else {
  193. return false;
  194. }
  195. }
  196. //处理好友申请
  197. public function handle_applysOp()
  198. {
  199. $msgid = intval($_GET['msg_id']);
  200. $pass = boolval($_GET['pass']);
  201. $item = room_helper::message($msgid);
  202. if($item == false) {
  203. return self::outerr(errcode::ErrParamter);
  204. }
  205. $msg = json_decode($item['orgmsg'],true);
  206. $apply_user = intval($msg['from']['userid']);
  207. if($apply_user <= 0) {
  208. return self::outerr(errcode::ErrParamter);
  209. }
  210. if($msg['state'] === 'pending')
  211. {
  212. $mod_room = Model('room');
  213. if($msg['type'] == 'apply_friend')
  214. {
  215. if($pass)
  216. {
  217. $relateion = new relation\mem_relation(session_helper::memberid());
  218. $isfriend = $relateion->is_friends($apply_user);
  219. if($isfriend) {
  220. $msg['state'] = 'accept';
  221. $mod_room->updateMsg($msgid,['orgmsg' => json_encode($msg,JSON_UNESCAPED_UNICODE)]);
  222. return self::outerr(errcode::ErrMemberNotExist,"你们已经是好友了");
  223. }
  224. relation_helper::onAccept(session_helper::memberid(),$apply_user);
  225. room\pusher::instance()->new_friend(session_helper::memberid(),$apply_user);
  226. room\pusher::instance()->new_friend($apply_user,session_helper::memberid());
  227. $msg['state'] = 'accept';
  228. } else {
  229. $msg['state'] = 'refuse';
  230. }
  231. }
  232. elseif($msg['type'] == 'apply_room')
  233. {
  234. $roomid = $msg['room_id'];
  235. if($pass) {
  236. room\factory_client::instance()->invite($roomid, session_helper::memberid(),[$apply_user]);
  237. $msg['state'] = 'accept';
  238. } else {
  239. $msg['state'] = 'refuse';
  240. }
  241. }
  242. if($msg['state'] != 'pending') {
  243. $mod_room->updateMsg($msgid,['orgmsg' => json_encode($msg,JSON_UNESCAPED_UNICODE)]);
  244. }
  245. }
  246. return self::outsuccess(null,"处理成功");
  247. }
  248. }