123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233 |
- <?php
- /**
- * Created by PhpStorm.
- * User: stanley-king
- * Date: 2018/1/17
- * Time: 下午9:12
- */
- require_once(BASE_ROOT_PATH . '/helper/search/tcp_client.php');
- require_once(BASE_ROOT_PATH . '/helper/util_helper.php');
- require_once(BASE_ROOT_PATH . '/helper/room/access_client.php');
- require_once(BASE_ROOT_PATH . '/helper/room/proto_type.php');
- require_once(BASE_ROOT_PATH . '/helper/room/room_info.php');
- require_once(BASE_ROOT_PATH . '/helper/room/msg_builder.php');
- require_once(BASE_ROOT_PATH . '/helper/room/base_room.php');
- require_once(BASE_ROOT_PATH . '/helper/room/bargain_room.php');
- require_once(BASE_ROOT_PATH . '/helper/room/shake_room.php');
- require_once(BASE_ROOT_PATH . '/helper/room/chatwo.php');
- require_once(BASE_ROOT_PATH . '/helper/room/factory_client.php');
- require_once(BASE_ROOT_PATH . '/helper/room/chat_room.php');
- require_once(BASE_ROOT_PATH . '/helper/room/room_client.php');
- require_once(BASE_ROOT_PATH . '/helper/room/bargain_manager.php');
- require_once(BASE_ROOT_PATH . '/helper/room/room_parts.php');
- require_once(BASE_ROOT_PATH . '/helper/room/room_avatar.php');
- require_once(BASE_ROOT_PATH . '/helper/room/pusher.php');
- class room_helper
- {
- const room_name_usercount = 5;
- public static function OnUpdateRoom($room)
- {
- if($room < 0) return false;
- $mod_room = Model('room');
- $item = $mod_room->getRoom($room);
- if(empty($item)) return false;
- $parts = new room\room_parts($room);
- $partinfos = $parts->top_users(20);
- $users = $parts->users();
- $uids = [];
- foreach ($partinfos as $part) {
- $uids[] = $part->member_id();
- }
- $updata = [];
- $room_info = new room\room_info($item);
- if(!$room_info->has_avatar())
- {
- $avatar_maker = new room\room_avatar($room);
- $avatars = self::avatarts($uids);
- if(!empty($avatars))
- {
- $tmp_avatar = $avatar_maker->make($avatars);
- if($tmp_avatar != false) {
- $now = time();
- $url = "{$tmp_avatar}?tm={$now}";
- $updata['tmp_avatar'] = $url;
- }
- }
- }
- if(!$room_info->has_name())
- {
- $names = self::nickname($uids);
- if(!empty($names)) {
- $tmp_name = implode('、', $names);
- $updata['tmp_name'] = $tmp_name;
- }
- }
- $updata['users'] = $users;
- if(!empty($updata)) {
- $mod_room->editRoom(['room_id' => $room],$updata);
- room\factory_client::instance()->change($room);
- }
- }
- public static function room($roomid)
- {
- if($roomid <= 0) return false;
- $mod_room = Model('room');
- $items = $mod_room->getRooms(['room_id' => $roomid]);
- foreach ($items as $item) {
- return new room\room_info($item);
- }
- return false;
- }
- public static function message($msgid)
- {
- if($msgid <= 0) return false;
- $mod_room = Model('room');
- $items = $mod_room->getMssage(['msg_id' => $msgid]);
- foreach ($items as $item) {
- return $item;
- }
- return false;
- }
- public static function avatarts($uids)
- {
- if(empty($uids)) return false;
- $result = [];
- $uids = array_unique($uids);
- $items = Model('member')->getMemberList(['member_id' => ['in',$uids]]);
- foreach ($items as $item)
- {
- try
- {
- $info = new member_info($item);
- if($info->hasAvatar()) {
- $avatar = $info->avatar();
- Log::record("avatar_url:{$avatar}",Log::DEBUG);
- $result[] = $avatar;
- }
- }
- catch (Exception $ex) {
- Log::record($ex->getMessage(),Log::ERR);
- }
- }
- return $result;
- }
- public static function nickname($uids)
- {
- $result = [];
- if(empty($uids)) return $result;
- $uids = array_unique($uids);
- $items = Model('member')->getMemberList(['member_id' => ['in',$uids]]);
- $i = 0;
- foreach ($items as $item)
- {
- try
- {
- $info = new member_info($item);
- if($info->hasNickname()) {
- $result[] = $info->nickname();
- $i++;
- if($i > self::room_name_usercount) break;
- }
- }
- catch (Exception $ex) {
- Log::record($ex->getMessage(),Log::ERR);
- }
- }
- return $result;
- }
- public static function user_rooms($user,$order='room_id asc',$count = 0)
- {
- $mod_room = Model('room');
- $items = $mod_room->getRoomParts(['member_id' => $user,'state' => 0],'room_id');
- $roomids = [];
- foreach ($items as $item) {
- $roomids[] = intval($item['room_id']);
- }
- $result = [];
- if(empty($roomids)) return $result;
- $items = $mod_room->getRooms(['type'=>\room\proto_type::room_chat,'room_id' => ['in',$roomids]],'*',$order,$count);
- foreach ($items as $item) {
- $room = new room\room_info($item);
- $result[] = $room->format();
- }
- return $result;
- }
- public static function common_rooms($left,$right)
- {
- $mod_room = Model('room');
- $items1 = $mod_room->getRoomParts(['member_id' => $left,'state' => 0],'room_id');
- $items2 = $mod_room->getRoomParts(['member_id' => $right,'state' => 0],'room_id');
- $roomids = [];
- foreach ($items1 as $item) {
- $roomids[] = intval($item['room_id']);
- }
- foreach ($items2 as $item) {
- $roomids[] = intval($item['room_id']);
- }
- if(empty($roomids)){
- return [];
- }else{
- return array_unique($roomids);
- }
- }
- public static function page_rooms($cond, $order = 'room_id desc', $limit = 5 , $page = false, &$mobile_page = [])
- {
- $result = [];
- $mod_room = Model('room');
- $items = $mod_room->getRooms($cond,'*',$order,$limit,$page);
- foreach ($items as $idx => $item) {
- $room = new room\room_info($item);
- $info = $room->format();
- $page = intval($_GET['curpage']) > 0 ? intval($_GET['curpage']) : 1;
- $pos = ($page - 1) * $limit + $idx + 1;
- $info['rank'] = $pos;
- $result[] = $info;
- }
- if($page){
- $mobile_page = mobile_page($mod_room->gettotalpage());;
- }else{
- $mobile_page = [];
- }
- return $result;
- }
- public static function onSpendBonus($roomid,$amount,$userid)
- {
- if($roomid > 0 && intval($amount * 100 + 0.5) > 0 && $userid > 0)
- {
- $mod_room = Model('room');
- $mod_room->editRoom(['room_id' => $roomid],['shared_bonus' => ['exp',"shared_bonus - {$amount}"]]);
- $content = ['user' => session_helper::memberid(),'amount' => $amount];
- room\factory_client::instance()->notice_room($roomid,0,room\proto_type::msg_stype_spend,$content);
- }
- }
- }
|