Commit 7da93612 authored by chenchao.deng's avatar chenchao.deng

购买定时任务优化 +浏览器参数配置

parent f38384e0
......@@ -33,4 +33,6 @@ public class CloudPlatformOrder {
private String platformType;//云平台类型
private Integer retryCount;//重试次数
}
package com.edgec.browserbackend.browser.domain;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
/**
* 分配ip历史记录表
*
* @Author: Chen
* @Date: 2024/08/14
*/
@Getter
@Setter
@NoArgsConstructor
@Document(collection = "ipHistory")
@JsonIgnoreProperties(ignoreUnknown = true)
public class IpHistory {
@Id
private String id;
private String ipNo;//ipNo
private String platformType;//云平台类型
private long purchasedTime;
}
......@@ -21,6 +21,8 @@ public class PlatformOptions {
private int weight;
private int platformType;
private boolean deleted;
private Map<String, String> subPlatform;
......
package com.edgec.browserbackend.browser.repository;
import com.edgec.browserbackend.browser.domain.CloudPlatformConfig;
import com.edgec.browserbackend.browser.domain.IpHistory;
import com.edgec.browserbackend.browser.domain.Shop;
import java.util.List;
import org.springframework.data.mongodb.repository.MongoRepository;
/**
* @Description //购买ip记录 repository
* @Date 2024年8月1日
* @Author Chen
**/
public interface IpHistoryRepository extends MongoRepository<IpHistory, String> {
List<IpHistory> findByIpNoAndPurchasedTimeAfter(String ipNo, long purchasedTime);
}
......@@ -13,5 +13,5 @@ import java.util.List;
public interface PlatformOptionsRepository extends MongoRepository<PlatformOptions, String>, PlatformOptionsRepositoryCustom {
List<PlatformOptions> findAllByOrderByWeightDesc();
List<PlatformOptions> findAllByDeletedIsNotOrderByWeightDesc(boolean b);
List<PlatformOptions> findAllByDeletedIsNotOrderByPlatformTypeAscWeightDesc(boolean b);
}
......@@ -766,7 +766,7 @@ public class IpResourceServiceImpl implements IpResourceService {
@Override
public List<PlatformOptions> getPlatformOptions() {
try {
List<PlatformOptions> platformOptions = platformOptionsRepository.findAllByDeletedIsNotOrderByWeightDesc(true);
List<PlatformOptions> platformOptions = platformOptionsRepository.findAllByDeletedIsNotOrderByPlatformTypeAscWeightDesc(true);
// Collections.sort(platformOptions, Comparator.comparing(PlatformOptions::getWeight).reversed());
return platformOptions;
} catch (Exception e) {
......
......@@ -5,6 +5,8 @@ import com.alibaba.fastjson.JSONObject;
import com.aliyun.sdk.service.ecs20140526.models.DeleteInstanceResponse;
import com.aliyun.sdk.service.ecs20140526.models.DescribeInstancesResponse;
import com.aliyun.sdk.service.ecs20140526.models.DescribeInstancesResponseBody;
import com.aliyun.sdk.service.ecs20140526.models.DescribeInstancesResponseBody.Instance;
import com.aliyun.sdk.service.ecs20140526.models.ModifyInstanceChargeTypeResponse;
import com.aliyun.sdk.service.ecs20140526.models.RunInstancesResponse;
import com.edgec.browserbackend.account.domain.Account;
import com.edgec.browserbackend.account.domain.IpChargeRequestDto;
......@@ -15,6 +17,7 @@ import com.edgec.browserbackend.account.service.AccountService;
import com.edgec.browserbackend.browser.domain.CloudPlatformConfig;
import com.edgec.browserbackend.browser.domain.CloudPlatformOrder;
import com.edgec.browserbackend.browser.domain.IpCountRecord;
import com.edgec.browserbackend.browser.domain.IpHistory;
import com.edgec.browserbackend.browser.domain.IpResource;
import com.edgec.browserbackend.browser.domain.IpType;
import com.edgec.browserbackend.browser.dto.DeleteIpResultDto;
......@@ -24,6 +27,7 @@ import com.edgec.browserbackend.browser.dto.ShopRequestDto;
import com.edgec.browserbackend.browser.repository.CloudPlatformConfigRepository;
import com.edgec.browserbackend.browser.repository.CloudPlatformOrderRepository;
import com.edgec.browserbackend.browser.repository.IpCountRecordRepository;
import com.edgec.browserbackend.browser.repository.IpHistoryRepository;
import com.edgec.browserbackend.browser.repository.IpResourceRepository;
import com.edgec.browserbackend.browser.service.IpAndShopService;
import com.edgec.browserbackend.common.client.AliEcsClient;
......@@ -31,6 +35,10 @@ import com.edgec.browserbackend.common.commons.utils.NotifyUtils;
import com.edgec.browserbackend.common.enums.RegionMappingEnum;
import com.edgec.browserbackend.common.utils.ThreadPoolUtils;
import com.edgec.browserbackend.common.utils.Trans;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import javax.annotation.Resource;
import okhttp3.*;
import org.apache.commons.collections4.CollectionUtils;
......@@ -88,6 +96,9 @@ public class BrowserTask {
@Resource
private CloudPlatformConfigRepository cloudPlatformConfigRepository;
@Resource
private IpHistoryRepository ipHistoryRepository;
public Map<String, String> buildGetHeader() {
Map<String, String> headers = new HashMap<>();
headers.put("Content-Type", "application/json");
......@@ -173,6 +184,7 @@ public class BrowserTask {
cloudPlatformOrder.setPlatformOrderId(instanceId);
cloudPlatformOrder.setPlatformType("aliyun");
cloudPlatformOrder.setRegionId(aliRegion);
cloudPlatformOrder.setRetryCount(0);
ipResource.setStatus(3);
ipResourceRepository.save(ipResource);
cloudPlatformOrderRepository.save(cloudPlatformOrder);
......@@ -235,42 +247,118 @@ public class BrowserTask {
//查询cloudPlatform
List<CloudPlatformOrder> cloudPlatformOrders = cloudPlatformOrderRepository.findByOwnerAndIpResourceId(
ipResource.getOwner(), ipResource.getId());
if(CollectionUtils.isEmpty(cloudPlatformOrders)){
log.error("queryIpTask- 查询云平台订单失败:入参:{}",JSON.toJSON(ipResource));
if (CollectionUtils.isEmpty(cloudPlatformOrders)) {
log.error("queryIpTask- 查询云平台订单失败:入参:{}",
JSON.toJSON(ipResource));
return;
}
CloudPlatformOrder cloudPlatformOrder = cloudPlatformOrders.get(0);
if("aliyun".equals(cloudPlatformOrder.getPlatformType())){
if ("aliyun".equals(cloudPlatformOrder.getPlatformType())) {
DescribeInstancesResponse response = AliEcsClient.getDescribeInstances(
ipResource.getOwner(), cloudPlatformOrder.getPlatformOrderId(),
cloudPlatformOrder.getRegionId());
if (!response.getStatusCode().equals(200)) {
log.error(", fail to query ip : {}", JSON.toJSON(response.getBody()));
}
if(Objects.nonNull(response.getBody())){
DescribeInstancesResponseBody body = response.getBody();
//TODO 查询ip信息并且封装 到期时间还没有明确
ipResource.setAddr(body.getInstances().getInstance().get(0).getPublicIpAddress().getIpAddress().get(0));
log.error(", fail to query ip : {}",
JSON.toJSON(response.getBody()));
}
if (Objects.nonNull(response.getBody())) {
//判断是否重复购买
Instance instance = response.getBody().getInstances()
.getInstance().get(0);
if (instance.getInstanceChargeType().equals("PrePaid")) {
//包年包夜 更新ip状态
ipResource.setAddr(
instance.getPublicIpAddress().getIpAddress().get(0));
ipResource.setStatus(0);
//ipResource.setValidTime(Instant.parse(x.getValidTill()).toEpochMilli());
if (StringUtils.isNotBlank(ipResource.getRegion()) && region.contains(ipResource.getRegion())) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mmX");
Instant instant = Instant.from(formatter.parse(instance.getExpiredTime()));
ipResource.setValidTime(instant.toEpochMilli());
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;
}
//查询是否为重复ip
String ipNo = instance.getPublicIpAddress().getIpAddress()
.get(0);
LocalDateTime localDateTime = LocalDateTime.now().minus(3, ChronoUnit.MONTHS);
Instant instant = localDateTime.atZone(ZoneId.systemDefault()).toInstant();
List<IpHistory> ipHistoryList = ipHistoryRepository.findByIpNoAndPurchasedTimeAfter(
ipNo,
instant.toEpochMilli());
if (CollectionUtils.isNotEmpty(ipHistoryList) &&
(Objects.isNull(cloudPlatformOrder.getRetryCount()) ||
cloudPlatformOrder.getRetryCount() < 5)) {
//重新分配ip(删除旧的 购买新的)
AliEcsClient.deleteInstance(
ipResource.getOwner(),
cloudPlatformOrder.getPlatformOrderId(),
cloudPlatformOrder.getRegionId());
CloudPlatformConfig config = cloudPlatformConfigRepository.findByPlatformAndRegionId(
"ali",
cloudPlatformOrder.getRegionId());
RunInstancesResponse response1 = AliEcsClient.runInstances(
ipResource.getOwner(), ipResource.getUsername(),
ipResource.getPassword(), config);
if (null == response1 || !response1.getStatusCode()
.equals(200)) {
log.error("queryIpNewTasks, fail to buy ip again : {}",
JSON.toJSON(response));
} else if (Objects.nonNull(response1.getBody())) {
int oldRetryCount =
Objects.isNull(cloudPlatformOrder.getRetryCount())
? 0 : cloudPlatformOrder.getRetryCount();
cloudPlatformOrder.setRetryCount(oldRetryCount + 1);
cloudPlatformOrderRepository.save(cloudPlatformOrder);
String instanceId = response1.getBody()
.getInstanceIdSets().getInstanceIdSet().get(0);
cloudPlatformOrder.setPlatformOrderId(instanceId);
ipResource.setStatus(3);
ipResourceRepository.save(ipResource);
cloudPlatformOrderRepository.save(cloudPlatformOrder);
}
} else {
//将ip改为包年包月
String periodUnit =
ipResource.getUnit().equals("week") ? "Week" : "Month";
ModifyInstanceChargeTypeResponse modifyInstanceChargeTypeResponse =
AliEcsClient.modifyInstanceChargeType(
ipResource.getOwner(), periodUnit,
ipResource.getPeriod(),
cloudPlatformOrder.getRegionId(),
cloudPlatformOrder.getPlatformOrderId());
if (null == modifyInstanceChargeTypeResponse
|| !modifyInstanceChargeTypeResponse.getStatusCode()
.equals(200)) {
//TODO 目前先抛错误 待确认如何解决
log.error("queryIpNewTasks, fail to buy ip again : {}",
JSON.toJSON(response));
}
}
}
}
} catch (Exception e) {
log.error(e.getMessage(), e);
NotifyUtils.sendMessage("浏览器后端 queryIpTasks() 又炸了,赶紧看啊", e, NotifyUtils.MsgType.WEBHOOK);
NotifyUtils.sendMessage("浏览器后端 queryIpTasks() 又炸了,赶紧看啊", e,
NotifyUtils.MsgType.WEBHOOK);
} finally {
long end = System.currentTimeMillis();
log.debug("queryIpTask {} execution time is: " + (end - start) / 1000 + "s", ipResource.getId());
log.debug(
"queryIpTask {} execution time is: " + (end - start) / 1000 + "s",
ipResource.getId());
try {
ipResourceRepository.unLockTask(ipResource.getId());
} catch (Throwable th) {
......
......@@ -9,6 +9,7 @@ import com.edgec.browserbackend.browser.repository.IpResourceRepository;
import com.edgec.browserbackend.common.commons.error.ClientRequestException;
import com.edgec.browserbackend.common.commons.utils.SmsUtils;
import net.javacrumbs.shedlock.core.SchedulerLock;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
......@@ -32,6 +33,7 @@ public class ExpireSoonWarn {
@SchedulerLock(name = "ExpireSoonWarnsendMessages", lockAtMostForString = "PT600S", lockAtLeastForString = "PT600S")
public void sendMessages() {
this.sendExpiredIpAccount(0);
this.sendExpiredIpAccount(3);
this.sendExpiredIpAccount(7);
}
......@@ -52,7 +54,24 @@ public class ExpireSoonWarn {
if (ipResources != null && ipResources.size() > 0) {
Map<String, List<IpResource>> map = ipResources.stream().collect(Collectors.groupingBy(IpResource::getOwner));
for (String key : map.keySet()) {
sendToAccount(key, day, map.get(key).size(), map.get(key).stream().map(x -> x.getAddr()).collect(Collectors.toList()));
if(day == 7) {
List<String> mouth = map.get(key).stream()
.filter(item -> item.getUnit().equals("mouth"))
.map(IpResource::getAddr).collect(Collectors.toList());
if(CollectionUtils.isNotEmpty(mouth)){
sendToAccount(key, day, map.get(key).size(), mouth);
}
}else if(day == 3){
List<String> mouth = map.get(key).stream()
.filter(item -> item.getUnit().equals("week"))
.map(IpResource::getAddr).collect(Collectors.toList());
if(CollectionUtils.isNotEmpty(mouth)){
sendToAccount(key, day, map.get(key).size(), mouth);
}
}else {
sendToAccount(key, day, map.get(key).size(),
map.get(key).stream().map(x -> x.getAddr()).collect(Collectors.toList()));
}
}
}
}
......
......@@ -8,6 +8,8 @@ import com.aliyun.sdk.service.ecs20140526.models.DeleteInstanceRequest;
import com.aliyun.sdk.service.ecs20140526.models.DeleteInstanceResponse;
import com.aliyun.sdk.service.ecs20140526.models.DescribeInstancesRequest;
import com.aliyun.sdk.service.ecs20140526.models.DescribeInstancesResponse;
import com.aliyun.sdk.service.ecs20140526.models.ModifyInstanceChargeTypeRequest;
import com.aliyun.sdk.service.ecs20140526.models.ModifyInstanceChargeTypeResponse;
import com.aliyun.sdk.service.ecs20140526.models.RenewInstanceRequest;
import com.aliyun.sdk.service.ecs20140526.models.RenewInstanceResponse;
import com.aliyun.sdk.service.ecs20140526.models.RunInstancesRequest;
......@@ -180,4 +182,36 @@ public class AliEcsClient {
return resp;
}
/**
* 将按量改为包年包月
*/
public static ModifyInstanceChargeTypeResponse modifyInstanceChargeType(String owner,
String periodUnit, int period, String regionId, String instanceId) {
AsyncClient client = createClient(regionId);
ModifyInstanceChargeTypeResponse modifyInstanceChargeTypeResponse = null;
try {
String instanceIds = String.format("[\"%s\"]", instanceId);
ModifyInstanceChargeTypeRequest modifyInstanceChargeTypeRequest =
ModifyInstanceChargeTypeRequest.builder()
.instanceIds(instanceIds)
.regionId(regionId)
.instanceChargeType("PrePaid")
.periodUnit(periodUnit)
.period(period)
.build();
log.info(
"调用aliEcs将实例由量改为包年包月,入参:owner:{},regionId:{},periodUnit:{},period:{}, instanceId{}",
owner, regionId, periodUnit, period, instanceId);
CompletableFuture<ModifyInstanceChargeTypeResponse> response = client.modifyInstanceChargeType(
modifyInstanceChargeTypeRequest);
modifyInstanceChargeTypeResponse = response.get();
log.info("调用aliEcs将实例由量改为包年包月,响应参数:owner:{},response:{}", owner,
JSON.toJSON(modifyInstanceChargeTypeResponse));
} catch (Exception e) {
log.error("fail to aliEcs modifyInstanceChargeType {}", e.getMessage());
} finally {
client.close();
}
return modifyInstanceChargeTypeResponse;
}
}
......@@ -7,44 +7,31 @@
"深圳",
"广州",
"北京",
"青岛",
"张家口",
"呼和浩特",
"乌兰察布",
"成都",
"河源"
],
"港澳台": [
"香港"
"中国香港"
],
"美国": [
"美国随机",
"加利福尼亚",
"弗吉尼亚",
"俄勒冈",
"俄亥俄"
],
"欧洲": [
"英国-伦敦",
"德国-法兰克福",
"俄罗斯-莫斯科",
"法国-巴黎"
"硅谷",
"弗吉尼亚"
],
"亚太": [
"日本-东京",
"新加坡",
"澳大利亚-悉尼",
"马来西亚-吉隆坡",
"印度尼西亚-雅加达"
],
"印度": [
"孟买"
],
"美洲": [
"加拿大",
"巴西"
"泰国-曼谷",
"印度尼西亚-雅加达",
"菲律宾-马尼拉",
"日本-东京",
"韩国-首尔"
],
"中东": [
"迪拜"
"欧洲": [
"英国-伦敦",
"德国-法兰克福"
],
"本地": [
"本地"
......@@ -52,106 +39,82 @@
},
"ipPlatForm": {
"中国随机": [
"阿里云-68-49",
"腾讯云-68-49"
"阿里云-28-28"
],
"杭州": [
"阿里云-68-49"
"阿里云-28-28"
],
"上海": [
"阿里云-68-49"
"阿里云-28-28"
],
"深圳": [
"阿里云-68-49"
"阿里云-28-28"
],
"广州": [
"阿里云-68-49",
"腾讯云-68-49"
"阿里云-28-28"
],
"北京": [
"阿里云-68-49"
],
"青岛": [
"阿里云-68-49"
],
"张家口": [
"阿里云-68-49"
"阿里云-28-28"
],
"呼和浩特": [
"阿里云-68-49"
"阿里云-28-28"
],
"乌兰察布": [
"阿里云-28-28"
],
"成都": [
"阿里云-68-49"
"阿里云-28-28"
],
"河源": [
"阿里云-68-49"
"阿里云-28-28"
],
"香港": [
"阿里云-68-49"
"中国香港": [
"阿里云-28-28"
],
"美国随机": [
"阿里云-58-49",
"亚马逊云-58-49"
"阿里云-28-28"
],
"加利福尼亚": [
"亚马逊云-58-49",
"阿里云-58-49"
"硅谷": [
"阿里云-28-28"
],
"弗吉尼亚": [
"阿里云-58-49",
"亚马逊云-58-49"
],
"俄勒冈": [
"亚马逊云-58-49"
],
"俄亥俄": [
"亚马逊云-58-49"
"阿里云-28-28"
],
"英国-伦敦": [
"阿里云-88-49",
"亚马逊云-88-49"
"阿里云-28-28"
],
"德国-法兰克福": [
"阿里云-88-49",
"亚马逊云-88-49"
],
"俄罗斯-莫斯科": [
"腾讯云-88-49"
],
"法国-巴黎": [
"亚马逊云-88-49"
],
"日本-东京": [
"阿里云-88-49",
"亚马逊云-88-49"
"阿里云-28-28"
],
"新加坡": [
"阿里云-88-49"
],
"澳大利亚-悉尼": [
"阿里云-88-49",
"亚马逊云-68-49"
"阿里云-28-28"
],
"马来西亚-吉隆坡": [
"阿里云-88-49"
"阿里云-28-28"
],
"泰国-曼谷": [
"阿里云-28-28"
],
"印度尼西亚-雅加达": [
"阿里云-68-49"
"阿里云-28-28"
],
"菲律宾-马尼拉": [
"阿里云-28-28"
],
"孟买": [
"阿里云-68-49"
"日本-东京": [
"阿里云-28-28"
],
"加拿大": [
"亚马逊云-68-49"
"韩国-首尔": [
"阿里云-28-28"
],
"巴西-圣保罗": [
"亚马逊云-68-49"
"自有": [
"自有-2-2"
],
"迪拜": [
"阿里云-88-49"
"自有专线": [
"自有专线-5-5"
],
"本地": [
"本地ip-0-0"
"本地-0-0"
]
},
"supportedPlatForm": {
......@@ -333,6 +296,26 @@
"其他平台-0"
]
},
"乌兰察布": {
"阿里云": [
"亚马逊-1",
"亚马逊日本-0",
"ebay-1",
"全球速卖通-1",
"Wish-1",
"Shopee-1",
"Lazada-0",
"CDiscount-1",
"Joom-1",
"Vova-1",
"乐天-0",
"Ozon-1",
"FactoryMarket-1",
"PayPal-0",
"PayPal(中国)-1",
"其他平台-0"
]
},
"成都": {
"阿里云": [
"亚马逊-1",
......@@ -376,6 +359,7 @@
"香港": {
"阿里云": [
"亚马逊-1",
"亚马逊日本-0",
"ebay-1",
"全球速卖通-1",
"Wish-1",
......@@ -412,6 +396,7 @@
"美国随机": {
"阿里云": [
"亚马逊-1",
"亚马逊日本-0",
"ebay-1",
"全球速卖通-1",
"Wish-1",
......@@ -428,6 +413,7 @@
],
"亚马逊云": [
"亚马逊-1",
"亚马逊日本-0",
"ebay-1",
"全球速卖通-1",
"Wish-1",
......@@ -443,25 +429,10 @@
"其他平台-0"
]
},
"加利福尼亚": {
"硅谷": {
"阿里云": [
"亚马逊-1",
"ebay-1",
"全球速卖通-1",
"Wish-1",
"Shopee-1",
"Lazada-0",
"CDiscount-1",
"Joom-1",
"Vova-1",
"乐天-0",
"Ozon-1",
"FactoryMarket-1",
"PayPal-1",
"其他平台-0"
],
"亚马逊云": [
"亚马逊-1",
"亚马逊日本-0",
"ebay-1",
"全球速卖通-1",
"Wish-1",
......@@ -480,6 +451,7 @@
"弗吉尼亚": {
"阿里云": [
"亚马逊-1",
"亚马逊日本-0",
"ebay-1",
"全球速卖通-1",
"Wish-1",
......@@ -496,6 +468,7 @@
],
"亚马逊云": [
"亚马逊-1",
"亚马逊日本-0",
"ebay-1",
"全球速卖通-1",
"Wish-1",
......@@ -514,6 +487,7 @@
"俄勒冈": {
"亚马逊云": [
"亚马逊-1",
"亚马逊日本-0",
"ebay-1",
"全球速卖通-1",
"Wish-1",
......@@ -532,6 +506,7 @@
"俄亥俄": {
"亚马逊云": [
"亚马逊-1",
"亚马逊日本-0",
"ebay-1",
"全球速卖通-1",
"Wish-1",
......@@ -550,6 +525,7 @@
"英国-伦敦": {
"阿里云": [
"亚马逊-1",
"亚马逊日本-0",
"ebay-1",
"全球速卖通-1",
"Wish-1",
......@@ -566,6 +542,7 @@
],
"亚马逊云": [
"亚马逊-1",
"亚马逊日本-0",
"ebay-1",
"全球速卖通-1",
"Wish-1",
......@@ -584,6 +561,7 @@
"德国-法兰克福": {
"阿里云": [
"亚马逊-1",
"亚马逊日本-0",
"ebay-1",
"全球速卖通-1",
"Wish-1",
......@@ -600,6 +578,7 @@
],
"亚马逊云": [
"亚马逊-1",
"亚马逊日本-0",
"ebay-1",
"全球速卖通-1",
"Wish-1",
......@@ -618,6 +597,7 @@
"俄罗斯-莫斯科": {
"腾讯云": [
"亚马逊-1",
"亚马逊日本-0",
"ebay-1",
"全球速卖通-1",
"Wish-1",
......@@ -636,6 +616,7 @@
"法国-巴黎": {
"亚马逊云": [
"亚马逊-1",
"亚马逊日本-0",
"ebay-1",
"全球速卖通-1",
"Wish-1",
......@@ -654,6 +635,7 @@
"日本-东京": {
"阿里云": [
"亚马逊-1",
"亚马逊日本-0",
"ebay-1",
"全球速卖通-1",
"Wish-1",
......@@ -670,6 +652,7 @@
],
"亚马逊云": [
"亚马逊-1",
"亚马逊日本-0",
"ebay-1",
"全球速卖通-1",
"Wish-1",
......@@ -689,6 +672,7 @@
"新加坡": {
"阿里云": [
"亚马逊-1",
"亚马逊日本-0",
"ebay-1",
"全球速卖通-1",
"Wish-1",
......@@ -705,6 +689,7 @@
],
"亚马逊云": [
"亚马逊-1",
"亚马逊日本-0",
"ebay-1",
"全球速卖通-1",
"Wish-1",
......@@ -724,6 +709,7 @@
"澳大利亚-悉尼": {
"阿里云": [
"亚马逊-1",
"亚马逊日本-0",
"ebay-1",
"全球速卖通-1",
"Wish-1",
......@@ -740,6 +726,7 @@
],
"亚马逊云": [
"亚马逊-1",
"亚马逊日本-0",
"ebay-1",
"全球速卖通-1",
"Wish-1",
......@@ -758,6 +745,45 @@
"马来西亚-吉隆坡": {
"阿里云": [
"亚马逊-1",
"亚马逊日本-0",
"ebay-1",
"全球速卖通-1",
"Wish-1",
"Shopee-1",
"Lazada-0",
"CDiscount-1",
"Joom-1",
"Vova-1",
"乐天-0",
"Ozon-1",
"FactoryMarket-1",
"PayPal-1",
"其他平台-0"
]
},
"菲律宾-马尼拉": {
"阿里云": [
"亚马逊-1",
"亚马逊日本-0",
"ebay-1",
"全球速卖通-1",
"Wish-1",
"Shopee-1",
"Lazada-0",
"CDiscount-1",
"Joom-1",
"Vova-1",
"乐天-0",
"Ozon-1",
"FactoryMarket-1",
"PayPal-1",
"其他平台-0"
]
},
"韩国-首尔": {
"阿里云": [
"亚马逊-1",
"亚马逊日本-0",
"ebay-1",
"全球速卖通-1",
"Wish-1",
......@@ -776,6 +802,7 @@
"印度尼西亚-雅加达": {
"阿里云": [
"亚马逊-1",
"亚马逊日本-0",
"ebay-1",
"全球速卖通-1",
"Wish-1",
......@@ -794,6 +821,7 @@
"孟买": {
"阿里云": [
"亚马逊-1",
"亚马逊日本-0",
"ebay-1",
"全球速卖通-1",
"Wish-1",
......@@ -812,6 +840,7 @@
"加拿大": {
"亚马逊云": [
"亚马逊-1",
"亚马逊日本-0",
"ebay-1",
"全球速卖通-1",
"Wish-1",
......@@ -830,6 +859,7 @@
"巴西": {
"亚马逊云": [
"亚马逊-1",
"亚马逊日本-0",
"ebay-1",
"全球速卖通-1",
"Wish-1",
......@@ -848,6 +878,7 @@
"迪拜": {
"阿里云": [
"亚马逊-1",
"亚马逊日本-0",
"ebay-1",
"全球速卖通-1",
"Wish-1",
......@@ -866,6 +897,7 @@
"本地": {
"本地": [
"亚马逊-1",
"亚马逊日本-0",
"ebay-1",
"全球速卖通-1",
"Wish-1",
......@@ -886,7 +918,7 @@
"1周",
"1个月",
"3个月",
"6个月(送1个月)",
"12个月(送2个月)"
"6个月",
"12个月"
]
}
\ No newline at end of file
package com.edgec.browserbackend;
import com.alibaba.fastjson.JSONObject;
import com.aliyun.sdk.service.ecs20140526.models.DeleteInstanceResponse;
import com.edgec.browserbackend.account.domain.UserBalance;
import com.edgec.browserbackend.account.repository.UserBalanceRepository;
import com.edgec.browserbackend.account.service.SmsUtils;
import com.edgec.browserbackend.browser.domain.CloudPlatformConfig;
import com.edgec.browserbackend.browser.domain.IpHistory;
import com.edgec.browserbackend.browser.repository.CloudPlatformConfigRepository;
import com.edgec.browserbackend.browser.repository.IpHistoryRepository;
import com.edgec.browserbackend.browser.task.BrowserTask;
import com.edgec.browserbackend.common.client.AliEcsClient;
import com.edgec.browserbackend.common.commons.utils.SmsUtils;
import com.edgec.browserbackend.common.utils.Aes;
import java.time.Instant;
import javax.annotation.Resource;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
......@@ -40,12 +44,19 @@ class BrowserBackendApplicationTests {
//browserTask.queryIpNewTasks();
//AliEcsClient.runInstances("111","ceshi11","2222",config);
//AliEcsClient.getDescribeInstances("测试","i-wz9hf0i13xj6h904k14p","cn-shenzhen");
DeleteInstanceResponse response = AliEcsClient.deleteInstance("测试", "i-j6ciop90gd68yg5n0sqo","cn-hongkong");
DeleteInstanceResponse response = AliEcsClient.deleteInstance("测试", "i-j6cd9fujd6we3dzk8z9e","cn-hongkong");
//AliEcsClient.modifyInstanceChargeType("18711016574","Week",1,"cn-hongkong", "i-j6cd9fujd6we3dzk8z9e");
}
@Resource
private IpHistoryRepository ipHistoryRepository;
@Test
void test3() throws Exception {
SmsUtils.sendSmsOTP("18711016574");
JSONObject param = new JSONObject();
param.put("day", "7");
param.put("amount", "5");
SmsUtils.sendIpSms("18711016574", SmsUtils.SmsTemplateCode.IPWILLEXPIRE_EXPIRE, param);
}
}
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