/** * 根据权限数组拼接出数据库查询用的语句 * @param $AppId * @param $parnter_id * @param $数据库前缀用以拼在条件中 * @return array * **/ public function getWherePermittedPartner($data_groups, $AppId, $PartnerId, $app_type, $partner_type, $AreaList, $AreaId, $is_abroad) { $oPartnerApp = new Config_Partner_App(); $oApp = new Config_App(); $oArea = new Config_Area(); $data_groups = trim($data_groups); $AppId = intval($AppId); $PartnerId = intval($PartnerId); $AreaId = intval($AreaId); //根据所在区域筛选 if ($AreaId) { $AreaList = $oArea->getArea($AreaId, $AreaList); } $is_abroad = intval($is_abroad); $partner_type = intval($partner_type); $app_list = $this->getApp($data_groups, 'AppId'); //根据产品类型筛选 $app_list = $oApp->getApp($app_type, $app_list); $permission_array = array(); if (count($app_list)) { foreach ($app_list as $app => $app_value) { if ($AppId == $app || $AppId == 0) { $partner_list = $this->getPartner($data_groups, $app, 'PartnerId,name,AreaId'); //根据合作方式筛选 $partner_list = $oPartnerApp->getPermittedPartnerByPartnerType($partner_type, $partner_list); //根据所在地区筛选 $partner_list = $oPartnerApp->getPermittedPartnerByPartnerArea($AreaList, $partner_list); //将允许的合作商列表分组 if (count($partner_list)) { $p_list = array(); foreach ($partner_list as $partner => $partner_value) { if ($PartnerId == 0 || $PartnerId == $partner) { $p_list[] = $partner; } } $permission_array[$app]['partner'] = $p_list; } } } } if (isset($permission_array)) { //根据游戏拼接成数组 foreach ($permission_array as $app => $app_data) { $app_arr[$app] = "(AppId = {$app} and PartnerId in (" . implode(",", $app_data['partner']) . ")) "; } //组合数组 if (isset($app_arr)) { $wherePermittedPartner = "(" . implode(" or ", $app_arr) . ")"; } else { $wherePermittedPartner = "(0)"; } } else { $wherePermittedPartner = "(0)"; } return $wherePermittedPartner; }
public function sendStatusAction() { $oPermission = new Config_Permission(); $oApp = new Config_App(); $oServer = new Config_Server(); $oPartnerApp = new Config_Partner_App(); $oPartner = new Config_Partner(); $oArea = new Config_Area(); //获取用户可以查看的游戏列表 $permitted_app = $oPermission->getApp($this->manager->data_groups, 'AppId,name'); //预处理地区信息 $AreaList = $oArea->getAll(); //检查当前页面权限 $sign = '?ctl=config/socket.queue&ac=send.status'; $this->manager->checkMenuPermission($sign, Widget_Manager::MENU_PURVIEW_SELECT); $SocketType = $this->oSocketType->getAll(); //页面输入变量 $AppId = intval($this->request->AppId); $PartnerId = intval($this->request->PartnerId); $ServerId = intval($this->request->ServerId); $AreaId = intval($this->request->AreaId) ? intval($this->request->AreaId) : 0; $app_type = intval($this->request->app_type); $partner_type = intval($this->request->partner_type); $is_abroad = intval($this->request->is_abroad) ? intval($this->request->is_abroad) : 0; $uType = intval($this->request->uType) ? intval($this->request->uType) : 0; //时间范围初始化 $Date = $this->request->Date ? $this->request->Date : date("Y-m-d", time()); //初始化图表配置 $divideV = 23; $Step = 60; //初始化合作商列表 $permitted_partner = array(); //初始化服务器列表 $permitted_server = array(); //获取当前地区列表 $AreaList = $oArea->getAbroad($is_abroad, $AreaList); //生成允许的地区id数组 if ($app_type > 0) { //筛选是否平台产品 $permitted_app = $oApp->getApp($app_type, $permitted_app); } if ($AppId > 0) { //获取可查看的权限总表 $permitted_partner = $oPermission->getPartner($this->manager->data_groups, $AppId, 'PartnerId,name,AreaId'); //根据合作方式筛选 $permitted_partner = $oPartnerApp->getPermittedPartnerByPartnerType($partner_type, $permitted_partner); //根据所在地区筛选 $permitted_partner = $oPartnerApp->getPermittedPartnerByPartnerArea($AreaList, $permitted_partner); if ($PartnerId > 0) { //获取服务器列表 $permitted_server = $oPermission->getServer($this->manager->data_groups, $AppId, $PartnerId, 'ServerId,name'); } } //获取用于查询的权限sql语句 $SendStatusArr = $this->oSocketQueue->getSendStatus($Date, $ServerId, $uType); for ($i = 0; $i < 24 * 60; $i++) { $H = intval($i / 60); $m = $i - $H * 60; if (!isset($SendStatusArr[$i])) { $SendStatusArr[$i] = array('Time' => sprintf("%02d", $H) . ":" . sprintf("%02d", $m), 'SendCount' => 0); } else { $SendStatusArr[$i]['Time'] = sprintf('%02d', $H) . ":" . sprintf('%02d', $m); } } ksort($SendStatusArr); # Include FusionCharts PHP Class include 'Third/fusion/Includes/FusionCharts_Gen.php'; # Create Multiseries ColumnD chart object using FusionCharts PHP Class $FC = new FusionCharts("MsLine", '100%', '500'); # Set the relative path of the swf file $FC->setSWFPath("../Charts/"); # Store chart attributes in a variable $strParam = "caption='Socket队列发送情况';animation=0;xAxisName='时间';baseFontSize=12;numberPrefix=;decimalPrecision=0;showValues=0;formatNumberScale=0;labelStep={$Step};numvdivlines={$divideV};rotateNames=1;yAxisMinValue=0;yAxisMaxValue=10;numDivLines=9;showAlternateHGridColor=1;alternateHGridAlpha=5;alternateHGridColor='CC3300'"; # Set chart attributes $FC->setChartParams($strParam); foreach ($SendStatusArr as $key => $data) { $FC->addCategory($data['Time']); } $FC->addDataset("发送数量"); foreach ($SendStatusArr as $key => $data) { $FC->addChartData($data['SendCount']); } $page_title = "Socket队列发送情况"; $page_form_action = $sign; //调取模板 include $this->tpl('Config_SocketQueue_SendStatus'); }