Commit ef1b2105 authored by renjie's avatar renjie

ip购买修改

parent 7605fbad
...@@ -19,6 +19,8 @@ public class UserPrePaidBilling { ...@@ -19,6 +19,8 @@ public class UserPrePaidBilling {
private String username; private String username;
private String tradeNo;
private int year; private int year;
private int month; private int month;
...@@ -42,18 +44,10 @@ public class UserPrePaidBilling { ...@@ -42,18 +44,10 @@ public class UserPrePaidBilling {
private String user; private String user;
private float ownPotentialCost = 0;
private float ownActualCost = 0;
private float ownBillingCost = 0;
private float total; private float total;
//0 -- 充值, 1 -- newip, 2 --renew, 3 --ipkeptfee, 4 --deleteip, //0 -- 充值, 1 -- newip, 2 --renew, 3 --ipkeptfee, 4 --deleteip,
private int chargeType; private int chargeType;
private String target;
private String unit = "month"; private String unit = "month";
private List<DeductionRecord> deductionRecords = new ArrayList<>(); private List<DeductionRecord> deductionRecords = new ArrayList<>();
...@@ -82,14 +76,6 @@ public class UserPrePaidBilling { ...@@ -82,14 +76,6 @@ public class UserPrePaidBilling {
this.chargeType = chargeType; this.chargeType = chargeType;
} }
public String getTarget() {
return target;
}
public void setTarget(String target) {
this.target = target;
}
public String getUnit() { public String getUnit() {
return unit; return unit;
} }
...@@ -146,22 +132,6 @@ public class UserPrePaidBilling { ...@@ -146,22 +132,6 @@ public class UserPrePaidBilling {
this.services = services; this.services = services;
} }
public float getOwnPotentialCost() {
return ownPotentialCost;
}
public void setOwnPotentialCost(float ownPotentialCost) {
this.ownPotentialCost = ownPotentialCost;
}
public float getOwnActualCost() {
return ownActualCost;
}
public void setOwnActualCost(float ownActualCost) {
this.ownActualCost = ownActualCost;
}
public BillStatus getStatus() { public BillStatus getStatus() {
return status; return status;
} }
...@@ -206,14 +176,6 @@ public class UserPrePaidBilling { ...@@ -206,14 +176,6 @@ public class UserPrePaidBilling {
this.period = period; this.period = period;
} }
public float getOwnBillingCost() {
return ownBillingCost;
}
public void setOwnBillingCost(float ownBillingCost) {
this.ownBillingCost = ownBillingCost;
}
public String getUser() { public String getUser() {
if(StringUtils.isEmpty(user)) if(StringUtils.isEmpty(user))
return username; return username;
......
package com.edgec.browserbackend.account.dto;
// 购买,续费云主机时参数
public class CvmChargeRegion {
private float defaultRate; //默认金额
private String region; // cvm-实例类型-带宽-系统盘-数据盘 -> cvm-2_4-8-20-40
public float getDefaultRate() {
return defaultRate;
}
public void setDefaultRate(float defaultRate) {
this.defaultRate = defaultRate;
}
public String getRegion() {
return region;
}
public void setRegion(String region) {
this.region = region;
}
}
...@@ -192,51 +192,8 @@ public class AccountServiceImpl implements AccountService { ...@@ -192,51 +192,8 @@ public class AccountServiceImpl implements AccountService {
return charge; return charge;
} }
private float findCvmRate(String name, String region, int usedChargeType) {
CvmChargeRegion cvmChargeRegion = JSONObject.parseObject(region, CvmChargeRegion.class);
float defaulRate = cvmChargeRegion.getDefaultRate();
String chargeRegion = cvmChargeRegion.getRegion();
List<UserRate> byUsername = rateRepository.findByUsernameAndChargeType(name, usedChargeType);
float defaultRatePerMonth = byUsername.stream().filter(x -> x.getRegion().equalsIgnoreCase(DEFAULT_REGION_KEY)).findFirst().map(x -> x.getRate()).orElse(40.0F);
if (StringUtils.isEmpty(region))
return defaultRatePerMonth;
UserRate userRate = byUsername.stream().filter(x -> Pattern.matches(x.getRegion(), chargeRegion)).findFirst().orElse(null);
if (userRate == null) {
return defaulRate;
}
return userRate.getRate();
}
private static final String DEFAULT_REGION_KEY = "--default"; private static final String DEFAULT_REGION_KEY = "--default";
private float tryToFindClosedRate(String name, String region, int usedChargeType) {
if (region != null && region.startsWith("vps:")) {
name = "vpsclient";
}
List<UserRate> byUsername = rateRepository.findByUsernameAndChargeType(name, usedChargeType);
float defaultRatePerMonth = byUsername.stream().filter(x -> x.getRegion().equalsIgnoreCase(DEFAULT_REGION_KEY)).findFirst().map(x -> x.getRate()).orElse(40.0F);
if (StringUtils.isEmpty(region))
return defaultRatePerMonth;
else {
float ratePerMonth = byUsername.stream().sorted((x1, x2) -> {
int match1 = CommonStringUtils.getLongestCommonSubstring(region, x1.getRegion());
int match2 = CommonStringUtils.getLongestCommonSubstring(region, x2.getRegion());
return match2 - match1;
}).findFirst().map(x -> {
int match1 = CommonStringUtils.getLongestCommonSubstring(region, x.getRegion());
if (match1 <= 3)
return defaultRatePerMonth;
else
return x.getRate();
}).orElse(defaultRatePerMonth);
return ratePerMonth;
}
}
@Override @Override
public String deletePreOrder(String username) { public String deletePreOrder(String username) {
List<PreOrder> preOrders = preOrderRepository.findPreOrderByUserName(username); List<PreOrder> preOrders = preOrderRepository.findPreOrderByUserName(username);
......
...@@ -205,7 +205,6 @@ public class AdministratorServiceImpl implements AdministratorService { ...@@ -205,7 +205,6 @@ public class AdministratorServiceImpl implements AdministratorService {
CompanyEarningsDto companyEarningsDto = new CompanyEarningsDto(); CompanyEarningsDto companyEarningsDto = new CompanyEarningsDto();
companyEarningsDto.setUsername(userPrePaidBilling.getUsername()); companyEarningsDto.setUsername(userPrePaidBilling.getUsername());
companyEarningsDto.setUserBillAmount(userPrePaidBilling.getOwnActualCost());
companyEarningsDto.setTotalBillingCost(userPrePaidBilling.getTotal()); companyEarningsDto.setTotalBillingCost(userPrePaidBilling.getTotal());
companyEarningsDto.setPayStatus(userPrePaidBilling.getStatus()); companyEarningsDto.setPayStatus(userPrePaidBilling.getStatus());
...@@ -272,9 +271,6 @@ public class AdministratorServiceImpl implements AdministratorService { ...@@ -272,9 +271,6 @@ public class AdministratorServiceImpl implements AdministratorService {
userPrePaidBilling.setStatus(BillStatus.PAID); userPrePaidBilling.setStatus(BillStatus.PAID);
} }
userPrePaidBilling.setDeductionRecords(userBilling.getDeductionRecords()); userPrePaidBilling.setDeductionRecords(userBilling.getDeductionRecords());
userPrePaidBilling.setOwnPotentialCost(userBilling.getOwnPotentialCost());
userPrePaidBilling.setOwnActualCost(userBilling.getOwnActualCost());
userPrePaidBilling.setOwnBillingCost(userBilling.getOwnBillingCost());
userPrePaidBilling.setTotal(userBilling.getTotalBillingCost()); userPrePaidBilling.setTotal(userBilling.getTotalBillingCost());
userPrePaidBilling.setTimestamp(ZonedDateTime.of(userBilling.getYear(), userBilling.getMonth(), 1, 0, 0, 0, 0, ZoneOffset.systemDefault()).toEpochSecond() * 1000); userPrePaidBilling.setTimestamp(ZonedDateTime.of(userBilling.getYear(), userBilling.getMonth(), 1, 0, 0, 0, 0, ZoneOffset.systemDefault()).toEpochSecond() * 1000);
userPrePaidBilling.setPrepaid(false); userPrePaidBilling.setPrepaid(false);
...@@ -282,7 +278,6 @@ public class AdministratorServiceImpl implements AdministratorService { ...@@ -282,7 +278,6 @@ public class AdministratorServiceImpl implements AdministratorService {
userPrePaidBilling.setUnit("month"); userPrePaidBilling.setUnit("month");
userPrePaidBilling.setUser(userBilling.getUsername()); userPrePaidBilling.setUser(userBilling.getUsername());
userPrePaidBilling.setUsername(userBilling.getUsername()); userPrePaidBilling.setUsername(userBilling.getUsername());
userPrePaidBilling.setTarget(userBilling.getUsername() + "创建的云端伸缩组");
userPrePaidBillingRepository.save(userPrePaidBilling); userPrePaidBillingRepository.save(userPrePaidBilling);
} }
......
...@@ -35,6 +35,7 @@ import java.time.Instant; ...@@ -35,6 +35,7 @@ import java.time.Instant;
import java.time.ZoneOffset; import java.time.ZoneOffset;
import java.util.*; import java.util.*;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -235,6 +236,7 @@ public class IpResourceServiceImpl implements IpResourceService { ...@@ -235,6 +236,7 @@ public class IpResourceServiceImpl implements IpResourceService {
ipTransactionDto.setIpResourceDtos(ipResourceDtos); ipTransactionDto.setIpResourceDtos(ipResourceDtos);
if (!ipResourceRequestDto.getVendor().equals("local")) { if (!ipResourceRequestDto.getVendor().equals("local")) {
AtomicBoolean result = new AtomicBoolean(false);
CompletableFuture.runAsync(() -> { CompletableFuture.runAsync(() -> {
PollerUtils.poll(300, 15, () -> { PollerUtils.poll(300, 15, () -> {
try { try {
...@@ -263,11 +265,6 @@ public class IpResourceServiceImpl implements IpResourceService { ...@@ -263,11 +265,6 @@ public class IpResourceServiceImpl implements IpResourceService {
try { try {
ipBuyResultDto = restTemplate.postForObject(URL + "/intelligroup/ipresources?accountId=browser", httpEntity, IpBuyResultDto.class); ipBuyResultDto = restTemplate.postForObject(URL + "/intelligroup/ipresources?accountId=browser", httpEntity, IpBuyResultDto.class);
if (StringUtils.isNotBlank(ipBuyResultDto.getErrorCode())) { if (StringUtils.isNotBlank(ipBuyResultDto.getErrorCode())) {
IpChargeRequestDto ipChargeRequestDto = buildIpChargeRequestDto(ipResourceRequestDto, 3, 0);
accountService.chargeByMoney(username, -newprice * ipChargeRequestDto.getAmount(), ipChargeRequestDto);
for (IpResourceDto ipResourceDto : ipResourceDtos) {
ipResourceRepository.deleteById(ipResourceDto.getId());
}
logger.error("fail to buy ip"); logger.error("fail to buy ip");
logger.error(ipBuyResultDto.getErrorCode()); logger.error(ipBuyResultDto.getErrorCode());
return false; return false;
...@@ -300,12 +297,20 @@ public class IpResourceServiceImpl implements IpResourceService { ...@@ -300,12 +297,20 @@ public class IpResourceServiceImpl implements IpResourceService {
} }
ipTransaction.setStatus(1); ipTransaction.setStatus(1);
ipTransactionRepository.save(ipTransaction); ipTransactionRepository.save(ipTransaction);
result.set(true);
return true; return true;
} catch (Exception e) { } catch (Exception e) {
logger.error(e.getMessage()); logger.error(e.getMessage());
return false; return false;
} }
}); });
if (result.get() == false) {
IpChargeRequestDto ipChargeRequestDto = buildIpChargeRequestDto(ipResourceRequestDto, 3, 0);
accountService.chargeByMoney(username, -newprice * ipChargeRequestDto.getAmount(), ipChargeRequestDto);
for (IpResourceDto ipResourceDto : ipResourceDtos) {
ipResourceRepository.deleteById(ipResourceDto.getId());
}
}
}, ThreadPoolUtils.taskExecutorPool); }, ThreadPoolUtils.taskExecutorPool);
} else { } else {
ipTransaction.setStatus(1); ipTransaction.setStatus(1);
......
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