除了方法名、参数 和 返回信息格式需与本文一致,其余可自行编写。
购买、续费时长均带有单位,月:m,比如1月 为 1m
部分常用业务状态、运行状态对照表,具体请查阅:CloudStatusCode.php
/**
* 业务购买询价
*param array $data 业务购买参数
**/
public function queryPrice(array $data){
//调用查询价格接口
$result = (new QcloudApi())->queryPrice($data);
//失败
if(){
return ['result' => false,'text' => '失败原因'];
}
//原价
$originPrice = $result['originPrice'];
return ['result' => true, 'originPrice' => $originPrice];
}
返回参数说明
参数名 | 类型 | 说明 |
---|---|---|
result | bool | 成功:true, 失败:false |
originPrice | float | 价格 |
/**
* 业务购买
*param array $cloud 业务数据
*param array $data 业务购买参数
**/
public function buy($cloud, $data){
$return_data = [];
foreach($cloud as $k => $v){
//业务标识(上级服务器名称)
$data['suid'] = $v['suid'];
$data['number'] =1;
//开通api
$buy = (new QcloudApi())->buy($data);
$update = [];
$result = true;
if(array_key_exists('Error',$buy['Response'])
$result = false;
}else{
$update = ['guid' => $buy['Response']['InstanceIdSet'][0]];
}
$return_data[] = [
'result' => $result,
'api_data' => json_encode($buy),
'server_id' => $v['id'],
'suid' => $v['suid'],
'update' => $update
];
}
return $return_data;
}
返回参数说明
参数名 | 类型 | 说明 |
---|---|---|
result | bool | 成功:true, 失败:false |
api_data | string | api返回信息 |
server_id | int | 业务ID |
suid | string | 业务标识 |
update | array | 需要更新到业务表的数据 |
/**
* 续费询价
*param array $cloud 业务数据
*param string $months 续费时长
**/
public function queryRenewPrice($cloud, $months){
$queryRenewPrice = (new QcloudApi())->queryRenewPrice($cloud['line_no'], $cloud['guid'], $months);
//失败
if(array_key_exists('Error',$queryRenewPrice['Response']){
return ['result' => false,'text' => '失败原因'];
}
$orginalPrice = $queryRenewPrice['Response']['Price']['InstancePrice']['DiscountPrice'];
return ['result' => true, 'originPrice' => $orginalPrice];
}
返回参数说明
参数名 | 类型 | 说明 |
---|---|---|
result | bool | 成功:true, 失败:false |
originPrice | float | 价格 |
/**
* 业务续费
*param array $cloud 业务数据
*param array $data 业务续费参数
**/
public function renew($cloud, $data){
//续费
$renew = (new QcloudApi())->renew($cloud['line_no'], $cloud['guid'], $data['months']);
$result = true;
if(array_key_exists('Error',$renew['Response']){
$result = false;
}
return ['result' => $result, 'api_data' => json_encode($renew)];
}
返回参数说明
参数名 | 类型 | 说明 |
---|---|---|
result | bool | 成功:true, 失败:false |
api_data | string | api返回信息 |
/**
* 升级询价
*param array $cloud 业务数据
*param array $data 业务升级参数
**/
public function queryUpgradePrice($cloud,$data){
$originalPrice = 0;
//升级规格询价
$specPrice = (new QcloudApi())->specPrice($cloud['line_no'], $cloud['guid'], $data['spec_no']);
//失败
if(array_key_exists('Error',$specPrice['Response']){
return ['result' => false,'text' => '失败原因'];
}
$originalPrice += $specPrice;
//升级带宽询价
if(!empty($data['bandwidth'])){
$bandWidthPrice = (new QcloudApi())->bandwidthPrice($cloud['line_no'], $cloud['guid'],date('Y-m-d',time()),date('Y-m-d',strtotime($cloud['end_time'])), $data['bandwidth']);
//失败
if(array_key_exists('Error',$bandWidthPrice['Response']){
return ['result' => false,'text' => '失败原因'];
}
$originalPrice += $bandWidthPrice;
}
//升级磁盘(数据盘询价)
if(!empty($data['harddisks'])){
$diskPrice = (new QcloudApi())->diskPrice($cloud['line_no'], $cloud['disk_id'], $data['harddisks']);
//失败
if(array_key_exists('Error',$diskPrice['Response']){
return ['result' => false,'text' => '失败原因'];
}
$originalPrice += $diskPrice;
}
if($originalPrice <= 0){
return ['result' => false,'text' => '失败原因'];
}
return ['result' => true, 'originPrice' => $originalPrice];
}
返回参数说明
参数名 | 类型 | 说明 |
---|---|---|
result | bool | 成功:true, 失败:false |
originPrice | float | 价格 |
/**
* 业务升级
*param array $cloud 业务数据
*param array $data 业务升级参数
**/
public function upgrade($cloud, $data){
$api_data = [];
if(!empty($data['spec_no']))
//升级规格
$spec = (new QcloudApi())->upgradeSpec('ResetInstancesType',$cloud['line_no'], $cloud['guid'], $data['spec_no']);
//失败
if(array_key_exists('Error',$spec['Response']){
return ['result' => false, 'api_data' => json_encode($spec)];
}
$api_data[] = json_encode($spec);
sleep(10);
}
if(!empty($data['bandwidth'])){
//升级带宽
$bandWidth = (new QcloudApi())->upgradeBandwidth('ResetInstancesInternetMaxBandwidth', $cloud['line_no'], $cloud['guid'],date('Y-m-d',time()),date('Y-m-d',strtotime($cloud['end_time'])), $data['bandwidth']);
$api_data[] = json_encode($bandWidth);
if(array_key_exists('Error',$bandWidth['Response']){
return ['result' => false, 'api_data' => implode(',',$api_data)];
}
sleep(10);
}
if(!empty($data['harddisks'])){
//升级磁盘
$disk = (new QcloudApi())->upgradeDisk('ResizeDisk', $cloud['line_no'], $cloud['disk_id'], $data['harddisks']);
$api_data[] = json_encode($disk);
if(array_key_exists('Error',$disk['Response']){
return ['result' => false, 'api_data' => implode(',',$api_data)];
}
}
return ['result' => true , 'api_data' => implode(',',$api_data)];
}
返回参数说明
参数名 | 类型 | 说明 |
---|---|---|
result | bool | 成功:true, 失败:false |
api_data | string | api返回信息 |
/**
* 重新开通
*param array $cloud 业务数据
**/
public function reopen($cloud, $data){
//同步上级数据,查看是否已开通
$sync = (new QcloudApi())->syncBusiness($cloud['line_no'],'',$cloud['suid']);
//已开通,直接返回结果
$update = [];
if($sync['Response']['InstanceSet']){
$update = [
'guid' => $sync[0]['InstanceId'][0]['InstanceId']
];
return ['result'=>true,'update'=> $update];
}
//补充参数
$data['suid'] = $cloud['suid'];
$data['number'] = 1;
//开通api
$buy = (new QcloudApi())->buy($data);
//失败
$result = true;
if(array_key_exists('Error',$buy['Response']){
$result = false;
}else{
$update = ['guid' => $buy['Response']['InstanceIdSet'][0]];
}
return ['result' => $result, 'api_data' => json_encode($buy), 'update'=> $update];
}
返回参数说明
参数名 | 类型 | 说明 |
---|---|---|
result | bool | 成功:true, 失败:false |
api_data | string | api返回信息 |
update | array | 需要更新到业务表的数据 |
/**
* 重新支付新购订单
*param array $cloud 业务数据
*param array $data 业务购买参数
**/
public function rebuy($cloud, $data){
$return_data = [];
foreach($cloud as $k => $v){
//同步上级数据,查看是否已开通
$sync = (new QcloudApi())->describeInstances($cloud['line_no'],'',$cloud['suid']);
//已开通,直接更新数据
$update = [];
$result = true;
if($sync['Response']['InstanceSet']){
$update = [
'guid' => $sync['Response']['InstanceSet'][0]['InstanceId'],
];
}else{
$data['suid'] = $cloud['suid'];
$data['number'] = 1;
$buy = (new QcloudApi())->buy($data);
if(array_key_exists('Error',$buy['Response']){
$result = false;
}else{
$update = ['guid' => $buy['Response']['InstanceIdSet'][0]];
}
}
$return_data[] = [
'result' => $result,
'api_data' => json_encode($buy),
'server_id' => $v['id'],
'suid' => $v['suid'],
'update' => $update
];
}
return $return_data;
}
返回参数说明
参数名 | 类型 | 说明 |
---|---|---|
result | bool | 成功:true, 失败:false |
api_data | string | api返回信息 |
server_id | int | 业务ID |
suid | string | 业务标识 |
update | array | 需要更新到业务表的数据 |
public function rerenewOrderPay($cloud, $data){
return $this->renew($cloud, $data);
}
public function reupgradeOrderPay($cloud, $data){
//向上级查询业务信息
$sync = (new QcloudApi())->describeInstances($cloud['line_no'], $cloud['guid']);
if(array_key_exists('Error',$sync['Response']){
return ['result' => false, 'api_data' => json_encode($sync)];
}
$instance = $sync['Response']['InstanceSet'];
if($data['spec_no'] && $instance['instancetypeid'] != $data['spec_no']){
//升级规格
$spec = (new QcloudApi())->upgradeSpec('ResetInstancesType',$cloud['line_no'], $cloud['guid'], $data['spec_no']);
//失败
if(array_key_exists('Error',$spec['Response']){
return ['result' => false, 'api_data' => json_encode($spec)];
}
$api_data[] = json_encode($spec);
sleep(10);
}
if($data['bandwidth'] && $instance[0]['InternetAccessible']['InternetMaxBandwidthOut'] != $data['bandwidth']){
//升级带宽
$bandWidth = (new QcloudApi())->upgradeBandwidth('ResetInstancesInternetMaxBandwidth', $cloud['line_no'], $cloud['guid'],date('Y-m-d',time()),date('Y-m-d',strtotime($cloud['end_time'])), $data['bandwidth']);
$api_data[] = json_encode($bandWidth);
if(array_key_exists('Error',$bandWidth['Response']){
return ['result' => false, 'api_data' => implode(',',$api_data)];
}
sleep(10);
}
if($data['harddisks'] && $instance['0']['DataDisks'][0]['DiskSize'] != $data['harddisks']){
//升级磁盘
$disk = (new QcloudApi())->upgradeDisk('ResizeDisk', $cloud['line_no'], $cloud['disk_id'], $data['harddisks']);
$api_data[] = json_encode($disk);
if(array_key_exists('Error',$disk['Response']){
return ['result' => false, 'api_data' => implode(',',$api_data)];
}
}
return ['result' => true , 'api_data' => implode(',',$api_data)];
}
返回参数说明
参数名 | 类型 | 说明 |
---|---|---|
result | bool | 成功:true, 失败:false |
api_data | string | api返回信息 |
/**
* 开机
*param array $cloud 业务数据
**/
public function start($cloud){
$start = (new QcloudApi())->start($cloud['line_no'],$cloud['guid']);
$result = true;
if(array_key_exists("Error",$start['Response'])){
$result = false;
}
return ['result' => $result, 'api_data' => json_encode($start)];
}
返回参数说明
参数名 | 类型 | 说明 |
---|---|---|
result | bool | 成功:true, 失败:false |
api_data | string | api返回信息 |
/**
* 关机
*param array $cloud 业务数据
**/
public function stop($cloud){
$stop = (new QcloudApi())->stop($cloud['line_no'],$cloud['guid']);
$result = true;
if(array_key_exists("Error",$stop['Response'])){
$result = false;
}
return ['result' => $result, 'api_data' => json_encode($stop)];
}
返回参数说明
参数名 | 类型 | 说明 |
---|---|---|
result | bool | 成功:true, 失败:false |
api_data | string | api返回信息 |
/**
* 重启
*param array $cloud 业务数据
**/
public function restart($cloud){
$restart = (new QcloudApi())->restart($cloud['line_no'],$cloud['guid']);
$result = true;
if(array_key_exists("Error",$restart['Response'])){
$result = false;
}
return ['result' => $result, 'api_data' => json_encode($restart)];
}
返回参数说明
参数名 | 类型 | 说明 |
---|---|---|
result | bool | 成功:true, 失败:false |
api_data | string | api返回信息 |
/**
* 重装系统
*param array $cloud 业务数据
*param string $system_no 操作系统编号
*param string $login_password 系统密码
**/
public function install($cloud, $system_no, $login_password){
$install = (new QcloudApi())->install($cloud['line_no'],$cloud['guid'],$system_no, $login_password);
$result = true;
if(array_key_exists("Error",$install['Response'])){
$result = false;
}
return ['result' => $result, 'api_data' => json_encode($install)];
}
返回参数说明
参数名 | 类型 | 说明 |
---|---|---|
result | bool | 成功:true, 失败:false |
api_data | string | api返回信息 |
/**
* 重置密码
*param array $cloud 业务数据
*param string $login_password 系统密码
**/
public function resetPassword($cloud, $login_password){
$resetPassword = (new QcloudApi())->resetPassword($cloud['line_no'],$cloud['guid'], $login_password);
$result = true;
if(array_key_exists("Error",$resetPassword['Response'])){
$result = false;
}
return ['result' => $result, 'api_data' => json_encode($resetPassword)];
}
返回参数说明
参数名 | 类型 | 说明 |
---|---|---|
result | bool | 成功:true, 失败:false |
api_data | string | api返回信息 |
/**
* 获取远程终端地址
*param array $cloud 业务数据
**/
public function vncUrl($cloud){
$url = 'https://img.qcloud.com/qcloud/app/active_vnc/index.html?InstanceVncUrl=';
$vncUrl = (new QcloudApi())->vncUrl($cloud['line_no'],$cloud['guid'], $login_password);
$instanceVncUrl = $vncUrl['Response']['InstanceVncUrl'];
if(array_key_exists("Error",$vncUrl['Response'])){
return ['result'=>false,'text' => '获取终端地址失败'];
}
return ['result' => $result, 'text' => $url . $instanceVncUrl];
}
返回参数说明
参数名 | 类型 | 说明 |
---|---|---|
result | bool | 成功:true, 失败:false |
text | string | 返回信息 |
/**
* 获取远程终端地址
*param array $cloud 业务数据
**/
public function sync($cloud){
//同步
$sync = (new QcloudApi())->sync($cloud['line_no'],$cloud['guid']);
$total_count = $sync['Response']['TotalCount'] ?? 0;
if(array_key_exists("Error",$sync['Response']) || $total_count == '0'){
return ['result' => false, 'api_data' => json_encode($sync)];
}
//获取需要更新的数据
$update = [];
$instance = $sync['Response']['InstanceSet']['0'];
date_default_timezone_set('PRC'); //修改时区
$buyTime = strtotime($instance['CreatedTime']);
$endTime = strtotime($instance['ExpiredTime']);
$update = [
'guid' => $instance['InstanceId'], //guid
'buy_time'=> date('Y-m-d H:i:s',$buyTime), //购买时间
'end_time' => date('Y-m-d H:i:s',$endTime), //过期时间
'ip' => $instance['PublicIpAddresses']['0'], //外网IP
'local_ip' => $instance['PrivateIpAddresses']['0']//内网IP
];
//只有当业务处在开通中,才会更新业务状态
if($cloud['order_status] == 0){
$update['order_status] = 1;
}
//运行状态
switch($instance['InstanceState']){
case 'RUNNING':
$run_status = '1'; //运行中
break;
case 'STOPPED':
$run_status = '-1';//已关机
break;
case 'REBOOTING':
$run_status = '4';//重启中
break;
}
$update['run_status] = $run_status;
return ['result' => true, 'text' => '同步成功', 'update' => $new_server_data, 'api_data' => '成功'];
}
返回参数说明
参数名 | 类型 | 说明 |
---|---|---|
result | bool | 成功:true, 失败:false |
api_data | string | api返回信息 |
update | array | 需要更新到业务表的数据 |