|
@@ -11,8 +11,10 @@ require_once(BASE_ROOT_PATH . '/helper/room/factory_client.php');
|
|
|
require_once(BASE_ROOT_PATH . '/helper/room/proto_type.php');
|
|
|
require_once(BASE_ROOT_PATH . '/helper/room/author.php');
|
|
|
|
|
|
-class member_talkControl extends mobileControl //mbMemberControl
|
|
|
+class member_talkControl extends mbMemberControl
|
|
|
{
|
|
|
+ const max_msgid = 1 << 32;
|
|
|
+
|
|
|
private $mAccaddr;
|
|
|
public function __construct()
|
|
|
{
|
|
@@ -24,11 +26,10 @@ class member_talkControl extends mobileControl //mbMemberControl
|
|
|
|
|
|
public function authonOp()
|
|
|
{
|
|
|
- $userid = intval($_GET['userid']);
|
|
|
$result = [];
|
|
|
- $result['addr'] = $this->mAccaddr;
|
|
|
-// $result['token'] = room\author::sign_native(session_helper::memberid());
|
|
|
- $result['token'] = room\author::sign_native($userid);
|
|
|
+ $result['addr'] = $this->mAccaddr;
|
|
|
+ $result['token'] = room\author::sign_native(session_helper::memberid());
|
|
|
+ $result['user'] = session_helper::memberid();
|
|
|
return self::outsuccess($result);
|
|
|
}
|
|
|
|
|
@@ -37,7 +38,7 @@ class member_talkControl extends mobileControl //mbMemberControl
|
|
|
global $config;
|
|
|
$room_id = $config['special_rooms']['shake_bonus'];
|
|
|
$webaddr = $config['access_addr'];
|
|
|
- $userid = intval($_GET['userid']);
|
|
|
+ $userid = session_helper::memberid();
|
|
|
|
|
|
$creator = self::shake_creator($room_id);
|
|
|
$ret = room\factory_client::instance()->invite($room_id,$creator,[$userid]);
|
|
@@ -67,87 +68,148 @@ class member_talkControl extends mobileControl //mbMemberControl
|
|
|
return $stCreator;
|
|
|
}
|
|
|
|
|
|
- public function friendsOp(){
|
|
|
- $memberid = session_helper::memberid();
|
|
|
- $iRelation = new relation\mem_relation($memberid);
|
|
|
- $follows = $iRelation->follower();//我关注的
|
|
|
- $fans = $iRelation->subscriber();//关注我的
|
|
|
- $friends_id = array_unique(array_merge($follows,$fans));
|
|
|
+ private function relations($user)
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ $relation = new relation\mem_relation($user);
|
|
|
+ $follows = $relation->follower();//我关注的
|
|
|
+ $fans = $relation->subscriber();//关注我的
|
|
|
+
|
|
|
+ return array_merge($follows,$fans);
|
|
|
+ }
|
|
|
+ catch (Exception $ex) {
|
|
|
+ return [];
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private function invitees($user)
|
|
|
+ {
|
|
|
+ $mod_member = Model('member');
|
|
|
+ $items = $mod_member->getMemberList(['inviter_id' => $user],'member_id', 0, '');
|
|
|
+
|
|
|
+ $users = [];
|
|
|
+ foreach ($items as $item) {
|
|
|
+ $users[] = intval($item['member_id']);
|
|
|
+ }
|
|
|
+ return $users;
|
|
|
+ }
|
|
|
|
|
|
- $members_list = [];
|
|
|
- if(!empty($friends_id))
|
|
|
+ public function friendsOp()
|
|
|
+ {
|
|
|
+ $user = session_helper::memberid();
|
|
|
+
|
|
|
+ $relations = $this->relations($user);
|
|
|
+ $invitees = $this->invitees($user);
|
|
|
+ $friends = array_merge($relations,$invitees);
|
|
|
+ $friends = array_unique($friends);
|
|
|
+ $items = Model('member')->getMemberList(['member_id' => ['in',$friends]]);
|
|
|
+
|
|
|
+ $members = [];
|
|
|
+ foreach ($items as $item)
|
|
|
{
|
|
|
- $members = Model('member')->getMemberList(array('member_id' => array('in',$friends_id)));
|
|
|
- if(!empty($members))
|
|
|
+ try
|
|
|
{
|
|
|
- foreach ($members as $val)
|
|
|
- {
|
|
|
- $member_name = empty($val['member_nickname']) ? '熊猫美妆用户' : $val['member_nickname'];
|
|
|
- $alpha = Pinyin::getAlpha($member_name);
|
|
|
- $item = [
|
|
|
- 'member_id' => $val['member_id'],
|
|
|
- 'member_avatar' => $val['member_avatar'],
|
|
|
- 'member_nickname' => $member_name,
|
|
|
- 'member_prefix' => $alpha?strtoupper($alpha):'Z',
|
|
|
- ];
|
|
|
- $members_list[]= $item;
|
|
|
-
|
|
|
- //测试用
|
|
|
- $item['member_prefix'] = 'C';
|
|
|
- $members_list[]= $item;
|
|
|
- $item['member_prefix'] = 'A';
|
|
|
- $members_list[]= $item;
|
|
|
- $item['member_prefix'] = 'H';
|
|
|
- $members_list[]= $item;
|
|
|
- }
|
|
|
- usort($members_list,['member_talkControl','alpha_compare']);
|
|
|
+ $info = new member_info($item);
|
|
|
+ $members[] = $info->filter();
|
|
|
}
|
|
|
+ catch (Exception $ex) {
|
|
|
+ Log::record($ex->getMessage(),Log::ERR);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ usort($members,['member_info','alpha_compare']);
|
|
|
+
|
|
|
+ $uids = [];
|
|
|
+ foreach ($members as $member) {
|
|
|
+ $uids[] = $member['member_id'];
|
|
|
}
|
|
|
|
|
|
- $res = [
|
|
|
- 'friends_list' => $members_list,
|
|
|
- 'total_count' => count($members_list),
|
|
|
- ];
|
|
|
- return self::outsuccess($res);
|
|
|
+ return self::outsuccess(['friends' => $uids,
|
|
|
+ 'count' => count($uids),
|
|
|
+ 'mem_desc' => $members,
|
|
|
+ 'mobile_page' => mobile_page(1)]);
|
|
|
}
|
|
|
|
|
|
- public function friend_detailOp(){
|
|
|
+ public function msgsOp()
|
|
|
+ {
|
|
|
+ $msgid = intval($_GET['msgid']);
|
|
|
+ $type = $_GET['type'];
|
|
|
+
|
|
|
+ if($msgid == 0 || empty($type)) {
|
|
|
+ return self::outerr(errcode::ErrParamter);
|
|
|
+ }
|
|
|
+ if($msgid < 0) {
|
|
|
+ $msgid = self::max_msgid;
|
|
|
+ }
|
|
|
+
|
|
|
+ if($type == 'room')
|
|
|
+ {
|
|
|
+ $room = intval($_GET['room']);
|
|
|
+ if($room <= 0) {
|
|
|
+ return self::outerr(errcode::ErrParamter);
|
|
|
+ }
|
|
|
+
|
|
|
+ $msgs = $this->roomsg($msgid,$room);
|
|
|
+ }
|
|
|
+ elseif($type == 'chatwo')
|
|
|
+ {
|
|
|
+ $user = intval($_GET['user']);
|
|
|
+ if($user <= 0) {
|
|
|
+ return self::outerr(errcode::ErrParamter);
|
|
|
+ }
|
|
|
+ $msgs = $this->chatwomsg($msgid,$user);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ return self::outsuccess($msgs);
|
|
|
+ }
|
|
|
+
|
|
|
+ private function roomsg($msgid,$room)
|
|
|
+ {
|
|
|
+ $mod_room = Model('room');
|
|
|
+ $msgs = $mod_room->getRoomMsgList(['room_id' => $room,'msg_id' => ['lt',$msgid]], $this->page_size);
|
|
|
+ return $msgs;
|
|
|
+ }
|
|
|
+
|
|
|
+ private function chatwomsg($msgid,$user)
|
|
|
+ {
|
|
|
+ $mod_room = Model('room');
|
|
|
+ $user_1 = session_helper::memberid();
|
|
|
+ $user_2 = $user;
|
|
|
+
|
|
|
+ $cond['from_user&to_user&msg_id'] = ['_multi' => true,$user_1,$user_2,['lt',$msgid]];
|
|
|
+ $cond['to_user&from_user&msg_id'] = ['_multi' => true,$user_1,$user_2,['lt',$msgid]];
|
|
|
+ $cond['_op'] = 'OR';
|
|
|
+
|
|
|
+ $msgs = $mod_room->getChatwoMsgList($cond, $this->page_size);
|
|
|
+ return $msgs;
|
|
|
+ }
|
|
|
+
|
|
|
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
+ public function friend_detailOp()
|
|
|
+ {
|
|
|
if(!isset($_GET['userid']) || empty($_GET['userid'])){
|
|
|
return self::outerr("参数有误");
|
|
|
}
|
|
|
|
|
|
$member = new member_info($_GET['userid']);
|
|
|
-
|
|
|
return self::outsuccess($member);
|
|
|
}
|
|
|
|
|
|
- public function msgsOp()
|
|
|
+ public function roomsOp()
|
|
|
{
|
|
|
- $msg_clue = [
|
|
|
- "type" => $_GET['type']=='room'?'room':'chatto',
|
|
|
- "msg_id" => intval($_GET['msg_id']),
|
|
|
- "from" => session_helper::memberid(),
|
|
|
- "to" => intval($_GET['to']),
|
|
|
- "room_id" => intval($_GET['$=room_id']),
|
|
|
- "time" => time(),
|
|
|
- ];
|
|
|
-
|
|
|
- $list = $this->get_msg($msg_clue);
|
|
|
- $res = ["list" => $list, "total"=> count($list),];
|
|
|
- return self::outsuccess($res);
|
|
|
- }
|
|
|
-
|
|
|
- public function roomsOp(){
|
|
|
$user_id = $_GET['userid'];
|
|
|
|
|
|
$model = new Model();
|
|
|
$rooms = $model->table('room_participant')->field('*')
|
|
|
->where(['member_id'=>$user_id,'state'=>0])
|
|
|
-// ->order(['time','asc'])
|
|
|
->limit(false)
|
|
|
->select();
|
|
|
|
|
|
- if(!empty($rooms)){
|
|
|
+ if(!empty($rooms))
|
|
|
+ {
|
|
|
foreach ($rooms as $i=>$room){
|
|
|
$room_id = $room['room_id'];
|
|
|
$room_rela = $model->table('room_participant')
|
|
@@ -223,24 +285,6 @@ class member_talkControl extends mobileControl //mbMemberControl
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- static function alpha_compare($left,$right)
|
|
|
- {
|
|
|
- $l = $left['member_prefix'][0];
|
|
|
- $r = $right['member_prefix'][0];
|
|
|
-
|
|
|
- if($l > $r) {
|
|
|
- return 1;
|
|
|
- }
|
|
|
- elseif($l == $r) {
|
|
|
- $l_name = $left['member_nickname'];
|
|
|
- $r_name = $right['member_nickname'];
|
|
|
- return strcmp($l_name,$r_name);
|
|
|
- }
|
|
|
- else {
|
|
|
- return -1;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
private function get_msg($msg_clue){
|
|
|
$model = new Model();
|
|
|
if($msg_clue['type']=='room')
|
|
@@ -284,7 +328,8 @@ class member_talkControl extends mobileControl //mbMemberControl
|
|
|
{
|
|
|
if(!empty($list))
|
|
|
{
|
|
|
- foreach ($list as $item){
|
|
|
+ foreach ($list as $item)
|
|
|
+ {
|
|
|
$format[] = [
|
|
|
"act" => $msg_clue['type'],
|
|
|
"from" => $member[$item['member_id']],
|