select(array('app_func_id' => $data['id'])); if ($func) { $platform = array(); Dever::db('app_platform', 'api')->delete(array('app_id' => $data['app_id'])); foreach ($func as $k => $v) { $api = Dever::db('api', 'api')->find($v['api_id']); if ($api) { $platform[$api['platform_id']] = $api['platform_id']; } } foreach ($platform as $k => $v) { Dever::db('app_platform', 'api')->insert(array('app_id' => $data['app_id'], 'platform_id' => $v)); } } } public function getPlatform($key) { $info = Dever::db('app', 'api')->find(array('key' => $key)); if ($info) { $set['join'] = array ( array ( 'table' => 'platform', 'type' => 'left join', 'on' => 'platform.id=app_platform.platform_id', ), ); $set['col'] = 'platform.id as id,platform.name as name'; $platform = Dever::db('app_platform', 'api')->select(array('app_id' => $info['id']), $set); return $platform; } return array(); } public function getSetting($platform_id) { return Dever::db('platform_setting', 'api')->select(array('platform_id' => $platform_id)); } public function getCert($platform_id) { return Dever::db('platform_cert', 'api')->select(array('platform_id' => $platform_id)); } public function getCertName($id) { $info = Dever::db('platform_cert', 'api')->find($id); return $info['name']; } public function getApi($app_key, $key, $platform_id, $env = 1) { $info = Dever::db('app', 'api')->find(array('key' => $app_key)); if ($info) { $func = Dever::db('app_func', 'api')->find(array('app_id' => $info['id'], 'key' => $key)); if ($func) { $set['join'] = array ( array ( 'table' => 'api', 'type' => 'left join', 'on' => 'api.id=app_func_work.api_id', ), ); $set['col'] = 'api.*'; $set['order'] = 'app_func_work.sort asc,api.id desc'; $where['app_func_work.app_func_id'] = $func['id']; $where['api.env_type'] = $env; $api = Dever::db('app_func_work', 'api')->select($where, $set); return $api; } } return false; } # 直接执行api public function run($app, $func, $platform_id, $set, $param, $env = 1, $method = 'run') { $api = $this->getApi($app, $func, $platform_id, $env); if ($api) { if ($set) { $setting = Dever::db($set['table'] .'_setting')->select($set['where']); if ($setting) { foreach ($setting as $k => $v) { if (isset($param[$v['key']])) { $v['value'] = $param[$v['key']]; } $param[$v['key']] = $v['value']; } } if (isset($set['cert']) && $set['cert']) { $param['cert_table'] = $set['table'] .'_cert'; $param['cert_data'] = $set['where']; $cert = Dever::db($param['cert_table'])->select($param['cert_data'], array('order' => 'edate desc')); if ($cert) { $param['cert'] = array(); foreach ($cert as $k => $v) { $param['cert'][$v['platform_cert_id']] = $v; } } } } $data = Dever::load('api', 'api')->$method($api[0], $param); return $data; } } }