/** * API:同意添加好友 * * @access public * @param 无 * @return JsonView 响应json */ public function exeAgreeFriend() { $requestParam = $this->getAllParameters(); Logger::debug('requestParam:' . print_r($requestParam, true)); $requestJsonParam = $this->getDecodedJsonRequest(); Logger::debug('requestJsonParam:' . print_r($requestJsonParam, true)); $user_id = $requestParam['user_id']; $friend_id = $requestJsonParam['friend_id']; $session_key = $requestParam['session_key']; //判断是否已为好友关系 $ret = FriendModel::isFriend($user_id, $friend_id); if ($ret) { $messageArr['error'] = "已在好友列表中!"; $messageArr['session_key'] = CharacterModel::setSessionKey($user_id, $session_key); $view = new JsonView(); return $this->getViewByJson($view, $messageArr, 0, "friend/agree_friend"); } //好友人数上限判断 $friendNum = FriendModel::getFriendNum($user_id); if ($friendNum >= Constants::MAX_FRIEND_NUM) { $messageArr['error'] = "好友数已达上限!"; $messageArr['session_key'] = CharacterModel::setSessionKey($user_id, $session_key); $view = new JsonView(); return $this->getViewByJson($view, $messageArr, 0, "friend/agree_friend"); } $res = FriendModel::insert(array('n_user_id' => $user_id, 'n_friend_id' => $friend_id, 't_create_time' => date("Y-m-d H:i:s"))); if (!$res) { throw new Exception("insert false"); } $res = FriendModel::updateFriendMail(array('n_type' => 0, 't_update_time' => date("Y-m-d H:i:s")), array('n_send_id' => $friend_id, 'n_receive_id' => $user_id, 'n_type' => 1)); $res = FriendModel::insertMail(array('n_send_id' => $user_id, 'n_receive_id' => $friend_id, 'n_type' => 3, 't_update_time' => date("Y-m-d H:i:s"), 't_create_time' => date("Y-m-d H:i:s"))); if (!$res) { throw new Exception("update false"); } $str = $user_id . '_friend'; $friendInfo = FriendModel::getFriendList($user_id); foreach ($friendInfo as $key => $value) { $friendList[] = $value['n_id']; } UserCache::setByKey($str, 'friend_list', $friendList); $messageArr['friend_mail'] = MailModel::getFriendMail($user_id); $messageArr['system_mail'] = MailModel::getSystemMail($user_id); //任务成就界面 $messageArr['achieveInfo'] = TaskAndAchieveAction::getAchieveInfo($user_id); $messageArr['taskInfo'] = TaskAndAchieveAction::getTaskInfo($user_id); $messageArr['session_key'] = CharacterModel::setSessionKey($user_id, $session_key); $view = new JsonView(); return $this->getViewByJson($view, $messageArr, 1, "friend/agree_friend"); }