/** * 获得权限总列表 * @return array * **/ public function AllParterPermissionList($fields, $group_id) { $oPartnerApp = new Config_Partner_App(); $oApp = new Config_App(); $oArea = new Config_Area(); //所有游戏信息,游戏id为键值 $AppList = $oApp->getAll("AppId,name"); //所有区域 二维数组 区域id为键值 $TotalArea = $oArea->getAll('AreaId,name'); //每个游戏所在的区域 $AreaList = $oPartnerApp->getAreaList(); //构造新数组,每个区域新添官服和专区 if (isset($TotalArea)) { foreach ($TotalArea as $AreaId => $value) { $TotalArea[$AreaId]['partner_type'] = array('1' => array('name' => '官服', 'permission' => 0), '2' => array('name' => '专区', 'permission' => 0)); } } //获取所有运营商 二维数组 键值默认排序 $PartnerAppList = $oPartnerApp->getAll($fields); //构建数组 五维数组 键值依次是 游戏应用id(Appid) 区域id(AreaId) 合作商分类(partner_type) 服务商id(PartnerId) 服务商一维数组 //目的:把构建好的服务商数组赋给下面大循环 $PartnerAppAreaList = array(); foreach ($PartnerAppList as $k => $v) { $v['permission'] = 0; if ($v["PartnerId"] == 1) { $PartnerAppAreaList[$v["AppId"]][$v["AreaId"]][1][] = $v; } else { $PartnerAppAreaList[$v["AppId"]][$v["AreaId"]][2][] = $v; } //$PartnerAppAreaList[$v["AppId"]][$v["AreaId"]][$v["PartnerId"]][]=$v; } $totalPartner = array(); $totalPartner['total'] = $TotalArea; $partner = array(); if (is_array($PartnerAppList)) { foreach ($PartnerAppList as $key => $value) { //if(!isset($totalPartner['list'][$value['AppId']])) //{ $name = $AppList[$value['AppId']]["name"]; $AppAreaList = array(); $AppAreaList = $TotalArea; //为了不破坏$TotalArea数组 foreach ($AppAreaList as $AreaId => $Area) { if (in_array($AreaId, $AreaList[$value["AppId"]])) { foreach ($Area["partner_type"] as $k => $v) { //判断游戏在某个区域内是否有运营商以及这个运营商是官服还是专区 //$ParnterType = $oPartnerApp->getPartnerId($value['AppId'],$AreaId); if ($value["PartnerId"] == 1) { $partnerList = $PartnerAppAreaList[$value["AppId"]][$AreaId][1]; $AppAreaList[$AreaId]["partner_type"][1]["partner"] = $partnerList; } else { $partnerList = $PartnerAppAreaList[$value["AppId"]][$AreaId][2]; $AppAreaList[$AreaId]["partner_type"][2]["partner"] = $partnerList; } } } else { unset($AppAreaList[$AreaId]); } } $totalPartner['list'][$value['AppId']] = array('name' => $name, 'default' => $AppAreaList); //} /*if(!isset($totalPartner['list'][$value['AppId']]['partner'][$value['PartnerId']])) { $totalPartner['list'][$value['AppId']]['partner'][$value['PartnerId']] = $value; }*/ } } //目的是删除没有运营商的官服和专区 和判断用户是否有权限 foreach ($totalPartner['list'] as $AppId => &$area_data) { foreach ($area_data['default'] as $AreaId => &$area_data) { foreach ($area_data['partner_type'] as $partner_type => &$partner_type_data) { if ($partner_type_data["partner"] == null) { unset($totalPartner['list'][$AppId]['default'][$AreaId]['partner_type'][$partner_type]); } else { foreach ($partner_type_data['partner'] as $key => &$partner_data) { //($AppId,$AreaId,$PartnerId,$partner_type,$group_id)_id" $permission = $this->getPermission($AppId, $AreaId, $partner_data['PartnerId'], $partner_type, $group_id); $partner_data['permission'] = $permission['permission']; } } } } } return $totalPartner; }