request->get('user_id'); $findUserID = Yii::$app->request->get('find_phone');//要查找的用户ID if (!$userID) return ClientMessageServices::sendMessage(ResultStatusServices::RS_USER_NOT_LOGIN);//验证登录 if (!$findUserID || $userID == $findUserID) return ClientMessageServices::sendMessage(ResultStatusServices::RS_PARAM_ERROR); $userDbData = User::findOne(['username' => $findUserID]); if (!$userDbData) return ClientMessageServices::sendMessage(ResultStatusServices::RS_NOT_FIND_IN_DB); //返回数据 $returnData['user_id'] = $userDbData->id; $returnData['nickname'] = $userDbData->nickname; $returnData['level'] = $userDbData->level; $returnData['gold'] = $userDbData->gold; return ClientMessageServices::sendMessage(ResultStatusServices::RS_OPERATION_SUCCESS, $returnData); } /** * 添加好友 */ public function actionAdd() { $userID = Yii::$app->request->get('user_id'); $friendUserID = Yii::$app->request->get('friend_user_id');//要添加的用户ID if (!$userID) return ClientMessageServices::sendMessage(ResultStatusServices::RS_USER_NOT_LOGIN);//验证登录 if (!$friendUserID || $userID == $friendUserID) return ClientMessageServices::sendMessage(ResultStatusServices::RS_PARAM_ERROR); //查找用户 $userDbData = User::findById($friendUserID); if (!$userDbData) return ClientMessageServices::sendMessage(ResultStatusServices::RS_NOT_FIND_IN_DB); //查找是否已经添加过这个用户 if (Friend::findOne(['user_id' => $userID, 'friend_user_id' => $friendUserID, 'status' => EnumUtil::FRIEND_AGREE]) || Friend::findOne(['user_id' => $friendUserID, 'friend_user_id' => $userID, 'status' => EnumUtil::FRIEND_AGREE]) ) return ClientMessageServices::sendMessage(ResultStatusServices::RS_ADDED_FRIEND); //已经申请过 if (Friend::findOne(['user_id' => $userID, 'friend_user_id' => $friendUserID, 'status' => EnumUtil::FRIEND_UNTREATED]) || Friend::findOne(['user_id' => $friendUserID, 'friend_user_id' => $userID, 'status' => EnumUtil::FRIEND_UNTREATED]) ) return ClientMessageServices::sendMessage(ResultStatusServices::RS_ADDED_FRIEND_APPLY); //添加数据 $friendDbData = new Friend(); $friendDbData->user_id = $userID; $friendDbData->friend_user_id = $friendUserID; if (!$friendDbData->save()) return ClientMessageServices::sendMessage(ResultStatusServices::RS_SAVE_DB_ERROR); //推送消息 MessageServices::addFriendMessage($friendUserID, $friendDbData->id); UserLogService::addUserSystemLog($friendUserID, EnumUtil::USER_SYSTEM_LOG_FRIEND, sprintf('%s请求加好友', User::findById($userID)->nickname)); return ClientMessageServices::sendMessage(ResultStatusServices::RS_OPERATION_SUCCESS); } /** * 获取需要进行好友回复的列表 */ public function actionGetRespondList() { $userID = Yii::$app->request->get('user_id'); $offset = Yii::$app->request->get('offset'); //偏移 $count = Yii::$app->request->get('count'); //需要多少条数据 if (!$userID) return ClientMessageServices::sendMessage(ResultStatusServices::RS_USER_NOT_LOGIN);//验证登录 if ($offset === null || $offset < 0 || $count === null || $count < 0 || $count > 10) return ClientMessageServices::sendMessage(ResultStatusServices::RS_PARAM_ERROR); //获取列表 $find = Friend::find()->where(['friend_user_id' => $userID, 'status' => EnumUtil::FRIEND_UNTREATED])->orderBy(['updated_at' => SORT_DESC]); $totalCount = $find->count(); $listDbData = $find->offset($offset)->limit($count)->all(); $listData = []; foreach ($listDbData as $itemDbData) { array_push($listData, Friend::genClientFriendData($userID, $itemDbData->user_id)); } $returnData['offset'] = $offset; $returnData['total_count'] = $totalCount; $returnData['list'] = $listData; return ClientMessageServices::sendMessage(ResultStatusServices::RS_OPERATION_SUCCESS, $returnData); } /** * 同意或拒绝添加好友 */ public function actionRespond() { $userID = Yii::$app->request->get('user_id'); $respondUserID = Yii::$app->request->get('respond_user_id');//要操作的用户ID $type = Yii::$app->request->get('type');//回复类型,1:同意;2:拒绝; if (!$userID) return ClientMessageServices::sendMessage(ResultStatusServices::RS_USER_NOT_LOGIN);//验证登录 if (!$respondUserID || $userID == $respondUserID || !in_array($type, EnumUtil::FRIEND_LIST)) return ClientMessageServices::sendMessage(ResultStatusServices::RS_PARAM_ERROR); //判断是否回复过 $friendDbData = Friend::findOne(['user_id' => $respondUserID, 'friend_user_id' => $userID]); if ($friendDbData->status != EnumUtil::FRIEND_UNTREATED) return ClientMessageServices::sendMessage(ResultStatusServices::RS_FRIEND_RESPONDED); //修改类型 $friendDbData->status = $type; if (!$friendDbData->save()) return ClientMessageServices::sendMessage(ResultStatusServices::RS_SAVE_DB_ERROR); //推送消息 MessageServices::addFriendResponseMessage($respondUserID, $friendDbData->id, $type); return ClientMessageServices::sendMessage(ResultStatusServices::RS_OPERATION_SUCCESS); } /** * 批量回复好友添加 */ public function actionRespondList() { $userID = Yii::$app->request->get('user_id'); $type = Yii::$app->request->get('type');//回复类型,1:同意;2:拒绝; if (!$userID) return ClientMessageServices::sendMessage(ResultStatusServices::RS_USER_NOT_LOGIN);//验证登录 if (!$type || ($type != 1 && $type != 2)) return ClientMessageServices::sendMessage(ResultStatusServices::RS_PARAM_ERROR); //获取需要修改的列表 Friend::updateAll(['status' => $type, 'updated_at' => time()], 'friend_user_id =:friend_user_id and status =:status', [':friend_user_id' => $userID, ':status' => EnumUtil::FRIEND_UNTREATED]); // Friend::updateAll(['status' => $type, 'updated_at' => time()], // 'friend_user_id =:friend_user_id', // [':friend_user_id' => $userID]); return ClientMessageServices::sendMessage(ResultStatusServices::RS_OPERATION_SUCCESS); } /** * 获取好友列表 */ public function actionFriendList() { $userID = Yii::$app->request->get('user_id'); $offset = Yii::$app->request->get('offset'); //偏移 $count = Yii::$app->request->get('count'); //需要多少条数据 $type = Yii::$app->request->get('type');//排行类型,0:金币排行,1:等级排行,2:战力排行 if (!$userID) return ClientMessageServices::sendMessage(ResultStatusServices::RS_USER_NOT_LOGIN);//验证登录 if ($offset === null || $offset < 0 || $count === null || $count < 0 || $count > 10 || ($type != 0 && $type != 1 && $type != 2)) return ClientMessageServices::sendMessage(ResultStatusServices::RS_PARAM_ERROR); //获取列表 $find = Friend::find()->where('status=:status and (user_id=:user_id or friend_user_id=:friend_user_id)') ->addParams([':status' => EnumUtil::FRIEND_AGREE, ':user_id' => $userID, ':friend_user_id' => $userID]) ->orderBy(['updated_at' => SORT_DESC]); $orderByKey = 'level'; if ($type == 0) $orderByKey = 'gold'; if ($type == 1) $orderByKey = 'level'; if ($type == 2) $orderByKey = 'fighting_capacity'; $mysql = 'SELECT * FROM (SELECT @index:=@index + 1 AS `index`, o.* FROM (SELECT @index:=0) i, (SELECT f.*, u1.gold gold, u1.nickname nickname, u1.level level, u1.fighting_capacity fighting_capacity, u2.gold be_gold, u2.nickname be_nickname, u2.level be_level, u2.fighting_capacity be_fighting_capacity FROM friend f LEFT JOIN user u1 ON u1.id = f.user_id LEFT JOIN user u2 ON u2.id = f.friend_user_id WHERE (f.user_id = :user_id OR f.friend_user_id = :user_id) and f.status=1 ) o ORDER BY :order_field DESC LIMIT :offset , :len) AS r '; $listDbData = Yii::$app->db->createCommand($mysql) ->bindValue(':user_id', $userID) ->bindValue(':offset', $offset) ->bindValue(':len', $count) ->bindValue(':order_field', $orderByKey) ->queryAll(); $listData = []; for ($i = 0; $i < count($listDbData); $i++) { $itemDbData = $listDbData[$i]; if ($itemDbData['friend_user_id'] != $userID) $data = Friend::genClientFriendData($userID, $itemDbData['friend_user_id']); else $data = Friend::genClientFriendData($userID, $itemDbData['user_id']); $data['index'] = $itemDbData['index']; array_push($listData, $data); } $totalCount = $find = Friend::find()->where('status=:status and (user_id=:user_id or friend_user_id=:friend_user_id)') ->addParams([':status' => EnumUtil::FRIEND_AGREE, ':user_id' => $userID, ':friend_user_id' => $userID]) ->count(); $returnData['offset'] = $offset; $returnData['total_count'] = $totalCount; $returnData['list'] = $listData; return ClientMessageServices::sendMessage(ResultStatusServices::RS_OPERATION_SUCCESS, $returnData); } /** * 获取好友列表 */ public function actionAjaxfriends() { $Code = $_POST['token']; //验证 if (!$Code) { $json = array('code' =>'1004', 'error_msg' =>'用户不存在'); return $json; } $userData = User::findOne(['code' => $Code]); if ($userData == null) { $json = array('code' =>'1004', 'msg' =>'用户不存在'); return $json; } $userID = $userData['id']; $html=''; $listData = $find = Friend::find()->where('status=:status and (user_id=:user_id or friend_user_id=:friend_user_id)') ->addParams([':status' => EnumUtil::FRIEND_AGREE, ':user_id' => $userID, ':friend_user_id' => $userID]) ->all(); $listarr=array(); foreach($listData as $k => $v){ if($v['user_id']==$userID){ $listarr[$k]['friendid']=$v['friend_user_id']; }else{ $listarr[$k]['friendid']=$v['user_id']; } $friendData = User::findOne(['id' => $listarr[$k]['friendid']]); $listarr[$k]['friendname']=$friendData['nickname']; if(empty($friendData['avatar'])){ $friendData['avatar']=1; } if(strlen($friendData['avatar'])>5){ $friendData['avatar']= 'http://'.$_SERVER['HTTP_HOST'].$friendData['avatar']; }else{ $friendData['avatar']= '/farm/resource/assets/icon/head/head'.$friendData['avatar'].'.png'; } $html .=' '.$listarr[$k]['friendname'].' '; } if($html==''){ $json = array('code' =>'1004', 'msg' =>'您当前没有好友,请先进入游戏好友界面添加好友'); return $json; } $returnData['html'] = $html; return ClientMessageServices::sendMessage(ResultStatusServices::RS_OPERATION_SUCCESS, $returnData); } /** * 获取好友列表 */ public function actionChatlog() { $Code = $_POST['token']; $toid = $_POST['toid']; //验证 if (!$Code) { $json = array('code' =>'1004', 'error_msg' =>'当前登录已掉线,请重新登录'); return $json; } $userData = User::findOne(['code' => $Code]); if ($userData == null) { $json = array('code' =>'1004', 'msg' =>'当前登录已掉线,请重新登录'); return $json; } $friendData = User::findOne(['id' => $toid]); if ($friendData == null) { $json = array('code' =>'1004', 'msg' =>'该好友不存在'); return $json; } $userID = $userData['id']; $html=''; if(strlen($userData['avatar'])>5){ $userData['avatar']= 'http://'.$_SERVER['HTTP_HOST'].$userData['avatar']; }else{ $userData['avatar']= '/farm/resource/assets/icon/head/head'.$userData['avatar'].'.png'; } $returnData['html'] = $html; $returnData['friendinfo'] = $friendData; $returnData['userinfo'] = $userData; return ClientMessageServices::sendMessage(ResultStatusServices::RS_OPERATION_SUCCESS, $returnData); } public function actionChatajax() { $Code = $_POST['token']; $toid = $_POST['toid']; $type = $_POST['type']; $chatmax = $_POST['chatmax']; $headimg = $_POST['headimg']; $data = $_POST['data']; //验证 if (!$Code) { $json = array('code' =>'1004', 'error_msg' =>'当前登录已掉线,请重新登录'); return $json; } $userData = User::findOne(['code' => $Code]); if ($userData == null) { $json = array('code' =>'1004', 'msg' =>'当前登录已掉线,请重新登录'); return $json; } $friendData = User::findOne(['id' => $toid]); if ($friendData == null) { $json = array('code' =>'1004', 'msg' =>'目标用户不存在'); return $json; } $userID = $userData['id']; $friendID = $friendData['id']; Chatlog::updateAll(['zuixin'=>'0'],'(userid='.$userID.' and touserid='.$friendID.') or (touserid='.$userID.' and userid='.$friendID.')'); $Chatlog = Chatlog::find()->where('(userid='.$userID.' and touserid='.$friendID.') or (touserid='.$userID.' and userid='.$friendID.')')->orderBy(["id" => SORT_DESC])->one(); if(!$Chatlog || $Chatlog['created_at']userid = $userID; $chat->username = $userData['username']; $chat->touserid = $friendData['id']; $chat->tousername = $friendData['username']; $chat->content = ''; $chat->type = 0; $chat->headimg = $headimg; $chat->status=0; if (!$chat->save()) { $json = array('code' =>'1004', 'msg' =>'操作失败'); return $json; } } $chat = new Chatlog(); $chat->userid = $userID; $chat->username = $userData['username']; $chat->touserid = $friendData['id']; $chat->tousername = $friendData['username']; $chat->content = $data; $chat->type = $type; $chat->headimg = $headimg; $chat->status=0; if (!$chat->save()) { $json = array('code' =>'1004', 'msg' =>'操作失败'); return $json; } $Chatlog = Chatlog::find()->where('(userid='.$userID.' and touserid='.$friendID.') or (touserid='.$userID.' and userid='.$friendID.')')->orderBy(["id" => SORT_DESC])->one(); $returnData['chatmax'] = $Chatlog['id']; return ClientMessageServices::sendMessage(ResultStatusServices::RS_OPERATION_SUCCESS, $returnData); } public function actionChatgetnews() { $Code = $_POST['token']; $toid = $_POST['toid']; $chatmax = $_POST['chatmax']; //验证 if (!$Code) { $json = array('code' =>'1004', 'error_msg' =>'当前登录已掉线,请重新登录'); return $json; } $userData = User::findOne(['code' => $Code]); if ($userData == null) { $json = array('code' =>'1004', 'msg' =>'当前登录已掉线,请重新登录'); return $json; } $friendData = User::findOne(['id' => $toid]); if ($friendData == null) { $json = array('code' =>'1004', 'msg' =>'目标用户不存在'); return $json; } $beginToday=mktime(0,0,0,date('m'),date('d'),date('Y')); $userID = $userData['id']; $friendID = $friendData['id']; $html=''; if($chatmax==0){ $Chatlog = Chatlog::find()->where('type=0 and ((userid='.$userID.' and touserid='.$friendID.') or (touserid='.$userID.' and userid='.$friendID.'))')->orderBy(["id" => SORT_DESC])->one(); if($Chatlog){ if($Chatlog['created_at']<$beginToday){ $Chatloglist = Chatlog::find()->where('id>='.$Chatlog['id'].' and ((userid='.$userID.' and touserid='.$friendID.') or (touserid='.$userID.' and userid='.$friendID.'))')->orderBy(["id" => SORT_ASC])->all(); }else{ $Chatloglist = Chatlog::find()->where('created_at>='.$beginToday.' and ((userid='.$userID.' and touserid='.$friendID.') or (touserid='.$userID.' and userid='.$friendID.'))')->orderBy(["id" => SORT_ASC])->all(); } } }else{ $Chatloglist = Chatlog::find()->where('id>'.$chatmax.' and ((userid='.$userID.' and touserid='.$friendID.') or (touserid='.$userID.' and userid='.$friendID.'))')->orderBy(["id" => SORT_ASC])->all(); } foreach($Chatloglist as $k => $v){ if($v['type']==0){ $no=date("H",$v['created_at']); if ($no>0&&$no<=6){ $shichen="凌晨"; } if ($no>6&&$no<12){ $shichen="上午"; } if ($no>=12&&$no<=18){ $shichen="下午"; } if ($no>18&&$no<=24){ $shichen="晚上"; } if(strlen($v['avatar'])>5){ $v['avatar']= 'http://'.$_SERVER['HTTP_HOST'].$v['avatar']; }else{ $v['avatar']= '/farm/resource/assets/icon/head/head'.$v['avatar'].'.png'; } $html .=''.date('Y年m月d日 ',$v['created_at']).$shichen.date('H:i',$v['created_at']).''; }else{ if($v['userid']==$userID){ $html .=''; }else{ $html .=''; } $html .=''.$v['username'].''; if($v['type']==2){ $html .=''.$v['content'].''; }else{ $html .=''.$v['content'].''; } if($v['userid']==$userID){ $html .=''; } $html .=''; } } $Chatlog = Chatlog::find()->where('(userid='.$userID.' and touserid='.$friendID.') or (touserid='.$userID.' and userid='.$friendID.')')->orderBy(["id" => SORT_DESC])->one(); $returnData['chatmax'] = $Chatlog['id']; $returnData['html'] = $html; return ClientMessageServices::sendMessage(ResultStatusServices::RS_OPERATION_SUCCESS, $returnData); } public function actionChatlist() { $Code = $_POST['token']; $chatmax = $_POST['chatmax']; //验证 if (!$Code) { $json = array('code' =>'1004', 'error_msg' =>'当前登录已掉线,请重新登录'); return $json; } $userData = User::findOne(['code' => $Code]); if ($userData == null) { $json = array('code' =>'1004', 'msg' =>'当前登录已掉线,请重新登录'); return $json; } $userID=$userData['id']; $beginToday=mktime(0,0,0,date('m'),date('d'),date('Y')); $zuotian=$beginToday-86400; $Chatloglist = Chatlog::find()->where('(userid='.$userID.' or touserid='.$userID.') and zuixin=1')->orderBy(["id" => SORT_DESC])->all(); $html=''; foreach($Chatloglist as $k => $v){ if($v['userid']==$userID){ $listarr[$k]['friendid']=$v['touserid']; }else{ $listarr[$k]['friendid']=$v['userid']; } if($v['type']==2){ $v['content']='图片'; } if($v['created_at']<$zuotian){ $shichen=date('Y年m月d日 ',$v['created_at']); }elseif($v['created_at']<$beginToday && $v['created_at']>$zuotian){ $shichen='昨天 '; }else{ $shichen=''; } $friendData = User::findOne(['id' => $listarr[$k]['friendid']]); if(strlen($friendData['avatar'])>5){ $friendData['avatar']= 'http://'.$_SERVER['HTTP_HOST'].$friendData['avatar']; }else{ $friendData['avatar']= '/farm/resource/assets/icon/head/head'.$friendData['avatar'].'.png'; } $html .=' '.$friendData['nickname'].' '.$v['content'].' '.$shichen.date('H:i',$v['created_at']).' '; } $returnData['html'] = $html; return ClientMessageServices::sendMessage(ResultStatusServices::RS_OPERATION_SUCCESS, $returnData); } }
'.$v['username'].'
'.$v['content'].'