123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503 |
- <?php
- /**
- * Created by PhpStorm.
- * User: stanley-king
- * Date: 2018/7/12
- * Time: 上午11:29
- */
- require_once(BASE_ROOT_PATH . '/helper/search/tcp_client.php');
- 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/room_info.php');
- require_once(BASE_ROOT_PATH . '/helper/room/author.php');
- require_once(BASE_ROOT_PATH . '/helper/room/util.php');
- require_once(BASE_ROOT_PATH . '/helper/room/tpl_group_home.php');
- require_once(BASE_ROOT_PATH . '/helper/room/tpl_chatwo_home.php');
- require_once(BASE_ROOT_PATH . '/helper/FileUploader.php');
- require_once(BASE_ROOT_PATH . '/helper/room/face_room.php');
- require_once(BASE_ROOT_PATH . '/helper/util_helper.php');
- use room\proto_type;
- class member_talkControl extends mbMemberControl
- {
- const max_msgid = 1 << 32;
- const donate_rate = 100;
- private $mAccaddr;
- public function __construct()
- {
- parent::__construct();
- global $config;
- $this->mAccaddr = $config['access_addr'];
- }
- public function authonOp()
- {
- $result = [];
- $result['addr'] = $this->mAccaddr;
- $result['token'] = room\author::sign_native(session_helper::memberid());
- $result['user'] = session_helper::memberid();
- return self::outsuccess($result);
- }
- public function talksOp()
- {
- $talks_helper = new room\talks_helper();
- $input = base64_decode($_POST['cmp_table']);
- $result = $talks_helper->talks(session_helper::memberid(),$input);
- return self::outsuccess($result);
- }
- public function friendsOp()
- {
- $talks_helper = new room\talks_helper();
- $friends = $talks_helper->friends(session_helper::memberid());
- $members = member_info::get_members($friends);
- usort($members,['member_info','alpha_compare']);
- $uids = [];
- $mem_desc = [];
- foreach ($members as $member) {
- if($member['member_id'] == session_helper::memberid()) continue;
- $uids[] = $member['member_id'];
- $mem_desc[] = $member;
- }
- return self::outsuccess(['friends' => $uids,
- 'count' => count($uids),
- 'mem_desc' => $mem_desc,
- 'mobile_page' => mobile_page(1)]);
- }
- 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_id = intval($_GET['room']);
- if($room_id <= 0) {
- return self::outerr(errcode::ErrParamter);
- }
- $result = $this->roomsg($msgid,$room_id);
- $msgs = $this->format_message($result['uids'],$result['msgs'],$type,0,$room_id);
- }
- elseif($type == 'chatwo')
- {
- $user = intval($_GET['user']);
- if($user <= 0) {
- return self::outerr(errcode::ErrParamter);
- }
- $result = $this->chatwomsg($msgid,$user);
- $msgs = $this->format_message($result['uids'],$result['msgs'],$type,$user);
- }
- else {
- $msgs = [];
- Log::record(__METHOD__ . " : invalid type={$type}.",Log::ERR);
- }
- return self::outsuccess(["msgs" => $msgs]);
- }
- private function format_message($uids,$msgs,$type,$other=0,$room_id=0)
- {
- $members = [];
- if(!empty($uids))
- {
- $room_members = Model('room')->getRoomParts(["room_id"=>$room_id],'member_id,member_nick',false);
- $nicknames = [];
- if(!empty($room)) {
- foreach ($room_members as $room_member){
- $nicknames[$room_member['member_id']] = $room_member['member_nick'];
- }
- }
- $items = Model('member')->getMemberList(['member_id' => ['in',$uids]]);
- foreach ($items as $item)
- {
- try
- {
- $info = new member_info($item);
- $val = [];
- $mid = $info->member_id();
- $nickname = empty($nicknames[$mid]) ? $info->nickname() : $nicknames[$mid];
- $val['avatar'] = $info->avatar();
- $val['nickname'] = $nickname;
- $val['userid'] = $mid;
- $members[$mid] = $val;
- }
- catch (Exception $ex) {
- Log::record($ex->getMessage(),Log::ERR);
- }
- }
- }
- $result = [];
- if(!empty($msgs))
- {
- foreach ($msgs as $msg)
- {
- $msgtype = proto_type::from_msgtype(intval($msg['type']));
- if($msgtype == false) continue;
- $val = [];
- $val["act"] = $type;
- $val["op"] = "message";
- $val["msgtype"] = "message";
- $from = intval($msg['member_id']);
- $member = $members[$from];
- if($type == 'room') {
- $val["room"] = intval($msg['room_id']);
- }
- elseif($type == 'chatwo')
- {
- $val['from'] = $from;
- if($from == session_helper::memberid()) {
- $val['to'] = $other;
- }
- else {
- $val['to'] = session_helper::memberid();
- }
- }
- else {
- }
- $val['content'] = ['msgid' => intval($msg['msg_id']), 'from' => $member,'type' => $msgtype,'content' => $msg['msg'],'send_time' => intval($msg['add_time'])];
- $result[] = $val;
- }
- }
- return $result;
- }
- private function roomsg($msgid,$room_id)
- {
- $user = session_helper::memberid();
- $mod_room = Model('room');
- $room = $mod_room->getRoomParts(["room_id"=>$room_id, "member_id"=>$user, "state" => 0],"hide_msg",1);
- if(!empty($room)){
- $hide_msg = intval($room[0]["hide_msg"]);
- }else{
- return ['uids' => [],'msgs' => []];
- }
- $msgs = $mod_room->getRoomsgList(['room_id' => $room_id,'msg_id' => [['gt',$hide_msg],['lt',$msgid]],'msg_type' => 0], $this->page_size);
- $uids = [];
- if($msgs)
- {
- usort($msgs,['room\sorter','msgid_asc']);
- foreach ($msgs as $msg) {
- $uids[] = intval($msg['member_id']);
- }
- $uids = array_unique($uids);
- }
- return ['uids' => $uids,'msgs' => $msgs];
- }
- private function chatwomsg($msgid,$user)
- {
- $mod_room = Model('room');
- $left = session_helper::memberid();
- $right = $user;
- $chat_id = $mod_room->findChatid($left,$right);
- if($chat_id == false) {
- return ['uids' => [$left,$right],'msgs' => []];
- }
- $msgs = $mod_room->getRoomsgList(['room_id' => $chat_id,'msg_id' => ['lt',$msgid],'msg_type' => 1], $this->page_size);
- if($msgs){
- usort($msgs,['room\sorter','msgid_asc']);
- }
- return ['uids' => [$left,$right],'msgs' => $msgs];
- }
- private function applysmsg($msgid,$user){
- }
- public function create_roomOp()
- {
- $creator = session_helper::memberid();
- $result = room\factory_client::instance()->create_chat($creator);
- if($result == false) {
- return self::outerr(errcode::ErrRoom,"建群失败");
- }
- $room_id = $result['room'];
- if(!empty($_GET['invitees']))
- {
- $invitees = explode(',', trim($_GET['invitees']));
- if(!empty($invitees) && $room_id > 0)
- {
- $_invitees = array_values(array_diff($invitees,[$creator]));
- $ret = room\factory_client::instance()->invite($room_id,$creator,$_invitees);
- if($ret == false) return self::outerr(errcode::ErrRoom,"邀请失败");
- if(in_array($creator,$invitees)){
- $userNum = count($invitees);
- }else{
- $userNum = count($invitees) + 1;
- }
- return self::outsuccess(["room_id"=>$room_id,"room_name" => "群聊(".$userNum.")"]);
- }else {
- return self::outerr(errcode::ErrRoom,"建群失败");
- }
- }
- else {
- return self::outsuccess(["room_id"=>$room_id,"room_name"=>"群聊"]);
- }
- }
- ////////////面对面建群////////////////////////////////////////////////////////////////////////////////////////////////
- private function face_param(&$err)
- {
- $code = trim($_GET['code']);
- $loc = $this->parase_location($_GET['coordinate']);
- if(empty($code) || strlen($code) != 4 || !is_numeric($code)) {
- $err = ['code' => errcode::ErrParamter,'msg' => "请输入4位密码"];
- return false;
- }
- if($loc == false) {
- $err = ['code' => errcode::ErrParamter,'msg' => "需要地理位置信息才能面对面建群"];
- return false;
- }
- $geo = new geohash();
- $hash = $geo->encode($loc['lat'],$loc['lng']);
- $hash = substr($hash, 0, 7);
- Log::record("loc={$_GET['coordinate']},code = {$code} hash={$hash}",Log::DEBUG);
- return ['code' => $code,'lochash' => $hash];
- }
- public function find_faceOp()
- {
- $params = $this->face_param($err);
- if($params == false) {
- return self::outerr($err['code'],$err['msg']);
- }
- $code = $params['code'];
- $lochash = $params['lochash'];
- $face = new room\face_room($code,$lochash);
- $uids = $face->find(session_helper::memberid());
- if($uids === false) {
- return self::outerr(errcode::ErrRoomTwoFace,"面对面建群失败");
- }
- if(!empty($uids)) {
- $members = member_info::get_members($uids);
- } else {
- $members = [];
- }
- return self::outsuccess(['members' => $members]);
- }
- public function join_faceOp()
- {
- $params = $this->face_param($err);
- if($params == false) {
- return self::outerr($err['code'],$err['msg']);
- }
- $code = $params['code'];
- $lochash = $params['lochash'];
- $face = new room\face_room($code,$lochash);
- $room_id = $face->join(session_helper::memberid());
- if($room_id === false) {
- return self::outerr(errcode::ErrRoomTwoFace,"面对面建群失败");
- }
- $ret = room\factory_client::instance()->invite($room_id,$this->room_creator($room_id),[session_helper::memberid()]);
- if($ret === false) {
- return self::outerr(errcode::ErrRoom,"进群失败");
- }
- else
- {
- $mod_room = Model('room');
- $room = $mod_room->getRoom($room_id);
- $info = new room\room_info($room);
- $result['name'] = $info->name();
- return self::outsuccess(['result' => $ret]);
- }
- }
- public function leave_faceOp()
- {
- $params = $this->face_param($err);
- if($params == false) {
- return self::outerr($err['code'],$err['msg']);
- }
- $code = $params['code'];
- $lochash = $params['lochash'];
- $face = new room\face_room($code,$lochash);
- $face->leave(session_helper::memberid());
- return self::outsuccess(['result' => "true"]);
- }
- private function parase_location($location)
- {
- if(empty($location)) return false;
- $pos = explode(',',$location);
- if(count($pos) == 2) {
- return ['lat' => $pos[0],'lng' => $pos[1]];
- } else {
- return false;
- }
- }
- ///////////群内成员管理//////////////////////////////////////////////////////////////////////////////////////////////
- private function room_creator($room_id)
- {
- $mod_room = Model('room');
- $params = $mod_room->getRoom($room_id);
- $rinfo = new room\room_info($params);
- return $rinfo->creator();
- }
- public function room_usersOp()
- {
- $room_id = intval($_GET['room_id']);
- if($room_id <= 0) {
- return self::outerr(errcode::ErrParamter);
- }
- $parts = new room\room_parts($room_id);
- $uids = $parts->allparts([session_helper::memberid()]);
- $members = member_info::get_members($uids);
- return self::outsuccess([
- 'friends' => $uids,
- 'count' => count($uids),
- "mem_desc" => $members,
- 'mobile_page' => mobile_page(1)]);
- }
- public function inviteOp()
- {
- $room_id = intval($_GET['room_id']);
- $invitees = explode(',', trim($_GET['invitees']));
- if(empty($invitees) || $room_id <= 0) {
- return self::outerr(errcode::ErrParamter);
- }
- $inviter = session_helper::memberid();
- $_invitees = array_values(array_diff($invitees,[$inviter]));
- $result = room\factory_client::instance()->invite($room_id,$inviter,$_invitees);
- if($result === false) {
- return self::outerr(errcode::ErrRoom,"邀请失败");
- }
- else
- {
- $members = member_info::get_members($result['newusers']);
- $result['invitees'] = $members;
- return self::outsuccess($result);
- }
- }
- public function leaveOp()
- {
- $room_id = intval($_GET['room_id']);
- if($room_id <= 0) {
- return self::outerr(errcode::ErrParamter);
- }
- $result = room\factory_client::instance()->leave($room_id,session_helper::memberid());
- if($result === false) {
- Log::record("leave nooooo ".session_helper::memberid());
- return self::outerr(errcode::ErrRoom,"退出失败");
- }
- else {
- Log::record("leave ok ".session_helper::memberid());
- return self::outsuccess($result);
- }
- }
- public function kickoutOp()
- {
- $room_id = intval($_GET['room_id']);
- $kicks = explode(',', trim($_GET['users']));
- if($room_id <= 0 || count($kicks) <= 0 ) {
- return self::outerr(errcode::ErrParamter);
- }
- $item = Model('room')->getRoom($room_id);
- if(empty($item)) {
- return self::outerr(errcode::ErrParamter,"此群不存在");
- }
- $info = new room\room_info($item);
- if($info->owner() != session_helper::memberid()) {
- return self::outerr(errcode::ErrTalk,"只有群主可以踢人");
- }
- $result = room\factory_client::instance()->kickout($room_id,session_helper::memberid(),$kicks);
- if($result === false) {
- return self::outerr(errcode::ErrRoom);
- }
- else {
- return self::outsuccess($result);
- }
- }
- ///////////群详情设置/////////////////////////////////////////////////////////////////////////////////////////////////
- /**
- * 会话详情页 talk_type:room/chatwo talk_id:room_id/user
- */
- public function room_detailOp()
- {
- $talk_type = trim($_GET['talk_type']);
- $talk_id = intval($_GET['talk_id']);
- $relay_id = intval($_GET['relay_id']);
- if($talk_id <= 0) {
- return self::outerr(errcode::ErrParamter);
- }
- $user = session_helper::memberid();
- $param = ["talk_type" => $talk_type, "talk_id" => $talk_id , "member_id" => $user,"room_name"=>"","relay_id"=>$relay_id];
- if($talk_type == "room")
- {
- $room_id = $talk_id;
- try {
- $tpl = new room\tpl_group_home($user,$talk_id,$relay_id);
- $room_name = $tpl->get_room_info()->name();
- $param["room_name"] = $room_name;
- return self::outsuccess(['tpl' => $tpl,"param" => $param],'talk/homepage_room');
- } catch (Exception $ex) {
- Log::record("member_talk.room_detail error: room_id={$room_id} user={$user}",Log::ERR);
- return self::outerr(errcode::ErrParamter);
- }
- }
- elseif($talk_type == 'chatwo')
- {
- $other = $talk_id;
- try {
- $tpl = new room\tpl_chatwo_home($user,$other);
- return self::outsuccess(['tpl' => $tpl,"param"=>$param],'talk/homepage_chatwo');
- } catch (Exception $ex) {
- Log::record("member_talk.room_detail error: other={$other} user={$user}",Log::ERR);
- return self::outerr(errcode::ErrParamter);
- }
- }
- else
- {
- return self::outerr(errcode::ErrParamter);
- }
- }
- /**
- * 修改群名称和群描述 room_id room_name room_desc
- */
- public function room_editOp()
- {
- $room_id = intval($_GET['room_id']);
- if(empty($room_id)) {
- return self::outerr(errcode::ErrParamter);
- }
- $updata = [];
- if(!empty($_GET['room_name'])){
- $updata["room_name"] = trim($_GET['room_name']);
- }
- if(!empty($_GET['room_desc'])){
- $updata["room_desc"] = trim($_GET['room_desc']);
- if(strlen($updata["room_desc"]) > 180 ) return self::outerr(errcode::ErrParamter,"群介绍过长");
- }
- if(empty($updata)) {
- return self::outerr(errcode::ErrParamter);
- }
- $ret = Model('room')->editRoom(['room_id'=>$room_id],$updata);
- if($ret) {
- room\factory_client::instance()->change($room_id);
- return self::outsuccess(null);
- } else {
- return self::outerr(errcode::ErrDB);
- }
- }
- /**
- * 设置群内昵称 room_id member_nick
- */
- public function change_membernickOp()
- {
- $room_id = intval($_GET['room_id']);
- if($room_id <= 0) {
- return self::outerr(errcode::ErrParamter);
- }
- $member_nick = trim($_GET['member_nick']);
- $len = strlen($member_nick);
- if( $len <= 0 || $len > 40 ) {
- return self::outerr(errcode::ErrParamter,"群备注名称不得为空或过长");
- }
- $user = intval($_GET['user']);
- $self = session_helper::memberid();
- $mod_room = Model('room');
- if($user <= 0)
- {
- $ret = $mod_room->editRoomParts(['room_id' => $room_id,'member_id' => $self],['member_nick' => $member_nick]);
- }
- else
- {
- $item = $mod_room->getRoom($room_id);
- if(empty($item)) {
- return self::outerr(errcode::ErrParamter);
- }
- $info = new room\room_info($item);
- if($info->owner() != $self) {
- return self::outerr(errcode::ErrTalk,"只有管理员可以修改他人的备注");
- }
- $ret = $mod_room->editRoomParts(['room_id' => $room_id,'member_id' => $user],['member_nick' => $member_nick]);
- }
- if($ret) {
- room\factory_client::instance()->change($room_id);
- return self::outsuccess(null);
- } else {
- return self::outerr(errcode::ErrDB);
- }
- }
- /**
- * 设置群头像 room_id file_path
- */
- public function change_room_avatarOp()
- {
- $room_id = intval($_POST['room_id']);
- $upload_dir = 'room/avatars/';
- $uploader = new room\uploader();
- $res = $uploader->upfile($upload_dir,$info);
- if($res == false) {
- return self::outerr(errcode::ErrUploadFileFailed);
- }
- $file_name = $info['msg'];
- $file_path = '/data/upload/'.$upload_dir . $file_name.'?tm='.time();
- $ret = Model("room")->editRoom(['room_id' => $room_id],['avatar' => $file_path]);
- if ($ret) {
- room\factory_client::instance()->change($room_id);
- return self::outsuccess(['avatar' => $file_path]);
- } else {
- return self::outerr(errcode::ErrDB);
- }
- }
- /**
- * 转让管理员
- * 将 room_id 转让给 to_user
- */
- public function change_room_ownerOp()
- {
- $room_id = intval($_GET['room_id']);
- $to_user = explode(',', trim($_GET['room_owner']));
- $to_user = $to_user[0];
- $from_user = session_helper::memberid();
- $mod_room = Model("room");
- $item = $mod_room->getRoomParts(["room_id"=>$room_id,"member_id"=>$from_user,"state"=>0]);
- if(empty($item)) {
- return self::outerr(errcode::ErrMemberNotExist,"不是群主不可移交管理员");
- }
- $item = $mod_room->getRoomParts(["room_id"=>$room_id,"member_id"=>$to_user,"state"=>0]);
- if(empty($item)) {
- return self::outerr(errcode::ErrMemberNotExist,"用户已不在群中");
- }
- $member = new member_info($to_user);
- $info = $member->filter();
- $name = $info['nickname'];
- ///
- $trans = new trans_wapper(null,__METHOD__);
- $exchange = $this->exchage_room_owner($room_id,$from_user,$to_user);
- $editres = $mod_room->editRoom(['room_id' => $room_id],['room_owner' => $to_user,"owner_name"=>$name]);
- if($exchange && $editres){
- $trans->commit();
- return self::outsuccess("移交成功");
- }else{
- $trans->rollback();
- return self::outerr(errcode::ErrTalk,"移交失败");
- }
- }
- private function exchage_room_owner($room_id,$from_user,$to_user)
- {
- $mod_room = Model("room");
- $update1 = $mod_room->editRoomParts(['room_id' => $room_id,'member_id' => $from_user],['type' => 0]);
- $update2 = $mod_room->editRoomParts(['room_id' => $room_id,'member_id' => $to_user] ,['type' => 1]);
- return $update1 && $update2;
- }
- /**
- * 设置群公告 room_id room_notice
- */
- public function change_room_noticeOp()
- {
- $room_id = intval($_GET['room_id']);
- if($room_id <= 0) {
- return self::outerr(errcode::ErrParamter);
- }
- $room_notice = trim($_GET['room_notice']);
- $len = strlen($room_notice);
- if( $len <= 0 || $len > 450 ) {
- return self::outerr(errcode::ErrParamter,"公告过长或为空");
- }
- $mod_room = Model('room');
- $item = $mod_room->getRoom($room_id);
- if(empty($item)) {
- return self::outerr(errcode::ErrParamter,"错误的群信息");
- }
- $user = session_helper::memberid();
- $info = new room\room_info($item);
- if($info->owner() != $user) {
- return self::outerr(errcode::ErrTalk,"只有管理员可以修改群公告");
- }
- $ret = Model("room")->editRoom(['room_id' => $room_id],['notice' => $room_notice]);
- if($ret) {
- return self::outsuccess(null);
- } else {
- return self::outerr(errcode::ErrDB);
- }
- }
- /**
- * 设置群密码 room_id passwd use_pass(开启或关闭)
- */
- public function change_passwdOp(){
- $room_id = intval($_GET['room_id']);
- $use_pass = intval($_GET['use_pass']);
- if($room_id <= 0) {
- return self::outerr(errcode::ErrParamter);
- }
- if($use_pass)
- {
- $passwd = strtolower(trim($_GET['passwd']));
- $len = strlen($passwd);
- if($len <4 || $len >8) {
- return self::outerr(errcode::ErrParamter,"密码长度请再4至8个字符之间");
- }
- if (!preg_match("/^[a-z0-9]+$/u", $passwd)) {
- return self::outerr(errcode::ErrParamter,"密码只能包含英文字母或数字,不区分大小写");
- }
- }else{
- $passwd = "";
- }
- $mod_room = Model('room');
- $item = $mod_room->getRoom($room_id);
- if(empty($item)) {
- return self::outerr(errcode::ErrParamter,"错误的群信息");
- }
- $user = session_helper::memberid();
- $info = new room\room_info($item);
- if($info->owner() != $user) {
- return self::outerr(errcode::ErrTalk,"只有管理员可以修改群密码");
- }
- $ret = Model("room")->editRoom(['room_id' => $room_id],['passwd' => $passwd]);
- if($ret) {
- return self::outsuccess(null);
- } else {
- return self::outerr(errcode::ErrDB);
- }
- }
- /**
- * 清空聊天记录 room_id
- */
- public function hide_msgOp()
- {
- $room_id = intval($_GET['room_id']);
- $user = session_helper::memberid();
- if($room_id < 0) {
- return self::outerr(errcode::ErrParamter);
- }
- $mod_room = Model('room');
- $hide_msg = 0;
- $cond = ["room_id"=>$room_id, "member_id"=>$user, "state" => 0];
- $item = $mod_room->getRoomParts($cond,"hide_msg",1);
- if(!empty($item)) {
- $hide_msg = $item[0]['hide_msg'];
- }
- $cur_msg = 0;
- $item = $mod_room->getRoomsgList(["msg_type"=>0,"room_id"=>$room_id],1,'msg_id');
- if(!empty($item)) {
- $cur_msg = $item[0]['msg_id'];
- }
- if($cur_msg <= $hide_msg) {
- return self::outerr(errcode::ErrTalk,"无历史记录可清除");
- }
- $update = $mod_room->editRoomParts($cond,["hide_msg"=>$cur_msg]);
- if($update) {
- return self::outsuccess(null,"清除成功");
- } else {
- return self::outerr(errcode::ErrTalk,"清除失败");
- }
- }
- ///////////////////群运动///////////////////////////////////////////////////////////////////////////////////
- /**
- * 群运动主页
- */
- public function steps_homeOp(){
- return self::outsuccess(null,'talk/room_steps');
- }
- public function room_stepsOp()
- {
- try
- {
- $room_id = intval($_GET['room_id']);
- $mod_room = Model('room');
- $userid = session_helper::memberid();
- $room = $mod_room->getRoomParts(["room_id"=>$room_id,"member_id"=>$userid,"state"=>0],'room_id,member_id,steps',1);
- if(empty($room)) return self::outerr(errcode::ErrParamter,"错误的群信息");
- $user_steps = $this->user_steps($room[0]);
- $steps = [];
- $hasmore = false;
- $per_page = 20;
- $items = $mod_room->getRoomParts(["room_id"=>$room_id,"state"=>0],'member_id,steps,bonus',$per_page,"steps desc,FIELD(`member_id`,{$userid}) desc");
- if(!empty($items))
- {
- foreach ($items as $k => $sport)
- {
- $info = new member_info($sport['member_id']);
- $member = $info->filter();
- $steps[$k]['member_id'] = $sport['member_id'];
- $steps[$k]['steps'] = $sport['steps'];
- $steps[$k]['avatar'] = $member['avatar'];
- $steps[$k]['is_man'] = $member['is_man'];
- $steps[$k]['nickname'] = util::ellipsis($member['nickname']);
- $steps[$k]['bonus'] = $sport['bonus'];
- }
- if(count($steps) >= $per_page) $hasmore = true;
- }
- return self::outsuccess(["user"=>$user_steps,"steps"=>$steps,"mobile_page"=>["hasmore"=>$hasmore,"curpage"=>$this->cur_page]]);
- } catch (Exception $ex) {
- return self::outerr(errcode::ErrParamter);
- }
- }
- private function user_steps($room_parti)
- {
- $info = new member_info($room_parti['member_id']);
- $member = $info->filter();
- $user_steps["member_id"] = $member['member_id'];
- $user_steps['avatar'] = $member['avatar'];
- $user_steps['is_man'] = $member['is_man'];
- $user_steps['nickname'] = $member['nickname'];
- $user_steps["steps"] = $room_parti['steps'];
- $ranks = Model('room')->getRoomParts(["room_id"=>$room_parti['room_id'],"state"=>0,"steps"=>['gt',$room_parti['steps']]],'member_id',false,'steps desc');
- $user_steps["ranking"] = count($ranks)+1;
- return $user_steps;
- }
- /**
- * 福利社个人运动详情页
- */
- public function steps_detailOp()
- {
- $mid = session_helper::memberid();
- $info = new member_info($mid);
- $member = $info->filter();
- $today = strtotime(date('Y-m-d',time()));
- $first = $today - 86400 * 6;
- $mod_room = Model('room');
- $items = $mod_room->roomSteps(["member_id"=>$mid,"date_stamp"=>[['gt',$first-1],['lt',$today+1]]],'*',7);
- $steps_info = [];
- if(!empty($items)){
- foreach ($items as $item){
- $steps_info[$item['date_stamp']] = $item;
- }
- }
- $charts = $this->steps_charts($first,$steps_info);
- $room_steps = [];
- $rooms = $mod_room->getRoomParts(["member_id"=>$mid,"state"=>0],'room_id',false);
- if(!empty($rooms))
- {
- foreach ($rooms as $room) {
- $params = $mod_room->getRoom($room['room_id']);
- $rinfo = new room\room_info($params);
- if($rinfo->type() !== proto_type::room_chat) continue;
- $room['avatar'] = $rinfo->avatar();
- $name = $rinfo->name();
- $room['name'] = util::ellipsis($name);
- $room['steps'] = $mod_room->totalRoomSteps($room['room_id']);
- $room_steps[] = $room;
- }
- }
- return self::outsuccess([
- "background"=>RESOURCE_SITE_URL. "/mobile/talk/images/cover.png",
- "avatar"=>$member['avatar'],
- "nickname"=>$member['nickname'],
- "charts"=>$charts,
- "room_steps"=>$room_steps,
- "donate_rate"=>self::donate_rate],
- 'talk/steps_detail');
- }
- private function steps_charts($first_date,$steps_info)
- {
- $charts = [];
- for ($i=0; $i<7; $i++ )
- {
- $key = $first_date + 86400 * $i;
- if($i==0){
- $month = date('n月',$key);
- $charts["month"] = $month;
- }
- $charts["date"][] = date('d',$key);
- if(isset($steps_info[$key])){
- $charts["steps"][] = intval($steps_info[$key]['steps']);
- }else{
- $charts["steps"][] = 0;
- }
- }
- return $charts;
- }
- /**
- * 捐赠步数
- */
- public function donate_stepsOp()
- {
- $room_id = intval($_GET['room_id']);
- $steps = intval($_GET['steps']);
- if($room_id <= 0 || $steps <= 0 ) {
- return self::outerr(errcode::ErrParamter,"错误的参数");
- }
- $user = session_helper::memberid();
- $today = strtotime(date('Y-m-d',time()));
- $mod_room = Model('room');
- $room = $mod_room->getRoomParts(['room_id' => $room_id,"member_id" => $user,"state" => 0],'*',1);
- if(empty($room)) {
- return self::outerr(errcode::ErrParamter,"您不在此群中");
- }
- $item = $mod_room->findSteps(['room_id' => $room_id,"member_id" => $user,'date_stamp' => $today]);
- if(!empty($item)) {
- $mod_room->editSteps(['steps_id' => $item['steps_id']],['steps' => ['exp',"steps + {$steps}"]]);
- } else {
- $mod_room->addSteps($room_id,$user,$steps,$today);
- }
- $amount = bcdiv($steps,self::donate_rate,2);
- $mod_room->editRoomParts(['room_id' => $room_id,"member_id" => $user,"state" => 0],["steps" => ['exp',"steps + {$steps}"],"bonus" => ['exp',"bonus + {$amount}"]]);
- $mod_room->editRoom(['room_id'=>$room_id],['steps_count' => ['exp',"steps_count + {$steps}"], 'shared_bonus' => ['exp',"shared_bonus + {$amount}"]]);
- $content = ['user' => session_helper::memberid(),'steps' => $steps,'amount' => $amount];
- room\factory_client::instance()->notice_room($room_id,proto_type::msg_stype_donate,$content);
- return self::outsuccess(['amount'=>$amount]);
- }
- ///////////////群认证////////////////////////////////////////////////////////////////////////////////////////
- public function room_certificateOp()
- {
- $type = intval($_GET['ctype']);
- $room_id = intval($_GET['talk_id']);
- $cert = Model('room')->findCert(['room_id'=>$room_id,"ctype"=>$type]);
- if(empty($cert)) $cert = [];
- if($type == 1){
- return self::outsuccess(['room_id'=>$room_id,"cert"=>$cert],'talk/school_certs');
- }elseif($type == 2){
- return self::outsuccess(['room_id'=>$room_id,"cert"=>$cert],'talk/enterprise_certs');
- }else{
- return;
- }
- }
- public function commit_certsOp()
- {
- $cmobile = intval($_POST['cmobile']);
- $code = trim($_POST['code']);
- $validator = new Validator();
- $validator->setValidate(Validator::verify_mobile($cmobile));
- $validator->setValidate(Validator::verify_smscode($code));
- $err = $validator->validate();
- if ($err != '') {
- return self::outerr(errcode::ErrInputParam, $err);
- }
- $ret = sms_helper::check_code(Sms::register_code,$code,$cmobile);
- if(is_array($ret)) {
- return self::outerr($ret['code'], $ret['msg']);
- }
- $ctype = intval($_POST['ctype']);
- $room_id = intval($_POST['room_id']);
- $short_name = trim($_POST['short_name']);
- $full_name = trim($_POST['full_name']);
- $cmail = trim($_POST['cmail']);
- if(!preg_match('/^([.a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\\.[a-zA-Z0-9_-])+/',$cmail)) {
- return self::outerr(errcode::ErrInputParam, "请输入正确的邮箱地址");
- }
- $cname = trim($_POST['cname']);
- $cinfo = trim($_POST['cinfo']);
- $cimage = $this->upload_cimage();
- if($cimage === false){
- return self::outerr(errcode::ErrUploadFileFailed);
- }
- $mod_room = Model('room');
- $item = $mod_room->findCert(["room_id"=>$room_id]);
- if(empty($item))
- {
- $insertId = $mod_room->addCert($ctype,$room_id,$short_name,$full_name,$cname,$cmobile,$cmail,$cinfo,$cimage);
- if($insertId){
- return self::outsuccess(null);
- }else{
- return self::outerr(errcode::ErrDB,"提交失败");
- }
- }
- if($item['cstatus'] == 0){
- return self::outerr(errcode::ErrTalk,"您已提交一份认证申请,请耐心等待审核,勿重复提交");
- }
- $updata['ctype'] = $ctype;
- $updata['room_id'] = $room_id;
- $updata["short_name"] = $short_name;
- $updata["full_name"] = $full_name;
- $updata["cname"] = $cname;
- $updata["cmobile"] = $cmobile;
- $updata["cmail"] = $cmail;
- $updata["cinfo"] = $cinfo;
- $updata["cimage"] = $cimage;
- $updata['cstatus'] = 0;
- $updata["add_time"] = time();
- $update = $mod_room->editCerts(['cert_id'=>$item['cert_id']],$updata);
- if($update){
- return self::outsuccess(null);
- }else{
- return self::outerr(errcode::ErrDB,"提交失败");
- }
- }
- private function upload_cimage()
- {
- $upload_dir = 'room/certs/';
- $uploader = new room\uploader();
- $res = $uploader->upfile($upload_dir,$info);
- if($res) {
- return '/data/upload/'.$upload_dir . $info['msg'].'?tm='.time();
- } else {
- return false;
- }
- }
- ///////////////群基金////////////////////////////////////////////////////////////////////////////////////////
- public function share_bonusOp()
- {
- $room_id = intval($_GET['room_id']);
- if($room_id <= 0) {
- return self::outerr(errcode::ErrParamter);
- }
- $mod_room = Model('room');
- $room = $mod_room->getRoom($room_id);
- if(empty($room)) {
- return self::outerr(errcode::ErrParamter,"群信息有误");
- }
- $parts = new room\room_parts($room_id);
- $uids = $parts->allparts();
- if(!in_array(session_helper::memberid(),$uids)) {
- return self::outerr(errcode::ErrParamter,"不可以偷看别人的共享资金哦");
- }
- $list = [];
- $items = $mod_room->getRoomsgList(["room_id"=>$room_id,"type"=>['in',[proto_type::msg_type_donate,proto_type::msg_type_spend]]]);
- if(!empty($items))
- {
- $uids = [];
- foreach ($items as $idx => $item) {
- $orgmsg = json_decode($item['orgmsg'],true);
- $items[$idx]['amount'] = $orgmsg['amount'];
- $items[$idx]['member_id'] = $orgmsg['user'];
- $uids[] = $orgmsg['user'];
- }
- $uids = array_unique($uids);
- $info = [];
- $members = member_info::get_members($uids);
- foreach ($members as $member){
- $info[$member['member_id']]['avatar'] = $member['avatar'];
- $info[$member['member_id']]['name'] = $member['nickname'];
- }
- foreach ($items as $val)
- {
- $uid = $val['member_id'];
- $val['avatar'] = $info[$uid]['avatar'];
- $val['name'] = $info[$uid]['name'];
- $val['msg'] = $val['type'] == proto_type::msg_type_donate ? "+ <span>".$val['amount']."</span>" : "- <span>".$val['amount']."</span>";
- $val['state'] = $val['type'] == proto_type::msg_type_donate ? 1:0;
- $val['operate'] = $val['type'] == proto_type::msg_type_donate ? "贡献":"消费";
- $list[] = $val;
- }
- }
- return self::outsuccess(["room"=>$room,"list" => $list],'talk/share_bonus');
- }
- //////////////添加好友/////////////////////////////////////////////////////////////////////////////////////////
- /**
- * 信息输入板
- * param $type int 1:群申请 2:好友申请 3:查看/编辑群公告
- * @场景type=1 relay_id(二维码扫码 立即入群)
- * @场景type=2 talk_id(申请加好友的member_id)
- * @场景type=3 talke_id(room_id)
- */
- public function message_boardOp()
- {
- $type = intval($_GET['type']);
- $talk_id = intval($_GET['talk_id']);
- $relay_id = intval($_GET['relay_id']);
- $isManager = intval($_GET['isManager']);
- if(empty($type)) {
- return self::outerr(errcode::ErrParamter,"打开页面失败");
- }
- $ajax_param["type"] = $type;
- switch ($type){
- case 1:
- $ajax_param["talk_id"] = $talk_id;
- $ajax_param["relay_id"] = $relay_id;
- break;
- case 2:
- $ajax_param["talk_id"] = $talk_id;
- break;
- case 3:
- $ajax_param["talk_id"] = $talk_id;
- $room = Model('room')->getRoom($talk_id);
- $ajax_param['notice'] = isset($room['notice']) ? $room['notice'] : "";
- $ajax_param['isManager'] = $isManager;
- break;
- default:
- $ajax_param = [];
- }
- return self::outsuccess(["ajax_param"=>$ajax_param],'talk/message_board');
- }
- public function add_friendsOp()
- {
- $user = intval($_GET['user']);
- $msg = trim($_GET['msg']);
- if($user <= 0 ){
- return self::outerr(errcode::ErrRelation,"发送失败");
- }
- $relateion = new relation\mem_relation(session_helper::memberid());
- $isfriend = $relateion->is_friends($user);
- if($isfriend == false) {
- $relateion->subscribe($user);
- room\pusher::instance()->apply_friend(session_helper::memberid(),$user,$msg);
- }
- return self::outsuccess(null);
- }
- public function friends_applyOp()
- {
- return self::outsuccess(null,'talk/friends_apply');
- }
- public function ajax_friends_applyOp()
- {
- $mod_room = Model('room');
- $member = session_helper::memberid();
- $hasmore = false;
- $per_page = 20;
- $applys = $mod_room->roomApplys(['room_id'=>0,'viewer'=>$member],"*",$per_page);
- if(!empty($applys)){
- foreach ($applys as $k => $apply){
- $info = new member_info($apply['member_id']);
- $member = $info->filter();
- $applys[$k]['avatar'] = $member['avatar'];
- $applys[$k]['is_man'] = $member['is_man'];
- $applys[$k]['nickname'] = $member['nickname'];
- $applys[$k]['step_msg'] = $this->step_to_str($apply['step']);
- }
- if(count($applys) >= $per_page) $hasmore = true;
- }
- return self::outsuccess(["applys"=>$applys,"mobile_page"=>["hasmore"=>$hasmore,"curpage"=>$this->cur_page]]);
- }
- public function new_applysOp(){
- return self::outsuccess(null,'talk/new_applys');
- }
- public function ajax_get_applysOp()
- {
- $mod_room = Model('room');
- $member = session_helper::memberid();
- $items = $mod_room->getRoomsgList(['member_id'=>$member,"type" => proto_type::msg_type_apply],$this->page_size());
- if(!empty($items))
- {
- foreach ($items as $k => $apply) {
- $orgmsg = json_decode($apply['orgmsg'],true);
- $items[$k]['type'] = $orgmsg['type'];
- $items[$k]['userid'] = $orgmsg['from']['userid'];
- $items[$k]['nickname'] = $orgmsg['from']['nickname'];
- $items[$k]['avatar'] = $orgmsg['from']['avatar'];
- $items[$k]['content'] = $orgmsg['note'];
- $items[$k]['state'] = $this->state_to_str($orgmsg['state']);
- $items[$k]['step'] = $this->state_to_step($orgmsg['state']);
- }
- $hasmore = count($items) < $this->page_size() ? false : true;
- }
- else {
- $hasmore = false;
- }
- return self::outsuccess(["applys"=>$items,"mobile_page" => ["hasmore" => $hasmore,"curpage" => $this->page_no()]]);
- }
- /////////////////申请入群///////////////////////////////////////////////////////////////////////////////////////////
- public function send_applyOp()
- {
- $room_id = intval($_GET['room_id']);
- $relay_id = intval($_GET['relay_id']);
- if($room_id <= 0) {
- return self::outerr(errcode::ErrParamter,"请求失败");
- }
- $member = session_helper::memberid();
- $mod_room = Model('room');
- $room = $mod_room->getRoom($room_id);
- if(empty($room)) {
- return self::outerr(errcode::ErrParamter,"房间不存在");
- }
- $isFromQr = false;
- if($relay_id > 0) {
- $parts = new room\room_parts($room_id);
- $uids = $parts->allparts();
- $isFromQr = in_array($relay_id,$uids) ? true : false;
- }
- $pwd = $room['passwd'];
- $owner = $room['room_owner'];
- $inviter = $isFromQr ? $relay_id : $owner;
- if(empty($pwd) || $isFromQr) {
- //立即入群
- $ret = room\factory_client::instance()->invite($room_id,$inviter,[$member]);
- if($ret === false) {
- return self::outerr(errcode::ErrRoom,"进群失败");
- }
- else
- {
- $members = member_info::get_members($ret['newusers']);
- $result['invitees'] = $members;
- return self::outsuccess($result);
- }
- }
- elseif(intval($_GET['apply'] == 1))
- {
- //发送入群申请
- $msg = trim($_GET['msg']);
- if(strlen($msg) >= 100){
- return self::outerr(errcode::ErrParamter,"入群申请过长,请缩短一些");
- }
- $add = $mod_room->addApply($room_id,$member,$msg);
- if($add){
- return self::outsuccess(null,"申请成功");
- } else {
- return self::outerr(errcode::ErrDB,"提交失败");
- }
- }else {
- if(strtolower(trim($_GET['passwd'])) !== strtolower($pwd)) {
- return self::outerr(errcode::ErrParamter, "群密码有误");
- }
- $ret = room\factory_client::instance()->invite($room_id,$owner,[$member]);
- if($ret === false) {
- return self::outerr(errcode::ErrRoom, "进群失败");
- }
- $members = member_info::get_members($ret['newusers']);
- $result['invitees'] = $members;
- return self::outsuccess($result);
- }
- }
- public function pass_applyOp()
- {
- $apply = intval($_GET['apply_id']);
- $step = intval($_GET['step']);
- $type = intval($_GET['type']); // 1:申请入群 2:申请好友
- $member = session_helper::memberid();
- if($apply <=0 || $step <=0 || $step >2 || $type <=0 || $type >2) {
- return self::outerr(errcode::ErrParamter,"请求失败");
- }
- $mod_room = Model('room');
- if($type == 1){
- $pass = $this->pass_room($mod_room,$apply,$member,$step);
- } else {
- $pass = $this->pass_friends($mod_room,$apply,$member,$step);
- }
- if(!$pass) {
- return self::outerr(errcode::ErrTalk,"网络错误");
- }
- $edit = $mod_room->editApply($apply,$member,$step);
- if($edit){
- return self::outsuccess(null,"操作成功");
- }else{
- return self::outerr(errcode::ErrDB,"提交失败");
- }
- }
- private function pass_room($mod_room,$apply,$viewer,$step)
- {
- if($step == 1)
- {
- $item = $mod_room->findApply($apply);
- $ret = room\factory_client::instance()->invite($item["room_id"],$viewer,[$item['member_id']]);
- if($ret === false)
- {
- return false;
- }
- } else
- {
- //todo refuse notice
- }
- return true;
- }
- private function pass_friends($mod_room,$apply,$viewer,$step)
- {
- if($step == 1) {
- $item = $mod_room->findApply($apply);
- }
- else
- {
- //todo refuse notice
- }
- return true;
- }
- public function room_applysOp(){
- return self::outsuccess(null,'talk/room_apply');
- }
- public function ajax_room_applyOp()
- {
- $room_id = intval($_GET['room_id']);
- if($room_id <= 0){
- return self::outerr(errcode::ErrParamter,"缺少必要参数");
- }
- $mod_room = Model('room');
- $item = $mod_room->getRoom($room_id);
- if(empty($item)) {
- return self::outerr(errcode::ErrParamter,"错误的群信息");
- }
- $member = session_helper::memberid();
- $info = new room\room_info($item);
- Log::record("room:{$room_id} user:$member",Log::DEBUG);
- if($info->owner() != $member) {
- return self::outerr(errcode::ErrTalk,"只有管理员可以查看申请列表");
- }
- $hasmore = false;
- $per_page = 20;
- $applys = $mod_room->roomApplys(['room_id' => $room_id],"*",$per_page);
- if(!empty($applys)){
- foreach ($applys as $k => $apply){
- $info = new member_info($apply['member_id']);
- $member = $info->filter();
- $applys[$k]['avatar'] = $member['avatar'];
- $applys[$k]['is_man'] = $member['is_man'];
- $applys[$k]['nickname'] = $member['nickname'];
- $applys[$k]['step_msg'] = $this->step_to_str($apply['step']);
- }
- if(count($applys) >= $per_page) $hasmore = true;
- }
- return self::outsuccess(["applys"=>$applys,"mobile_page"=>["hasmore"=>$hasmore,"curpage"=>$this->cur_page]]);
- }
- private function step_to_str($step)
- {
- switch ($step){
- case '0': return "申请中";
- case '1': return "已接受";
- case '2': return "已拒绝";
- default : return "申请中";
- }
- }
- private function state_to_str($state){
- switch ($state){
- case 'pending': return "申请中";
- case '1': return "已接受";
- case '2': return "已拒绝";
- default : return "申请中";
- }
- }
- private function state_to_step($state){
- switch ($state){
- case 'pending': return 0;
- case '1': return "已接受";
- case '2': return "已拒绝";
- default : return "申请中";
- }
- }
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- public function room_goodsOp()
- {
- $room_id = intval($_GET['talk_id']);
- if( $room_id <= 0 ) {
- return self::outerr(errcode::ErrParamter,"参数有误");
- }
- $mod_room = Model('room');
- $items = $mod_room->getRoomsgList(["room_id"=>$room_id,"type"=>proto_type::msg_type_goods],20);
- $gids = [];
- foreach ($items as $item) {
- $goods_id = intval($item['orgmsg']);
- if($goods_id > 0) $gids[] = $goods_id;
- }
- $goods = [];
- if(!empty($gids)) {
- $gids = array_unique($gids);
- $helper = new goods_helper($this->price_calcer());
- $order = "field(goods_id,".implode(',',$gids).") asc";
- $goods = $helper->get_infos($gids,0,$order);
- }
- return self::outsuccess( ["goods" => $goods] ,"/talk/room_goods");
- }
- /////
- public function del_fiendsOp()
- {
- $userid = intval($_GET['userid']);
- try
- {
- if(relation_helper::is_follow(session_helper::memberid(),$userid))
- {
- if(relation_helper::onUnSubscribe(session_helper::memberid(),$userid) == true) {
- return self::outsuccess(NULL);
- } else{
- return self::outerr(errcode::ErrRelation,"取消好友关注失败");
- }
- }
- else
- {
- }
- } catch (Exception $ex) {
- return self::outerr(errcode::ErrRelation,"取消好友关注失败");
- }
- }
- }
|