Commit 706b227b authored by renjie's avatar renjie

QueryIpUrlList

购买ip绑定店铺
parent e9fc7440
......@@ -60,14 +60,9 @@ public class Account {
private int shopCount = 0;
private int authorized; // 0: 未认证; 1: 已认证;
private int authorized; // 0: 未认证; 1: 认证中; 2: 已认证;
private List<String> queryIpUrlList = Arrays.asList(
"http://lumtest.com/myip.json",
"http://api.myip.com",
"http://free.ipwhois.io/json/",
"https://freegeoip.app/json/"
);
private List<String> queryIpUrlList = new ArrayList<>();
public Date getSignupDate() {
return signupDate;
......@@ -285,4 +280,5 @@ public class Account {
public void setPromotionCode(String promotionCode) {
this.promotionCode = promotionCode;
}
}
package com.edgec.browserbackend.account.domain;
import org.springframework.data.mongodb.core.mapping.Document;
@Document(collection = "queryipurllist")
public class QueryIpUrlList {
private String url;
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
}
package com.edgec.browserbackend.account.repository;
import com.edgec.browserbackend.account.domain.QueryIpUrlList;
import org.springframework.data.mongodb.repository.MongoRepository;
public interface QueryIpUrlListRepository extends MongoRepository<QueryIpUrlList, String> {
}
......@@ -121,6 +121,9 @@ public class AccountServiceImpl implements AccountService {
@Autowired
private CompanyAuthorizeRepository companyAuthorizeRepository;
@Autowired
private QueryIpUrlListRepository queryIpUrlListRepository;
@Override
public List<UserBillList> getUserBills0(String name) {
......@@ -376,6 +379,11 @@ public class AccountServiceImpl implements AccountService {
if (current.getWhiteList() != null && current.getWhiteList().size() > 0)
whiteList.addAll(current.getWhiteList());
List<String> queryIpUrlList = queryIpUrlListRepository.findAll().stream().map(x -> x.getUrl()).collect(Collectors.toList());
if (current.getQueryIpUrlList() != null && current.getQueryIpUrlList().size() > 0)
queryIpUrlList.addAll(current.getQueryIpUrlList());
current.setQueryIpUrlList(queryIpUrlList);
current.setWhiteList(whiteList);
resultDto.setStatus(0);
resultDto.setData(current);
......@@ -834,6 +842,11 @@ public class AccountServiceImpl implements AccountService {
whiteList.addAll(update.getWhiteList());
account.setWhiteList(whiteList);
List<String> queryIpUrlList = account.getQueryIpUrlList();
if (update.getQueryIpUrlList() != null && update.getQueryIpUrlList().size() > 0)
queryIpUrlList.addAll(update.getQueryIpUrlList());
account.setQueryIpUrlList(queryIpUrlList);
if (update.getAuthorized() == 1)
account.setAuthorized(1);
......
......@@ -7,6 +7,7 @@ import com.edgec.browserbackend.browser.dto.ShopPageResultDto;
import com.edgec.browserbackend.browser.dto.ShopResultDto;
import com.edgec.browserbackend.browser.dto.ShopRequestDto;
import com.edgec.browserbackend.browser.dto.ShopStringResultDto;
import com.edgec.browserbackend.browser.service.IpAndShopService;
import com.edgec.browserbackend.browser.service.ShopService;
import com.edgec.browserbackend.common.commons.error.ClientRequestException;
import com.edgec.browserbackend.common.utils.FileUtil;
......@@ -32,6 +33,9 @@ public class ShopController {
@Autowired
private ShopService shopService;
@Autowired
private IpAndShopService ipAndShopService;
@RequestMapping(value = "/add", method = RequestMethod.POST)
public ResultDto addShop(Principal principal, @RequestBody ShopResultDto shopResultDto) {
ResultDto resultDto = new ResultDto();
......@@ -115,7 +119,7 @@ public class ShopController {
public ResultDto bindShop(Principal principal, @RequestBody ShopRequestDto shopRequestDto) {
ResultDto resultDto = new ResultDto();
try {
shopService.bindShop(principal.getName(), shopRequestDto);
ipAndShopService.bindShop(principal.getName(), shopRequestDto);
resultDto.setStatus(0);
}catch (ClientRequestException e) {
resultDto.setStatus(-1);
......@@ -131,7 +135,7 @@ public class ShopController {
public ResultDto unBindShop(Principal principal, @RequestBody ShopRequestDto shopRequestDto) {
ResultDto resultDto = new ResultDto();
try {
shopService.unBindShop(principal.getName(), shopRequestDto);
ipAndShopService.unBindShop(principal.getName(), shopRequestDto);
resultDto.setStatus(0);
}catch (ClientRequestException e) {
resultDto.setStatus(-1);
......
......@@ -15,6 +15,8 @@ public class IpResourceRequestDto {
private String vendor="aliyun";
private String logintype = "password";
private String shopId;
//0 -- 余额, 1 -- 支付宝, 2 -- 微信
private int payMethod = 0;
......@@ -186,4 +188,12 @@ public class IpResourceRequestDto {
public void setPayMethod(int payMethod) {
this.payMethod = payMethod;
}
public String getShopId() {
return shopId;
}
public void setShopId(String shopId) {
this.shopId = shopId;
}
}
......@@ -9,7 +9,7 @@ public interface UserShopRepository extends MongoRepository<UserShop, String>, U
List<UserShop> findByUsername(String username);
List<UserShop> findByUsernameAndIpIdIsNull(String username);
UserShop findByUsernameAndShopId(String username, String shopId);
UserShop findByShopId(String shopId);
List<UserShop> findByShopId(String shopId);
List<UserShop> findByUsernameAndGroupId(String username, String groupId);
List<UserShop> findByUsernameAndGroupIdAndIpIdIsNull(String username, String groupId);
List<UserShop> findByUsernameAndGroupIdAndIpIdIsNotNull(String username, String groupId);
......
package com.edgec.browserbackend.browser.service.Impl;
import com.edgec.browserbackend.account.domain.Account;
import com.edgec.browserbackend.account.exception.AccountErrorCode;
import com.edgec.browserbackend.account.repository.AccountRepository;
import com.edgec.browserbackend.browser.ErrorCode.BrowserErrorCode;
import com.edgec.browserbackend.browser.domain.BindHistory;
import com.edgec.browserbackend.browser.domain.IpResource;
import com.edgec.browserbackend.browser.domain.Shop;
import com.edgec.browserbackend.browser.domain.UserShop;
import com.edgec.browserbackend.browser.dto.ShopRequestDto;
import com.edgec.browserbackend.browser.repository.IpResourceRepository;
import com.edgec.browserbackend.browser.repository.ShopRepository;
import com.edgec.browserbackend.browser.repository.UserShopRepository;
import com.edgec.browserbackend.browser.service.IpAndShopService;
import com.edgec.browserbackend.common.commons.error.ClientRequestException;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.List;
@Service
public class IpAndShopServiceImpl implements IpAndShopService {
private final Logger logger = LoggerFactory.getLogger(IpAndShopServiceImpl.class);
@Autowired
private AccountRepository accountRepository;
@Autowired
private UserShopRepository userShopRepository;
@Autowired
private ShopRepository shopRepository;
@Autowired
private IpResourceRepository ipResourceRepository;
@Override
public void bindShop(String username, ShopRequestDto shopRequestDto) {
String shopId = shopRequestDto.getShopId();
Account account = accountRepository.findByName(username);
if (account == null) {
throw new ClientRequestException(AccountErrorCode.NAMENOTEXIST);
}
UserShop userShop = userShopRepository.findByUsernameAndShopId(username, shopId);
if (account.getPermission() < 4 || userShop == null) {
throw new ClientRequestException(AccountErrorCode.NOPERMISSION);
}
Shop shop = shopRepository.findById(shopId).orElse(null);
if (shop == null)
throw new ClientRequestException(BrowserErrorCode.SHOPNOTEXIST);
IpResource ipResource = null;
if (StringUtils.isNotBlank(shopRequestDto.getIpAddr())) {
ipResource = ipResourceRepository.findByAddrAndIsDeleted(shopRequestDto.getIpAddr(), false);
} else if (StringUtils.isNotBlank(shopRequestDto.getIpId())) {
ipResource = ipResourceRepository.findByIdAndIsDeleted(shopRequestDto.getIpId(), false);
}
if (shop.getIpId() != null && shop.getIp() != null) {
unBindShop(username, shopRequestDto);
}
if (ipResource == null)
throw new ClientRequestException(BrowserErrorCode.IPNOTEXIST);
try {
shop.setIp(ipResource.getAddr());
shop.setIpId(ipResource.getId());
shop.setIpRegion(ipResource.getRegion());
shop.setIpRegionCn(ipResource.getRegionCn());
shopRepository.save(shop);
ipResource.setShopId(shopId);
if (shop.getShopName()!=null)
ipResource.setShopName(shop.getShopName());
ipResourceRepository.save(ipResource);
List<UserShop> userShopList = userShopRepository.findByShopId(shopId);
for (UserShop userShop1 : userShopList) {
userShop1.setIpId(ipResource.getId());
userShopRepository.save(userShop1);
}
} catch (Exception e) {
logger.error("fail to bind shop and ip", e.getMessage());
throw new ClientRequestException(BrowserErrorCode.UNKNOWN);
}
}
@Override
public void unBindShop(String username, ShopRequestDto shopRequestDto) {
String shopId = null;
if (StringUtils.isNotBlank(shopRequestDto.getShopId()))
shopId = shopRequestDto.getShopId();
Account account = accountRepository.findByName(username);
if (account == null) {
throw new ClientRequestException(AccountErrorCode.NAMENOTEXIST);
}
UserShop userShop = userShopRepository.findByUsernameAndShopId(username, shopId);
if (account.getPermission() < 4 || userShop == null) {
throw new ClientRequestException(AccountErrorCode.NOPERMISSION);
}
Shop shop = shopRepository.findById(shopId).orElse(null);
if (shop == null)
throw new ClientRequestException(BrowserErrorCode.SHOPNOTEXIST);
IpResource ipResource = null;
if (StringUtils.isNotBlank(shopRequestDto.getIpAddr())) {
ipResource = ipResourceRepository.findByAddrAndIsDeleted(shopRequestDto.getIpAddr(), false);
} else if (StringUtils.isNotBlank(shopRequestDto.getIpId())) {
ipResource = ipResourceRepository.findByIdAndIsDeleted(shopRequestDto.getIpId(), false);
}
if (ipResource == null)
throw new ClientRequestException(BrowserErrorCode.IPNOTEXIST);
if (!ipResource.getId().equals(shop.getIpId()))
throw new ClientRequestException(BrowserErrorCode.IPNOTBINDTOSHOP);
try {
List<BindHistory> history = ipResource.getBindHistory();
BindHistory bindHistory = new BindHistory();
bindHistory.setIp(ipResource.getAddr());
bindHistory.setPlatform(shop.getShopPlatform());
bindHistory.setShopName(shop.getShopName());
bindHistory.setUnbindTime(ZonedDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
history.add(bindHistory);
shop.setIp(null);
shop.setIpId(null);
shop.setIpRegion(null);
shop.setIpRegionCn(null);
ipResource.setShopId(null);
ipResource.setShopName(null);
ipResourceRepository.save(ipResource);
shopRepository.save(shop);
List<UserShop> userShopList = userShopRepository.findByShopId(shopId);
for (UserShop userShop1 : userShopList) {
userShop1.setIpId(null);
userShopRepository.save(userShop1);
}
} catch (Exception e) {
logger.error("fail to unbind", e.getMessage());
throw new ClientRequestException(BrowserErrorCode.UNKNOWN);
}
}
}
......@@ -12,7 +12,9 @@ import com.edgec.browserbackend.browser.ErrorCode.BrowserErrorCode;
import com.edgec.browserbackend.browser.domain.*;
import com.edgec.browserbackend.browser.dto.*;
import com.edgec.browserbackend.browser.repository.*;
import com.edgec.browserbackend.browser.service.IpAndShopService;
import com.edgec.browserbackend.browser.service.IpResourceService;
import com.edgec.browserbackend.browser.service.ShopService;
import com.edgec.browserbackend.common.commons.error.ClientRequestException;
import com.edgec.browserbackend.common.utils.FileUtil;
import com.edgec.browserbackend.common.utils.PollerUtils;
......@@ -81,6 +83,9 @@ public class IpResourceServiceImpl implements IpResourceService {
@Autowired
private IpTransactionRepository ipTransactionRepository;
@Autowired
private IpAndShopService ipAndShopService;
public HttpHeaders buildPostHeader() {
HttpHeaders header = new HttpHeaders();
header.setContentType(MediaType.APPLICATION_JSON);
......@@ -247,6 +252,13 @@ public class IpResourceServiceImpl implements IpResourceService {
IpChargeRequestDto ipChargeRequestDto = buildIpChargeRequestDto(ipResourceRequestDto, 1, ipResourceRequestDto.getPayMethod());
accountService.chargeByMoney(username, newprice * ipChargeRequestDto.getAmount(), ipChargeRequestDto);
if (ipResourceRequestDto.getShopId() != null) {
ShopRequestDto shopRequestDto = new ShopRequestDto();
shopRequestDto.setIpId(ipResourceDtos.get(0).getId());
shopRequestDto.setShopId(ipResourceRequestDto.getShopId());
ipAndShopService.bindShop(username, shopRequestDto);
}
return ipTransactionDto;
}
......
......@@ -11,6 +11,7 @@ import com.edgec.browserbackend.browser.repository.GroupRepository;
import com.edgec.browserbackend.browser.repository.IpResourceRepository;
import com.edgec.browserbackend.browser.repository.ShopRepository;
import com.edgec.browserbackend.browser.repository.UserShopRepository;
import com.edgec.browserbackend.browser.service.IpAndShopService;
import com.edgec.browserbackend.browser.service.ShopService;
import com.edgec.browserbackend.common.commons.error.ClientRequestException;
import com.edgec.browserbackend.common.utils.FileUtil;
......@@ -58,6 +59,9 @@ public class ShopServiceImpl implements ShopService {
@Autowired
IpResourceRepository ipResourceRepository;
@Autowired
IpAndShopService ipAndShopService;
@Override
public String addShop(String username, ShopResultDto shopResultDto) {
Account account = accountRepository.findByName(username);
......@@ -207,7 +211,7 @@ public class ShopServiceImpl implements ShopService {
ShopRequestDto shopRequestDto = new ShopRequestDto();
shopRequestDto.setShopId(shopId);
shopRequestDto.setIpId(shop.getIpId());
unBindShop(username, shopRequestDto);
ipAndShopService.unBindShop(username, shopRequestDto);
}
boolean result = userShopRepository.deleteByUsernameAndShopId(username, shopId);
if (result) {
......@@ -217,101 +221,6 @@ public class ShopServiceImpl implements ShopService {
} else throw new ClientRequestException(AccountErrorCode.NOPERMISSION);
}
@Override
public void bindShop(String username, ShopRequestDto shopRequestDto) {
String shopId = shopRequestDto.getShopId();
Account account = accountRepository.findByName(username);
if (account == null) {
throw new ClientRequestException(AccountErrorCode.NAMENOTEXIST);
}
UserShop userShop = userShopRepository.findByUsernameAndShopId(username, shopId);
if (account.getPermission() < 4 || userShop == null) {
throw new ClientRequestException(AccountErrorCode.NOPERMISSION);
}
Shop shop = shopRepository.findById(shopId).orElse(null);
if (shop == null)
throw new ClientRequestException(BrowserErrorCode.SHOPNOTEXIST);
IpResource ipResource = null;
if (StringUtils.isNotBlank(shopRequestDto.getIpAddr())) {
ipResource = ipResourceRepository.findByAddrAndIsDeleted(shopRequestDto.getIpAddr(), false);
} else if (StringUtils.isNotBlank(shopRequestDto.getIpId())) {
ipResource = ipResourceRepository.findByIdAndIsDeleted(shopRequestDto.getIpId(), false);
}
if (shop.getIpId() != null && shop.getIp() != null) {
unBindShop(username, shopRequestDto);
}
if (ipResource == null)
throw new ClientRequestException(BrowserErrorCode.IPNOTEXIST);
try {
shop.setIp(ipResource.getAddr());
shop.setIpId(ipResource.getId());
shop.setIpRegion(ipResource.getRegion());
shop.setIpRegionCn(ipResource.getRegionCn());
shopRepository.save(shop);
ipResource.setShopId(shopId);
if (shop.getShopName()!=null)
ipResource.setShopName(shop.getShopName());
ipResourceRepository.save(ipResource);
userShop.setIpId(ipResource.getId());
userShopRepository.save(userShop);
} catch (Exception e) {
logger.error("fail to bind shop and ip", e.getMessage());
throw new ClientRequestException(BrowserErrorCode.UNKNOWN);
}
}
@Override
public void unBindShop(String username, ShopRequestDto shopRequestDto) {
String shopId = null;
if (StringUtils.isNotBlank(shopRequestDto.getShopId()))
shopId = shopRequestDto.getShopId();
Account account = accountRepository.findByName(username);
if (account == null) {
throw new ClientRequestException(AccountErrorCode.NAMENOTEXIST);
}
UserShop userShop = userShopRepository.findByUsernameAndShopId(username, shopId);
if (account.getPermission() < 4 || userShop == null) {
throw new ClientRequestException(AccountErrorCode.NOPERMISSION);
}
Shop shop = shopRepository.findById(shopId).orElse(null);
if (shop == null)
throw new ClientRequestException(BrowserErrorCode.SHOPNOTEXIST);
IpResource ipResource = null;
if (StringUtils.isNotBlank(shopRequestDto.getIpAddr())) {
ipResource = ipResourceRepository.findByAddrAndIsDeleted(shopRequestDto.getIpAddr(), false);
} else if (StringUtils.isNotBlank(shopRequestDto.getIpId())) {
ipResource = ipResourceRepository.findByIdAndIsDeleted(shopRequestDto.getIpId(), false);
}
if (ipResource == null)
throw new ClientRequestException(BrowserErrorCode.IPNOTEXIST);
if (!ipResource.getId().equals(shop.getIpId()))
throw new ClientRequestException(BrowserErrorCode.IPNOTBINDTOSHOP);
try {
List<BindHistory> history = ipResource.getBindHistory();
BindHistory bindHistory = new BindHistory();
bindHistory.setIp(ipResource.getAddr());
bindHistory.setPlatform(shop.getShopPlatform());
bindHistory.setShopName(shop.getShopName());
bindHistory.setUnbindTime(ZonedDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
history.add(bindHistory);
shop.setIp(null);
shop.setIpId(null);
shop.setIpRegion(null);
shop.setIpRegionCn(null);
ipResource.setShopId(null);
ipResource.setShopName(null);
ipResourceRepository.save(ipResource);
shopRepository.save(shop);
userShop.setIpId(null);
userShopRepository.save(userShop);
} catch (Exception e) {
logger.error("fail to unbind", e.getMessage());
throw new ClientRequestException(BrowserErrorCode.UNKNOWN);
}
}
@Override
public void transferShop(String username, String shopId, String groupId) {
Account account = accountRepository.findByName(username);
......
package com.edgec.browserbackend.browser.service;
import com.edgec.browserbackend.browser.dto.ShopRequestDto;
public interface IpAndShopService {
void bindShop(String username, ShopRequestDto shopRequestDto);
void unBindShop(String username, ShopRequestDto shopRequestDto);
}
......@@ -21,10 +21,6 @@ public interface ShopService {
void deleteShop(String username, String shopId);
void bindShop(String username, ShopRequestDto shopRequestDto);
void unBindShop(String username, ShopRequestDto shopRequestDto);
void transferShop(String username, String shopId, String groupId);
void assignShops(String username, List<String> shopIds, List<String> users);
......
......@@ -6,15 +6,12 @@ import com.edgec.browserbackend.account.domain.IpChargeRequestDto;
import com.edgec.browserbackend.account.repository.AccountRepository;
import com.edgec.browserbackend.account.service.AccountService;
import com.edgec.browserbackend.browser.ErrorCode.BrowserErrorCode;
import com.edgec.browserbackend.browser.domain.IpResource;
import com.edgec.browserbackend.browser.domain.IpTransaction;
import com.edgec.browserbackend.browser.domain.IpType;
import com.edgec.browserbackend.browser.dto.IpBuyResultDto;
import com.edgec.browserbackend.browser.dto.IpInfoResultDto;
import com.edgec.browserbackend.browser.dto.IpResourceDto;
import com.edgec.browserbackend.browser.dto.IpResourceRequestDto;
import com.edgec.browserbackend.browser.domain.*;
import com.edgec.browserbackend.browser.dto.*;
import com.edgec.browserbackend.browser.repository.IpResourceRepository;
import com.edgec.browserbackend.browser.repository.IpTransactionRepository;
import com.edgec.browserbackend.browser.service.IpAndShopService;
import com.edgec.browserbackend.browser.service.ShopService;
import com.edgec.browserbackend.common.utils.PollerUtils;
import com.edgec.browserbackend.common.utils.ThreadPoolUtils;
import org.apache.commons.lang3.StringUtils;
......@@ -51,7 +48,7 @@ public class BrowserTask {
private AccountService accountService;
@Autowired
private IpTransactionRepository ipTransactionRepository;
private IpAndShopService ipAndShopService;
@Value("${spring.profiles.active}")
private String profiles;
......@@ -147,6 +144,12 @@ public class BrowserTask {
if (result == false && (ipResource.getPurchasedTime() < Instant.now().minusSeconds(7200).toEpochMilli())) {
IpChargeRequestDto ipChargeRequestDto = buildIpChargeRequestDto(ipResource, 3, 0);
accountService.chargeByMoney(ipResource.getUsername(), -ipResource.getPrice(), ipChargeRequestDto);
if (ipResource.getShopId() != null) {
ShopRequestDto shopRequestDto = new ShopRequestDto();
shopRequestDto.setIpId(ipResource.getId());
shopRequestDto.setShopId(ipResource.getShopId());
ipAndShopService.unBindShop(ipResource.getUsername(), shopRequestDto);
}
ipResourceRepository.deleteById(ipResource.getId());
}
} finally {
......
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