|
@@ -47,10 +47,12 @@ class talks_helper
|
|
|
const max_msgid = 1 << 32;
|
|
|
|
|
|
private $mod_room;
|
|
|
+
|
|
|
public function __construct()
|
|
|
{
|
|
|
$this->mod_room = Model('room');
|
|
|
}
|
|
|
+
|
|
|
public function talks($user,$input)
|
|
|
{
|
|
|
$params = $this->talk_params($input);
|
|
@@ -67,7 +69,7 @@ class talks_helper
|
|
|
|
|
|
$other = array_values($chatid_others);
|
|
|
$uids = array_merge($other,$room_senders,$chatwo_senders);
|
|
|
- $members = $this->get_members($uids);
|
|
|
+ $members = members::get_members($uids);
|
|
|
|
|
|
return ["talk_list" => $talk_list,"room_descs" => $room_descs,'messages' => array_merge($room_msgs,$chatwo_msgs),"members"=>$members];
|
|
|
}
|
|
@@ -133,41 +135,6 @@ class talks_helper
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
- private function room_tmp_name($room)
|
|
|
- {
|
|
|
- if(!empty($room['tmp_name']))
|
|
|
- {
|
|
|
- $tmp_len = count(explode('、',$room['tmp_name']));
|
|
|
- $cnt = $room['users'];
|
|
|
- if($tmp_len > 3 || $tmp_len >= $cnt){
|
|
|
- return $room['tmp_name'];
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- $uids = [];
|
|
|
- $items = $this->mod_room->getPartRooms(["room_id" => $room["room_id"]],'member_id',4);
|
|
|
- foreach ($items as $item){
|
|
|
- $uids[] = $item['member_id'];
|
|
|
- }
|
|
|
-
|
|
|
- $tmp_name = "";
|
|
|
- $names = Model('member')->field('member_nickname')->where(["member_id" => ["in",$uids]])->select();
|
|
|
- foreach ($names as $name){
|
|
|
- $tmp_name .= $name['member_nickname'] .'、';
|
|
|
- }
|
|
|
- $tmp_name = trim($tmp_name,"、");
|
|
|
-
|
|
|
- $cond = ["room_id" => $room['room_id']];
|
|
|
- $update = ["tmp_name" => $tmp_name];
|
|
|
- $ret = $this->mod_room->edit_room($cond,$update);
|
|
|
-
|
|
|
- if($ret){
|
|
|
- return $tmp_name;
|
|
|
- }else{
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
//$msg_type == 0 表示 房间消息,1 表示单聊消息
|
|
|
private function lastmsgs($roomids,&$senders,$msg_type = 0)
|
|
|
{
|
|
@@ -328,9 +295,26 @@ class talks_helper
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
- private function get_members($uids)
|
|
|
+ private function room_info($room)
|
|
|
{
|
|
|
- if(empty($uids)) return [];
|
|
|
+ if(empty($room)) return false;
|
|
|
+ $info = new room_info($room);
|
|
|
+ $room_info = $info->format();
|
|
|
+
|
|
|
+ //todo delete test data
|
|
|
+ $default_avatar = "http://pp.myapp.com/ma_icon/0/icon_42287263_1532071055/96";
|
|
|
+ $room_info["avatar"] = $room_info["avatar"] ? $room_info["avatar"] : $default_avatar;
|
|
|
+
|
|
|
+ return $room_info;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+class members{
|
|
|
+
|
|
|
+ public static function get_members($uids)
|
|
|
+ {
|
|
|
+ $members = [];
|
|
|
+ if(empty($uids)) return $members;
|
|
|
|
|
|
$uids = array_unique($uids);
|
|
|
$items = Model('member')->getMemberList(['member_id' => ['in',$uids]]);
|
|
@@ -349,89 +333,73 @@ class talks_helper
|
|
|
return $members;
|
|
|
}
|
|
|
|
|
|
- private function room_info($room)
|
|
|
- {
|
|
|
- if(empty($room)) return false;
|
|
|
- $info = new room_info($room);
|
|
|
- $room_info = $info->format();
|
|
|
|
|
|
- if(empty($room_info["name"])) {
|
|
|
- $room_info["name"] = $this->room_tmp_name($room_info);
|
|
|
+ public static function uids_filter($operater,$needle)
|
|
|
+ {
|
|
|
+ $uids = [];
|
|
|
+ foreach ($operater as $value){
|
|
|
+ if($value == $needle){
|
|
|
+ continue;
|
|
|
+ }else{
|
|
|
+ $uids[] = $value;
|
|
|
+ }
|
|
|
}
|
|
|
+ return $uids;
|
|
|
+ }
|
|
|
+}
|
|
|
|
|
|
-
|
|
|
-
|
|
|
- //todo delete test data
|
|
|
- if(empty($room_info["avatar"])){
|
|
|
- $room_info["avatar"] = "http://wx.qlogo.cn/mmopen/cTcqoIpA3hc3DYFZJ0C9tpBA79rTdFPpTI4G5ib8wxSnbYy4nxPiaVHXXPjfLA0cfnhAJTsMQicJSsLDyIOgf06vYFiaE4657hpD/0";
|
|
|
+class room_helper
|
|
|
+{
|
|
|
+ public static function use_tmp_name($room)
|
|
|
+ {
|
|
|
+ $tmp_name = $room['tmp_name'];
|
|
|
+ $user_cnt = intval($room['users']);
|
|
|
+ //tmp_name can be use already
|
|
|
+ if(!empty($tmp_name))
|
|
|
+ {
|
|
|
+ $tmp_len = count(explode('、',$tmp_name));
|
|
|
+ if($tmp_len > 3 || $tmp_len >= $user_cnt){
|
|
|
+ return $tmp_name;
|
|
|
+ }
|
|
|
}
|
|
|
- return $room_info;
|
|
|
- }
|
|
|
|
|
|
+ //create new tmp_name
|
|
|
+ $tmp_name = "";
|
|
|
+ $room_id = intval($room['room_id']);
|
|
|
+ $uids = self::room_uids($room_id,4);
|
|
|
+ $names = Model('member')->field('member_nickname')->where(["member_id" => ["in",$uids]])->select();
|
|
|
+ foreach ($names as $name){
|
|
|
+ $tmp_name .= $name['member_nickname'] .'、';
|
|
|
+ }
|
|
|
+ $tmp_name = trim($tmp_name,"、");
|
|
|
|
|
|
- ///////////////////
|
|
|
- public function get_friends($user){
|
|
|
- return $this->get_members($user);
|
|
|
- }
|
|
|
+ $cond = ["room_id" => $room['room_id']];
|
|
|
+ $update = ["tmp_name" => $tmp_name];
|
|
|
|
|
|
- public function talk_detail($talk_type,$talk_id)
|
|
|
- {
|
|
|
- if($talk_type == 'room')
|
|
|
- {
|
|
|
- $room = Model('room')->table('room')->where(['room_id'=>$talk_id])->find();
|
|
|
|
|
|
- $room_info = $this->room_info($room);
|
|
|
+ //todo QueueClient::push()
|
|
|
+ if(empty($ret)) $ret = '丽人丽妆';
|
|
|
+ $ret = Model("room")->edit_room($cond,$update);
|
|
|
|
|
|
- return $room_info;
|
|
|
- }
|
|
|
- elseif($talk_type == 'system')
|
|
|
- {
|
|
|
- $system = [
|
|
|
- "name" => "熊猫美妆",
|
|
|
- "avatar" => "http://pp.myapp.com/ma_icon/0/icon_42287263_1532071055/96"
|
|
|
- ];
|
|
|
- return $system;
|
|
|
+ if($ret){
|
|
|
+ return $tmp_name;
|
|
|
}else{
|
|
|
+ Log::record("room_name create faild room:".json_encode($room));
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- public function room_detail($user,$room_id)
|
|
|
- {
|
|
|
- if($room_id <= 0) return false;
|
|
|
-
|
|
|
- $room = $this->mod_room->getRoom($room_id);
|
|
|
- //todo use code unline
|
|
|
- //if(empty($room) || $room['type'] !=proto_type::room_chat) return false;
|
|
|
-
|
|
|
- $info = new room_info($room);
|
|
|
- $room_base = $info->format();
|
|
|
- $room_base['name'] = $room_base['name']?$room_base['name']:$this->room_tmp_name($room_base);
|
|
|
- $owner = $room_base['owner'];
|
|
|
- $isManager = $owner == $user?true:false;
|
|
|
|
|
|
|
|
|
+ public static function room_uids($roomid,$limit=false)
|
|
|
+ {
|
|
|
$uids = [];
|
|
|
- $items = $this->mod_room->getPartRooms(["room_id" => $room_id],'member_id');
|
|
|
+ $mod_room = Model('room');
|
|
|
+
|
|
|
+ $items = $mod_room->getPartRooms(["room_id" => $roomid,'state' => 0],'member_id',$limit);
|
|
|
foreach ($items as $item){
|
|
|
$uids[] = $item['member_id'];
|
|
|
}
|
|
|
-
|
|
|
- if(empty($uids)) return false;
|
|
|
-
|
|
|
- if(!in_array($user,$uids)) return false;
|
|
|
-
|
|
|
-
|
|
|
- $members = $this->get_members($uids);
|
|
|
- foreach ($members as $i => $member)
|
|
|
- {
|
|
|
- if($member['member_id'] == $owner){
|
|
|
- $members[$i]["manager"] = 1;
|
|
|
- }else{
|
|
|
- $members[$i]["manager"] = 0;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return ["room" => $room_base ,"user"=>$user,"isManager" => $isManager,"members" => $members];
|
|
|
+ return $uids;
|
|
|
}
|
|
|
}
|