member_relation.php 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287
  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 = array();
  27. $pages = 0;
  28. $follower_infos = array();
  29. if(!empty($follower))
  30. {
  31. $follower = self::separate_page($follower,$pages);
  32. $members = Model('member')->getMemberList(array('member_id' => array('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(array('member_id' => array('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(array('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 = array();
  58. $pages = 0;
  59. $follower_infos = array();
  60. if(!empty($follows))
  61. {
  62. $follows = self::separate_page($follows,$pages);
  63. $members = Model('member')->getMemberList(array('member_id' => array('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(array('member_id' => array('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. else
  108. {
  109. if(relation_helper::onSubscribe(session_helper::memberid(),$userid) == true) {
  110. return self::outsuccess(NULL);
  111. } else{
  112. return self::outerr(errcode::ErrRelation,"关注的用户不存在");
  113. }
  114. }
  115. }
  116. catch (Exception $ex) {
  117. return self::outerr(errcode::ErrRelation,"关注的用户不存在");
  118. }
  119. }
  120. public function unsubscribeOp()
  121. {
  122. if(!isset($_GET['userid']) || empty($_GET['userid'])) {
  123. return self::outerr(errcode::ErrParamter,"需要传递userid参数.");
  124. }
  125. $userid = intval($_GET['userid']);
  126. if($userid <= 0) {
  127. return self::outerr(errcode::ErrParamter,"userid必须大于0.");
  128. }
  129. try
  130. {
  131. if(relation_helper::is_follow($_SESSION['member_id'],$userid))
  132. {
  133. if(relation_helper::onUnSubscribe($_SESSION['member_id'],$userid) == true) {
  134. return self::outsuccess(NULL);
  135. } else{
  136. return self::outerr(errcode::ErrRelation,"关注的用户不存在");
  137. }
  138. }
  139. else
  140. {
  141. if(relation_helper::onSubscribe($_SESSION['member_id'],$userid) == true) {
  142. return self::outsuccess(NULL);
  143. } else{
  144. return self::outerr(errcode::ErrRelation,"关注的用户不存在");
  145. }
  146. }
  147. }
  148. catch (Exception $ex) {
  149. return self::outerr(errcode::ErrRelation,"关注的用户不存在");
  150. }
  151. }
  152. public function kinsOp()
  153. {
  154. $mem_desc = [];
  155. $kins = [];
  156. $invitor = $this->inviter();
  157. if($this->page_no() == 1 && !empty($invitor)) {
  158. $info = new member_info($invitor);
  159. $item = $info->filter();
  160. $item['is_invitor'] = true;
  161. $kin['fans_count'] = 3;
  162. $kin['member_id'] = $info->member_id();
  163. $kin['subscribed'] = true;
  164. $kins[] = $kin;
  165. $mem_desc [] = $item;
  166. }
  167. $mod_member = Model('member');
  168. $invitees = $mod_member->getMemberList(['inviter_id' => $_SESSION['member_id']],'*',$this->page_size());
  169. foreach ($invitees as $val) {
  170. $info = new member_info($val);
  171. $item = $info->filter();
  172. $item['is_invitor'] = true;
  173. $mem_desc [] = $item;
  174. $kin['fans_count'] = 3;
  175. $kin['member_id'] = $info->member_id();
  176. $kin['subscribed'] = true;
  177. $kins[] = $kin;
  178. }
  179. $pages = $mod_member->gettotalpage();
  180. $count = $mod_member->gettotalnum() + (empty($invitor) ? 0 : 1);
  181. return self::outsuccess(['count' => $count,
  182. 'kins' => $kins,
  183. 'mem_desc' => $mem_desc,
  184. 'mobile_page' => mobile_page($pages)]);
  185. }
  186. private function inviter()
  187. {
  188. $mod_member = Model('member');
  189. if(isset($_SESSION['inviter_id']) == false) {
  190. $inviter_id = $mod_member->getMemberInfo(['member_id' => $_SESSION['member_id']],'inviter_id');
  191. $_SESSION['inviter_id'] = $inviter_id;
  192. }
  193. $inviter_id = $_SESSION['inviter_id'];
  194. if($inviter_id > 0) {
  195. $info = $mod_member->getMemberInfoByID($inviter_id);
  196. return $info;
  197. } else {
  198. return false;
  199. }
  200. }
  201. //处理好友申请
  202. public function handle_applysOp()
  203. {
  204. $msgid = intval($_GET['msg_id']);
  205. $pass = boolval($_GET['pass']);
  206. $item = room_helper::message($msgid);
  207. if($item == false) {
  208. return self::outerr(errcode::ErrParamter);
  209. }
  210. $msg = json_decode($item['orgmsg'],true);
  211. $apply_user = intval($msg['from']['userid']);
  212. if($apply_user <= 0) {
  213. return self::outerr(errcode::ErrParamter);
  214. }
  215. if($msg['state'] === 'pending')
  216. {
  217. $mod_room = Model('room');
  218. if($msg['type'] == 'apply_friend')
  219. {
  220. if($pass)
  221. {
  222. $relateion = new relation\mem_relation(session_helper::memberid());
  223. $isfriend = $relateion->is_friends($apply_user);
  224. if($isfriend) {
  225. $msg['state'] = 'accept';
  226. $mod_room->updateMsg($msgid,['orgmsg' => json_encode($msg,JSON_UNESCAPED_UNICODE)]);
  227. return self::outerr(errcode::ErrMemberNotExist,"你们已经是好友了");
  228. }
  229. relation_helper::onAccept(session_helper::memberid(),$apply_user);
  230. room\pusher::instance()->new_friend(session_helper::memberid(),$apply_user);
  231. room\pusher::instance()->new_friend($apply_user,session_helper::memberid());
  232. $msg['state'] = 'accept';
  233. } else {
  234. $msg['state'] = 'refuse';
  235. }
  236. }
  237. elseif($msg['type'] == 'apply_room')
  238. {
  239. $roomid = $msg['room_id'];
  240. if($pass) {
  241. room\factory_client::instance()->invite($roomid, session_helper::memberid(),[$apply_user]);
  242. $msg['state'] = 'accept';
  243. } else {
  244. $msg['state'] = 'refuse';
  245. }
  246. }
  247. else {
  248. }
  249. if($msg['state'] != 'pending') {
  250. $mod_room->updateMsg($msgid,['orgmsg' => json_encode($msg,JSON_UNESCAPED_UNICODE)]);
  251. }
  252. }
  253. return self::outsuccess(null,"处理成功");
  254. }
  255. }