Commit 2bb52d37 authored by SN150021's avatar SN150021

对接国外静态家庭ip

parent 11d1c127
......@@ -15,6 +15,7 @@ public enum Vendor {
aws("亚马逊云"),
awscn("亚马逊中国"),
tencent("腾讯云"),
isp("住宅"),
/**
* 本地ip,即 ip 地址没有设置任何代理
......
......@@ -34,6 +34,7 @@ import com.edgec.browserbackend.common.client.AliEcsClient;
import com.edgec.browserbackend.common.client.TenCentEcsClient;
import com.edgec.browserbackend.common.client.ipvClient.IpvClient;
import com.edgec.browserbackend.common.client.ipvClient.dto.AppInstanceOpenReq;
import com.edgec.browserbackend.common.client.ipvClient.dto.AppInstanceResp;
import com.edgec.browserbackend.common.client.ipvClient.dto.AppOrderResp;
import com.edgec.browserbackend.common.client.ipvClient.dto.OpenParam;
import com.edgec.browserbackend.common.commons.utils.NotifyUtils;
......@@ -264,10 +265,30 @@ public class BrowserTask {
cloudPlatformOrderRepository.save(cloudPlatformOrder);
result = true;
}
}else if(ipResource.getVendorCn().equals("ipipv")){
}else if(ipResource.getVendorCn().equals("住宅")){
//获取住宅 region映射
String ispRegion = RegionMappingEnum.getIspRegion(
ipResource.getRegion());
if (StringUtils.isEmpty(ispRegion)) {
log.error(
"buyIpNewTasks-购买ip error:查询不到ipipv映射住宅api-region:{}",
ipResource.getRegion());
return;
}
//静态住宅ip
String unit = ipResource.getUnit().equals("week") ? "2":"3";
//AppOrderResp appOrderResp = IpvClient.instanceOpen();
int unit = ipResource.getUnit().equals("week") ? 2: 3;
AppOrderResp appOrderResp = IpvClient.instanceOpen(cloudPlatformOrder.getOrderNo(),
ipResource.getOwner(), unit, ipResource.getPeriod(), ispRegion);
if (Objects.nonNull(appOrderResp) && StringUtils.isNotEmpty(appOrderResp.getOrderNo())) {
cloudPlatformOrder.setPlatformOrderId(appOrderResp.getOrderNo());
cloudPlatformOrder.setPlatformType("isp");
cloudPlatformOrder.setRegionId(ispRegion);
cloudPlatformOrder.setRetryCount(0);
ipResource.setStatus(3);
ipResourceRepository.save(ipResource);
cloudPlatformOrderRepository.save(cloudPlatformOrder);
result = true;
}
}
/**
......@@ -561,6 +582,43 @@ public class BrowserTask {
}
}
}else if("isp".equals(cloudPlatformOrder.getPlatformType())){
AppOrderResp order = IpvClient.getOrder(
cloudPlatformOrder.getPlatformOrderId());
if (order.getStatus() != 3) {
//订单还没有处理完成
return;
}
if (Objects.nonNull(order.getInstances())) {
//判断是否重复购买
AppInstanceResp appInstanceResp = order.getInstances().get(0);
if (appInstanceResp.getStatus() == 3) {
//包年包月 更新ip状态
ipResource.setAddr(
appInstanceResp.getIp());
ipResource.setStatus(0);
ipResource.setPort(Collections.singletonList(
String.valueOf(appInstanceResp.getPort())));
ipResource.setProxyUsername(appInstanceResp.getUsername());
ipResource.setPassword(appInstanceResp.getPwd());
ipResource.setValidTime(appInstanceResp.getUserExpired());
if (StringUtils.isNotBlank(ipResource.getRegion())
&& region.contains(ipResource.getRegion())) {
ipResource.setProxyUsername(ipResource.getAddr());
ipResource.setProxyPassword(genRandom(3, 12));
ipResource.setSpecialLine(true);
}
ipResourceRepository.save(ipResource);
IpHistory ipHistory = new IpHistory();
ipHistory.setIpNo(ipResource.getAddr());
ipHistory.setPlatformType(
cloudPlatformOrder.getPlatformType());
ipHistory.setPurchasedTime(Instant.now().toEpochMilli());
ipHistoryRepository.save(ipHistory);
return;
}
}
}
} catch (Exception e) {
log.error(e.getMessage(), e);
......
......@@ -93,12 +93,7 @@ public class IpvClient {
return resp;
}
public AppOrderResp getOrder(AppGetOrderReq req) throws Exception {
byte[] params = JSON.toJSONBytes(req);
byte[] res = post(GET_ORDER_URI, params);
AppOrderResp resp = JSON.parseObject(new String(res), AppOrderResp.class);
return resp;
}
public List<AppInstanceResp> getInstance(AppGetInstanceReq req) throws Exception {
byte[] params = JSON.toJSONBytes(req);
......@@ -115,19 +110,26 @@ public class IpvClient {
return list;
}
public static AppOrderResp instanceOpen(String orderNo, String owner,String username, String password, CloudPlatformConfig config) {
/**
* @Author SN150021
* @Description //购买ip
* @Date 2024/10/8 14:24
**/
public static AppOrderResp instanceOpen(String orderNo, String owner, int unit, Integer cycleTimes, String productNo) {
AppOrderResp resp = null;
try {
AppInstanceOpenReq req = new AppInstanceOpenReq();
req.setAppOrderNo(orderNo);
List<OpenParam> params =new ArrayList<>();
OpenParam param = new OpenParam();
//购买数量 (实例个数) 默认 1
param.setCount(1);
param.setProductNo(config.getTemplateId());
param.setUnit(1);
param.setDuration(10);
param.setFlow(1);
param.setCycleTimes(1);
param.setProductNo(productNo);
param.setUnit(unit);
param.setDuration(1);
param.setCycleTimes(cycleTimes);
params.add(param);
req.setParams(params);
byte[] params1 = JSON.toJSONBytes(req);
byte[] res = post(INSTANCE_OPEN_URI, params1);
resp = JSON.parseObject(new String(res), AppOrderResp.class);
......@@ -138,6 +140,20 @@ public class IpvClient {
return resp;
}
/**
* @Author SN150021
* @Description //查询订单
* @Date 2024/10/8 14:24
**/
public static AppOrderResp getOrder(String orderNo) throws Exception {
AppGetOrderReq req = new AppGetOrderReq();
req.setOrderNo(orderNo);
byte[] params = JSON.toJSONBytes(req);
byte[] res = post(GET_ORDER_URI, params);
AppOrderResp resp = JSON.parseObject(new String(res), AppOrderResp.class);
return resp;
}
public AppOrderResp instanceRenew(AppInstanceRenewReq req) throws Exception {
byte[] params = JSON.toJSONBytes(req);
byte[] res = post(INSTANCE_RENEW_URI, params);
......
......@@ -50,13 +50,13 @@ public enum RegionMappingEnum {
MANILA("manila","菲律宾-马尼拉","ap-southeast-6","","ipideash_606"),
SEOUL("seoul","韩国-首尔","ap-northeast-2","ap-seoul","ipideash_621"),
TW("taiwan","中国-台湾","","","ipideash_592"),
LSWJS("lasiweijiasi","美国-拉斯维加斯","","","ipideash_592"),
NY("niuyue","美国-纽约","","","ipideash_590"),
LSG("luoshanji","美国-洛杉矶","","","ipideash_615"),
MAM("maiami","美国-迈阿密","","","ipideash_595"),
HSD("huashendun","美国-华盛顿","","","ipideash_613"),
LSWJS("lasvegas","美国-拉斯维加斯","","","ipideash_592"),
NY("newyork","美国-纽约","","","ipideash_590"),
LSG("losangeles","美国-洛杉矶","","","ipideash_615"),
MAM("miami","美国-迈阿密","","","ipideash_595"),
HSD("washington","美国-华盛顿","","","ipideash_613"),
CAN("canada","加拿大","","","ipideash_603"),
YN("yuenan","越南","","","ipideash_619"),
YN("vietnam","越南","","","ipideash_619"),
;
......@@ -69,7 +69,7 @@ public enum RegionMappingEnum {
private final String tenCentRegionApi;//腾讯云地区api
private final String ipipvRegionApi;//ipipv RegionApi
private final String ispRegionApi;//住宅ip api
public static RegionMappingEnum getByRegion(String type) {
......@@ -142,4 +142,14 @@ public enum RegionMappingEnum {
}
return tenCentResion;
}
public static String getIspRegion(String region) {
String tenCentResion = "";
RegionMappingEnum byRegion = getByRegion(region);
if(Objects.isNull(byRegion)){
return tenCentResion;
}
tenCentResion = byRegion.getIspRegionApi();
return tenCentResion;
}
}
package com.edgec.browserbackend;
import com.alibaba.fastjson.JSON;
import com.edgec.browserbackend.common.client.ipvClient.IpvClient;
import com.edgec.browserbackend.common.client.ipvClient.dto.*;
import io.micrometer.core.instrument.util.JsonUtils;
import java.util.ArrayList;
import java.util.List;
import net.minidev.json.JSONUtil;
import org.assertj.core.util.Lists;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
......@@ -19,7 +23,7 @@ public class IpvCliestTest {
String endPoint = "https://sandbox.ipipv.com";
String appKey = "AK20240923090940";
String appSecret = "zd7js60suebep2hkiane59g6v9j8jezv";
ipv = null;
ipv = new IpvClient();
}
@Test
......@@ -38,8 +42,9 @@ public class IpvCliestTest {
@Test
void testGetProductStock() throws Exception{
AppProductSyncReq req = new AppProductSyncReq();
req.setProxyType(Lists.newArrayList(103));
List<AppProductSyncResp> resp = ipv.getProductStock(req);
System.out.println(resp);
System.out.println(JSON.toJSONString(resp));
}
@Test
......@@ -66,8 +71,17 @@ public class IpvCliestTest {
//param.setAppUsername();
params.add(param);
req.setParams(params);
//AppOrderResp resp = ipv.instanceOpen(req);
// System.out.println(resp);
AppOrderResp appOrderResp = IpvClient.instanceOpen("test00012213",
"111223", 4, 2, "ipideash_619");
System.out.println(JSON.toJSONString(appOrderResp));
}
@Test
void testGetOrder() throws Exception{
AppGetOrderReq req = new AppGetOrderReq();
req.setOrderNo("C20241008141433048384");
AppOrderResp resp = IpvClient.getOrder("C20241008141433048384");
System.out.println(JSON.toJSONString(resp));
}
@Test
......@@ -136,26 +150,20 @@ public class IpvCliestTest {
@Test
void testgetInstance() throws Exception {
AppGetInstanceReq req = new AppGetInstanceReq();
req.setInstances(null);
req.setInstances(Lists.newArrayList("c_gz7bdmvrvns6qea"));
List<AppInstanceResp> resp = ipv.getInstance(req);
System.out.println(resp);
System.out.println(JSON.toJSONString(resp));
}
@Test
void testInstanceRenew() throws Exception {
AppInstanceOpenReq req = new AppInstanceOpenReq();
req.setAppOrderNo("01");
req.setAppOrderNo("C20241008141433048384");
//AppOrderResp resp = ipv.instanceOpen(req);
//System.out.println(resp);
}
@Test
void testGetOrder() throws Exception{
AppGetOrderReq req = new AppGetOrderReq();
req.setOrderNo("1234");
AppOrderResp resp = ipv.getOrder(req);
System.out.println(resp);
}
@Test
void testinstanceRelease() throws Exception{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment