/** * 根据权限数组拼接出数据库查询用的语句 * @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; }