public function actionShowImportantConf() { $this->_createServerList(); $serverList = $this->_getGlobalData('gameser_list'); if ($this->_isPost()) { $this->_utilApiFrg = $this->_getGlobalData('Util_ApiFrg', 'object'); $this->_modelFrgSpecialActivity = $this->_getGlobalData('Model_FrgSpecialActivity', 'object'); $getArr = array('c' => 'Conf', 'a' => 'ShowImportantConf'); foreach ($_POST['server_ids'] as $serverId) { $this->_utilApiFrg->addHttp($serverId, $getArr); } $this->_utilApiFrg->send(); $data = $this->_utilApiFrg->getResults(); //true需要相同(不同时警告),false需要不同(相同时警告),0 无需检验 $fields = array('GameName' => array(0 => false, 1 => '游戏名称'), 'co_action' => array(0 => true, 1 => '合作方标识'), 'ServerSSID' => array(0 => false, 1 => '服务器ID'), 'GameId' => array(0 => true, 1 => '游戏id'), 'JS_LanguageName' => array(0 => true, 1 => '前端语言'), 'SysVindicate' => array(0 => true, 1 => '游戏开关'), 'DuplicateCrossStatus' => array(0 => true, 1 => '是否开启跨服方程式'), 'GAME_LANGUAGE_NAME' => array(0 => true, 1 => '服务器语言'), 'SERVER_INIT_TIME' => array(0 => 0, 1 => '初始化'), 'SERVER_UNIQUEID' => array(0 => false, 1 => '服务器唯一ID')); $dataList = array(); $CheckData = array(); foreach ($data as $ServerId => $sub) { if ($sub && $sub['msgno'] === 0) { foreach ($fields as $field => $val) { $dataList[$ServerId] = $sub['data']; $CheckData[$field][0][$sub['data'][$field]] = $CheckData[$field][1][$ServerId] = $sub['data'][$field]; } } elseif ($sub && $sub['msgno'] === 2) { $dataList[$ServerId]['error'] = $sub['message']; } else { $dataList[$ServerId]['error'] = '连接失败'; } } //如果多于2个服务器,检查有问题的字段 $GetBad = array(); if (count($dataList) > 1) { foreach ($CheckData as $field => $sub) { if ($fields[$field][0] === 0) { continue; } if ($fields[$field][0] == (count($sub[0]) == count($sub[1]))) { //(count($sub[0]) == count($sub[1])))不同为true,相同为false $GetBad[$field] = true; } } } } $this->_view->assign('dataList', $dataList); $this->_view->assign('fields', $fields); $this->_view->assign('GetBad', $GetBad); $this->_view->display(); }
/** * 根据id来接收一个请求 * @param int $id * @return boolean/string */ private function _acceptId($id) { $data = $this->findById($id); if (!in_array($data['type'], $this->_options)) { return "Id:{$id} : <font color='#FF0000'>您没有权限审核这项</font>."; } if ($this->_operatorsLimit && !in_array($data['operator_id'], $this->_operatorsLimit)) { return "Id:{$id} : <font color='#FF0000'>您没有权限审核这项</font>."; } if ($data) { $this->_utilRbac = $this->_getGlobalData('Util_Rbac', 'object'); $userClass = $this->_utilRbac->getUserClass(); if ($data['is_send'] == 1) { return "Id:{$id} 已经被审核过"; } if ($data['type'] >= 10) { //如果是批量审核的话 switch ($data['type']) { case '10': //多服务器发送奖励 $serverList = $this->_getGlobalData('gameser_list'); $data['post_data'] = unserialize($data['post_data']); $data['post_data']['send_players'] = str_replace('\\', '', $data['post_data']['send_players']); //去除\,好反序列化 $sendPlayerIds = unserialize($data['post_data']['send_players']); //得到要发送的玩家 unset($data['post_data']['send_players']); //删除掉这些玩家,一会好发送post数据给游戏接口 $this->_utilApiFrg = $this->_getGlobalData('Util_ApiFrg', 'object'); $this->_utilApiFrg->curlInit(); $getArr = unserialize($data['send_action']); foreach ($sendPlayerIds as $key => $list) { $data['post_data']['UserIds'] = implode(',', $list); //加自要发送的玩家ID $data['post_data']['UserIds'] = str_replace(' ', '', $data['post_data']['UserIds']); //去掉空格 $this->_utilApiFrg->addHttp($key, $getArr, $data['post_data']); } $this->_utilApiFrg->send(); $sendResult = array(); $result = $this->_utilApiFrg->getResults(); foreach ($result as $key => $backParams) { $color = $backParams['msgno'] == 1 ? '#00CC00' : '#ff0000'; //定义颜色 $message = $backParams['msgno'] == 1 ? '发送成功' : '发送失败'; $backParams['message'] = $backParams['message'] ? $backParams['message'] : $message; if ($backParams) { $string = "{$serverList[$key]['full_name']} : <font color='{$color}'>{$backParams['message']}</font>"; $string = $this->_createAcceptMsg(1, $backParams, $string); //发送消息 array_push($sendResult, $string); } else { $string = "{$serverList[$key]['full_name']} : <font color='{$color}'>{$backParams['message']}</font>"; array_push($sendResult, $string); } } $retStr = implode('<br>', $sendResult); $this->update(array('is_send' => 1, 'audit_ip' => ip2long(Tools::getClientIP()), 'send_time' => CURRENT_TIME, 'audit_user_id' => $userClass['_id'], 'send_result' => $retStr), "Id={$id}"); $this->_utilApiFrg = null; return $retStr; case '11': //多服务器奖励触发 $serverList = $this->_getGlobalData('gameser_list'); $data['post_data'] = unserialize($data['post_data']); $serverIds = $data['post_data']['server_ids']; //得到要发送的服务器 unset($data['post_data']['server_ids']); //删除掉这些玩家,一会好发送post数据给游戏接口 $this->_utilApiFrg = $this->_getGlobalData('Util_ApiFrg', 'object'); $this->_utilApiFrg->curlInit(); $getArr = unserialize($data['send_action']); foreach ($serverIds as $serverId) { $this->_utilApiFrg->addHttp($serverId, $getArr, $data['post_data']); } $this->_utilApiFrg->send(); $sendResult = array(); $result = $this->_utilApiFrg->getResults(); foreach ($result as $key => $backParams) { $color = $backParams['msgno'] == 1 ? '#00CC00' : '#ff0000'; //定义颜色 $message = $backParams['msgno'] == 1 ? '发送成功' : '发送失败'; $backParams['message'] = $backParams['message'] ? $backParams['message'] : $message; if ($backParams) { $string = "{$serverList[$key]['full_name']} : <font color='{$color}'>{$backParams['message']}</font>"; array_push($sendResult, $string); } else { $string = "{$serverList[$key]['full_name']} : <font color='{$color}'>{$backParams['message']}</font>"; array_push($sendResult, $string); } } $retStr = implode('<br>', $sendResult); $this->update(array('is_send' => 1, 'audit_ip' => ip2long(Tools::getClientIP()), 'send_time' => CURRENT_TIME, 'audit_user_id' => $userClass['_id'], 'send_result' => $retStr), "Id={$id}"); $this->_utilApiFrg = null; return $retStr; case '12': //生成金币卡 $this->_modelGoldCard = $this->_getGlobalData('Model_GoldCard', 'object'); $data = $this->_modelGoldCard->import(unserialize($data['post_data'])); if ($data['status'] == 1) { $updateArr = array('is_send' => 1, 'audit_ip' => ip2long(Tools::getClientIP()), 'send_time' => CURRENT_TIME, 'audit_user_id' => $userClass['_id'], 'send_result' => "Id:{$id} <font color='#00CC00'>生成金币卡成功</font>"); $this->update($updateArr, "Id={$id}"); return '<font color="#00CC00">' . $data['msg'] . '</font>'; } return '<font color="#FF0000">生成金币卡失败</font>'; } } else { $this->_utilFRGInterface = $this->_getGlobalData('Util_FRGInterface', 'object'); $this->_utilFRGInterface->setServerUrl($data['server_id']); $this->_utilFRGInterface->setGet(unserialize($data['send_action'])); $this->_utilFRGInterface->setPost(unserialize($data['post_data'])); $backParams = $this->_utilFRGInterface->callInterface(); $this->_utilFRGInterface = null; $color = $backParams['msgno'] == 1 ? '#00CC00' : '#ff0000'; //定义颜色 if ($backParams['msgno'] == 1) { $updateArr = array('is_send' => 1, 'audit_ip' => ip2long(Tools::getClientIP()), 'send_time' => CURRENT_TIME, 'audit_user_id' => $userClass['_id'], 'send_result' => $this->_createAcceptMsg($data['type'], $backParams, "Id:{$id} <font color='{$color}'>{$backParams['message']}</font>")); $this->update($updateArr, "Id={$id}"); } return $this->_createAcceptMsg($data['type'], $backParams, "Id:{$id} <font color='{$color}'>{$backParams['message']}</font>"); } } return "无此记录Id : {$id}"; }
/** * 多服务器同步 */ private function _spActivityServerSyn() { //优化的代码------------------------ $fileCacheName = get_class($this) . '_spActivityServerSyn'; if ($_GET['syncnum']) { $_POST = $this->_f($fileCacheName); } //end------------------------------ if ($this->_isPost() && $_POST['submit'] || $_GET['syncnum']) { if (!count($_POST['server_ids'])) { $this->_utilMsg->showMsg(Tools::getLang('LIBAO_SYN_SELECT_ERROR1', __CLASS__), -1, 2); } if (!count($_POST['data'])) { $this->_utilMsg->showMsg(Tools::getLang('SPECIAL_AVTIVE_SYN_SELECT_ERROR2', __CLASS__), -1, 2); } $serverids = array_unique($_POST['server_ids']); //去除没有值的参数(把富人国兼容至其他游戏) if (is_array($_POST['data'])) { foreach ($_POST['data'] as &$sub) { if (is_array($sub)) { foreach ($sub as $subkey => $subFile) { if (is_string($subFile) && strlen($subFile) == 0) { unset($sub[$subkey]); } } } } } //优化代码--------------------------------------- $postArr = array('ActivityArray' => $_POST['data']); $this->_utilApiFrg = $this->_getGlobalData('Util_ApiFrg', 'object'); //1次最多处理5个地址 $AddHttpNum = 0; for ($i = 0; $i < 5; $i++) { $serverId = array_shift($serverids); if ($serverId) { if (isset($_POST['failserverids'][$serverId]) && $_POST['failserverids'][$serverId] > 5) { //失败超过5次的,就不再尝试 } else { $AddHttpNum += 1; $this->_utilApiFrg->addHttp($serverId, array('c' => 'Activity', 'a' => 'AddSpecialActivity', 'doaction' => 'receive'), $postArr); } } } $serverList = $this->_getGlobalData('gameser_list'); if ($AddHttpNum) { $this->_utilApiFrg->send(); $getResult = $this->_utilApiFrg->getResults(); $sendStatusMsgs = ''; foreach ($getResult as $key => $value) { if ($value['msgno'] == 1) { //成功 $value['message'] = $value['message'] ? $value['message'] : Tools::getLang('OPERATION_SUCCESS', 'Common'); $sendStatusMsgs .= "<b>{$serverList[$key]['full_name']}</b>:<font color='#00CC00'>{$value['message']}</font><br>"; if (isset($_POST['failserverids'][$key])) { unset($_POST['failserverids'][$key]); } } else { //失败 array_unshift($serverids, $key); $_POST['failserverids'][$key] += 1; } } } if (count($serverids)) { $_POST['server_ids'] = $serverids; $this->_f($fileCacheName, $_POST); $syncnum = intval($_GET['syncnum']) + 1; $sendStatusMsgs .= '跳转同步下一批机器'; $this->_utilMsg->showMsg($sendStatusMsgs, 1, Tools::url(CONTROL, ACTION, array('zp' => self::PACKAGE, 'doaction' => 'serverSyn', 'server_id' => $_GET['server_id'], 'syncnum' => $syncnum)), 1); } else { $sendStatusMsgs .= '全部同步完'; if (is_file(CACHE_DIR . '/' . $fileCacheName . '.cache.php')) { $this->_f($fileCacheName, null); } if (count($_POST['failserverids']) && is_array($_POST['failserverids'])) { $sendStatusMsgs .= '<br>但以下机器同步失败超过5次,请单独检查<br>'; foreach ($_POST['failserverids'] as $key => $num) { $sendStatusMsgs .= "ID:<font color='#00CC00'>{$key}</font>;<b>{$serverList[$key]['full_name']}</b><br>"; } } elseif ($_POST['failserverids']) { $sendStatusMsgs .= '程序有误,出错数据为' . serialize($_POST['failserverids']) . '<br>'; } $this->_utilMsg->showMsg($sendStatusMsgs, 1, Tools::url(CONTROL, ACTION, array('zp' => self::PACKAGE)), 100); } //end------------------------------------------- /*原本的代码 $postArr=array('ActivityArray'=>$_POST['data']); $this->_utilApiFrg=$this->_getGlobalData('Util_ApiFrg','object'); foreach ($serverids as $serverId){ $this->_utilApiFrg->addHttp($serverId,array('c'=>'Activity','a'=>'AddSpecialActivity','doaction'=>'receive'),$postArr); } $this->_utilApiFrg->send(); $getResult=$this->_utilApiFrg->getResults(); #------生成msg------# $serverList=$this->_getGlobalData('gameser_list'); $sendStatusMsgs=''; foreach ($getResult as $key=>$value){ if ($value['msgno']==1){ $value['message']=$value['message']?$value['message']:Tools::getLang('OPERATION_SUCCESS','Common'); $sendStatusMsgs.="<b>{$serverList[$key]['full_name']}</b>:<font color='#00CC00'>{$value['message']}</font><br>"; }else { $value['message']=$value['message']?$value['message']:Tools::getLang('OPERATION_FAILURE','Common'); $sendStatusMsgs.="<b>{$serverList[$key]['full_name']}</b>:<font color='#FF0000'>{$value['message']}</font><br>"; } } #------生成msg------# $this->_utilMsg->showMsg($sendStatusMsgs,1,Tools::url(CONTROL,ACTION,array('zp'=>self::PACKAGE)),100); */ } else { #------多服务器选择列表------# $gameServerList = $this->_getGlobalData('gameser_list'); foreach ($gameServerList as $key => &$value) { if ($key == 100 || $key == 200) { //100和200是特殊服务器,不显示 unset($gameServerList[$key]); continue; } if ($value['game_type_id'] != self::GAME_ID) { unset($gameServerList[$key]); } } $this->_view->assign('gameServerList', json_encode($gameServerList)); $this->_view->assign('tplServerSelect', 'HaiDao/HaiDaoOperation/ServerSelect.html'); #------多服务器选择列表------# if (!$_REQUEST['server_id']) { $this->_utilMsg->showMsg(Tools::getLang('PLEASE_SELECTSERVER', 'Common'), -1); } if (!$_REQUEST['Ids']) { $this->_utilMsg->showMsg('请选择需要同步的特殊活动', -1); } $selectedIds = array_unique($_REQUEST['Ids']); $serverList = $this->_getGlobalData('gameser_list'); $serverName = $serverList[$_REQUEST['server_id']]['full_name']; $this->_utilApiFrg = $this->_getGlobalData('Util_ApiFrg', 'object'); $this->_utilApiFrg->addHttp($_REQUEST['server_id'], array('c' => 'Activity', 'a' => 'ListSpecialActivity')); $this->_utilApiFrg->send(); $data = $this->_utilApiFrg->getResult(); if (!count($data['data']['Activities'])) { $this->_utilMsg->showMsg('同步的特殊活动为空', -1); } $synArr = array(); foreach ($data['data']['Activities'] as $list) { if (in_array($list['Id'], $selectedIds)) { unset($list['Id'], $list['CreateTime']); array_push($synArr, $list); } } if (!count($synArr)) { $this->_utilMsg->showMsg('同步的特殊活动为空', -1); } $this->_view->assign('dataList', $synArr); $this->_view->assign('serverName', $serverName); $this->_view->set_tpl(array('body' => 'HaiDao/HaiDaoOperation/SpecialActivityServerSyn.html')); $this->_utilMsg->createPackageNavBar(); $this->_view->display(); } }
/** * 多服务器同步 */ private function _spActivityServerSyn() { if (false && $this->_isPost() && $_POST['sbm']) { //屏蔽此流程 if (!count($_POST['server_ids'])) { $this->_utilMsg->showMsg(Tools::getLang('LIBAO_SYN_SELECT_ERROR1', __CLASS__), -1, 2); } if (!count($_POST['data'])) { $this->_utilMsg->showMsg(Tools::getLang('SPECIAL_AVTIVE_SYN_SELECT_ERROR2', __CLASS__), -1, 2); } $serverids = array_unique($_POST['server_ids']); $postArr = array('ActivityArray' => $_POST['data']); $postArr['UniIdentifier'] = intval($_POST['UniIdentifier']); $this->_utilApiFrg = $this->_getGlobalData('Util_ApiFrg', 'object'); foreach ($serverids as $serverId) { $this->_utilApiFrg->addHttp($serverId, array('c' => 'Activity', 'a' => 'AddSpecialActivity', 'doaction' => 'receive'), $postArr); } $this->_utilApiFrg->send(); $getResult = $this->_utilApiFrg->getResults(); #------生成msg------# $serverList = $this->_getGlobalData('server/server_list_' . $this->game_id); $sendStatusMsgs = ''; foreach ($getResult as $key => $value) { if ($value['msgno'] == 1) { if ($value['backparams']) { $value['message'] = '<font color="#FF0000">同步失败活动有:</font>'; foreach ($value['backparams'] as $faileOne) { $value['message'] .= $faileOne['Title'] . '、'; } } else { $value['message'] = $value['message'] ? $value['message'] : Tools::getLang('OPERATION_SUCCESS', 'Common'); $value['message'] = "<font color='#00CC00'>{$value['message']}</font>"; } $sendStatusMsgs .= "<b>{$serverList[$key]['full_name']}</b>:{$value['message']}<br>"; } else { $value['message'] = $value['message'] ? $value['message'] : Tools::getLang('OPERATION_FAILURE', 'Common'); $sendStatusMsgs .= "<b>{$serverList[$key]['full_name']}</b>:<font color='#FF0000'>{$value['message']}</font><br>"; } } #------生成msg------# $this->_utilMsg->showMsg($sendStatusMsgs, 1, Tools::url(CONTROL, ACTION), false); } else { #------多服务器选择列表------# // $gameServerList=$this->_getGlobalData('server/server_list_'.$this->game_id); // unset($gameServerList[200]); // $this->_view->assign('gameServerList',json_encode($gameServerList)); // $this->_view->assign('tplServerSelect','OperationFRG/MultiServerSelect.html'); $this->_multiOperatorSelect('_getOperatorGroup'); //使用_getOperatorGroup获得分组 #------多服务器选择列表------# if (!$_REQUEST['server_id']) { $this->_utilMsg->showMsg(Tools::getLang('PLEASE_SELECTSERVER', 'Common'), -1); } if (!$_REQUEST['Ids']) { $this->_utilMsg->showMsg('请选择需要同步的特殊活动', -1); } $selectedIds = array_unique($_REQUEST['Ids']); $serverList = $this->_getGlobalData('gameser_list'); $serverName = $serverList[$_REQUEST['server_id']]['full_name']; $this->_utilApiFrg = $this->_getGlobalData('Util_ApiFrg', 'object'); $this->_utilApiFrg->addHttp($_REQUEST['server_id'], array('c' => 'Activity', 'a' => 'ListSpecialActivity')); $this->_utilApiFrg->send(); $data = $this->_utilApiFrg->getResult(); if (!count($data['data']['Activities'])) { $this->_utilMsg->showMsg('同步的特殊活动为空', -1); } $synArr = array(); foreach ($data['data']['Activities'] as $list) { if (in_array($list['Id'], $selectedIds)) { unset($list['Id'], $list['CreateTime']); array_push($synArr, $list); } } if (!count($synArr)) { $this->_utilMsg->showMsg('同步的特殊活动为空', -1); } $this->_view->assign('dataList', $synArr); $this->_view->assign('serverName', $serverName); $this->_view->assign('URL_ajaxSyn', Tools::url(CONTROL, ACTION, array('doaction' => 'ajaxSyn'))); $this->_view->set_tpl(array('body' => 'OperationFRG/SpecialActivityServerSyn.html')); $this->_utilMsg->createNavBar(); $this->_view->display(); } }
/** * 多服务器同步 */ private function _spActivityServerSyn() { if ($this->_isPost() && $_POST['submit']) { if (!count($_POST['server_ids'])) { $this->_utilMsg->showMsg(Tools::getLang('LIBAO_SYN_SELECT_ERROR1', __CLASS__), -1, 2); } if (!count($_POST['data'])) { $this->_utilMsg->showMsg(Tools::getLang('SPECIAL_AVTIVE_SYN_SELECT_ERROR2', __CLASS__), -1, 2); } $serverids = array_unique($_POST['server_ids']); $postArr = array('ActivityArray' => $_POST['data']); $this->_utilApiFrg = $this->_getGlobalData('Util_ApiFrg', 'object'); foreach ($serverids as $serverId) { $this->_utilApiFrg->addHttp($serverId, array('c' => 'Activity', 'a' => 'AddSpecialActivity', 'doaction' => 'receive'), $postArr); } $this->_utilApiFrg->send(); $getResult = $this->_utilApiFrg->getResults(); #------生成msg------# $serverList = $this->_getGlobalData('gameser_list'); $sendStatusMsgs = ''; foreach ($getResult as $key => $value) { if ($value['msgno'] == 1) { $value['message'] = $value['message'] ? $value['message'] : Tools::getLang('OPERATION_SUCCESS', 'Common'); $sendStatusMsgs .= "<b>{$serverList[$key]['full_name']}</b>:<font color='#00CC00'>{$value['message']}</font><br>"; } else { $value['message'] = $value['message'] ? $value['message'] : Tools::getLang('OPERATION_FAILURE', 'Common'); $sendStatusMsgs .= "<b>{$serverList[$key]['full_name']}</b>:<font color='#FF0000'>{$value['message']}</font><br>"; } } #------生成msg------# $this->_utilMsg->showMsg($sendStatusMsgs, 1, Tools::url(CONTROL, ACTION)); } else { #------多服务器选择列表------# $gameServerList = $this->_getGlobalData('gameser_list'); foreach ($gameServerList as $key => &$value) { if ($key == 100 || $key == 200) { //100和200是特殊服务器,不显示 unset($gameServerList[$key]); continue; } if ($value['game_type_id'] != self::GAME_ID) { unset($gameServerList[$key]); } } $this->_view->assign('gameServerList', json_encode($gameServerList)); $this->_view->assign('tplServerSelect', self::PACKAGE . '/' . self::OPT . '/ServerSelect.html'); #------多服务器选择列表------# if (!$_REQUEST['server_id']) { $this->_utilMsg->showMsg(Tools::getLang('PLEASE_SELECTSERVER', 'Common'), -1); } if (!$_REQUEST['Ids']) { $this->_utilMsg->showMsg('请选择需要同步的特殊活动', -1); } $selectedIds = array_unique($_REQUEST['Ids']); $serverList = $this->_getGlobalData('gameser_list'); $serverName = $serverList[$_REQUEST['server_id']]['full_name']; $this->_utilApiFrg = $this->_getGlobalData('Util_ApiFrg', 'object'); $this->_utilApiFrg->addHttp($_REQUEST['server_id'], array('c' => 'Activity', 'a' => 'ListSpecialActivity')); $this->_utilApiFrg->send(); $data = $this->_utilApiFrg->getResult(); if (!count($data['data']['Activities'])) { $this->_utilMsg->showMsg('同步的特殊活动为空', -1); } $synArr = array(); foreach ($data['data']['Activities'] as $list) { if (in_array($list['Id'], $selectedIds)) { unset($list['Id'], $list['CreateTime']); array_push($synArr, $list); } } if (!count($synArr)) { $this->_utilMsg->showMsg('同步的特殊活动为空', -1); } $this->_view->assign('dataList', $synArr); $this->_view->assign('serverName', $serverName); $this->_view->set_tpl(array('body' => self::PACKAGE . '/' . self::OPT . '/SpecialActivityServerSyn.html')); $this->_utilMsg->createPackageNavBar(); $this->_view->display(); } }