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) {
......
......@@ -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;
}
}
This diff is collapsed.
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