ip-接入
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
package com.accompany.core.vo;
|
||||
|
||||
import com.accompany.core.util.StringUtils;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class RegionNetworkVo {
|
||||
|
||||
private String status;
|
||||
private String country = "0";
|
||||
private String regionName = "0";
|
||||
private String city = "0";
|
||||
private String isp = "0";
|
||||
|
||||
public boolean isSuccess(){
|
||||
return StringUtils.equals("success", status);
|
||||
}
|
||||
|
||||
public String format() {
|
||||
return String.join("|", country, "0", regionName, city, isp);
|
||||
}
|
||||
|
||||
}
|
@@ -6,12 +6,11 @@ import com.accompany.core.exception.ServiceException;
|
||||
import com.accompany.core.model.PartitionInfo;
|
||||
import com.accompany.core.model.Users;
|
||||
import com.accompany.core.mybatismapper.PartitionInfoMapper;
|
||||
import com.accompany.core.service.region.RegionSearchService;
|
||||
import com.accompany.core.service.region.RegionNetworkSearchService;
|
||||
import com.accompany.core.service.user.UsersBaseService;
|
||||
import com.accompany.core.vo.partition.UserPartitionInfoVo;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.github.houbb.opencc4j.util.ZhConverterUtil;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -23,8 +22,10 @@ import java.util.*;
|
||||
@Service
|
||||
public class PartitionInfoService implements InitializingBean {
|
||||
|
||||
//@Autowired
|
||||
//private RegionSearchService regionSearchService;
|
||||
@Autowired
|
||||
private RegionSearchService regionSearchService;
|
||||
private RegionNetworkSearchService regionNetworkSearchService;
|
||||
@Autowired
|
||||
private UsersBaseService usersBaseService;
|
||||
@Autowired
|
||||
@@ -38,9 +39,10 @@ public class PartitionInfoService implements InitializingBean {
|
||||
|
||||
//先根据ip划分地区
|
||||
if (StringUtils.hasText(registerIp)) {
|
||||
String dbCountry = regionSearchService.getCountry(registerIp);
|
||||
String zhCountry = ZhConverterUtil.toTraditional(dbCountry);
|
||||
Optional<PartitionInfo> partitionInfoOptional = partitionInfoList.stream().filter(p -> p.getCountry().contains(zhCountry))
|
||||
/*String dbCountry = regionSearchService.getCountry(registerIp);
|
||||
String zhCountry = ZhConverterUtil.toTraditional(dbCountry);*/
|
||||
String dbCountry = regionNetworkSearchService.getCountry(registerIp);
|
||||
Optional<PartitionInfo> partitionInfoOptional = partitionInfoList.stream().filter(p -> p.getCountry().contains(dbCountry))
|
||||
.findFirst();
|
||||
if (partitionInfoOptional.isPresent()) {
|
||||
return partitionInfoOptional.get().getId();
|
||||
|
@@ -0,0 +1,52 @@
|
||||
package com.accompany.core.service.region;
|
||||
|
||||
import com.accompany.common.status.BusiStatus;
|
||||
import com.accompany.common.utils.HttpUtils;
|
||||
import com.accompany.core.exception.ServiceException;
|
||||
import com.accompany.core.vo.RegionNetworkVo;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.SneakyThrows;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Collections;
|
||||
|
||||
@Service
|
||||
public class RegionNetworkSearchService {
|
||||
|
||||
/**
|
||||
* field可以配置对应返回的字段
|
||||
* 官网:https://members.ip-api.com/(登录之后才有doc)
|
||||
*/
|
||||
private static final String IP_API = "https://pro.ip-api.com/json/%s?key=CNziZ12dU01uo0f&fields=60415";
|
||||
|
||||
@SneakyThrows
|
||||
private String search(String ipStr){
|
||||
String requestUrl = String.format(IP_API, ipStr);
|
||||
String s = HttpUtils.doGet(requestUrl, Collections.emptyMap());
|
||||
RegionNetworkVo result = JSON.parseObject(s, RegionNetworkVo.class);
|
||||
if (!result.isSuccess()){
|
||||
throw new ServiceException(BusiStatus.SERVERBUSY);
|
||||
}
|
||||
return result.format();
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
public String getCountry(String ip){
|
||||
//国家|区域|省份|城市|ISP
|
||||
String region = search(ip);
|
||||
return region.split("\\|")[0];
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
public String getRegion(String ip){
|
||||
//国家|区域|省份|城市|ISP
|
||||
String region = search(ip);
|
||||
String[] array = region.split("\\|");
|
||||
return String.join("|", array[0], array[2], array[4]);
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
System.out.println(new RegionNetworkSearchService().search("185.200.37.244"));
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,28 @@
|
||||
package com.accompany.core.service.region;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
public class RegionNetworkService {
|
||||
|
||||
@Autowired
|
||||
private RegionNetworkSearchService regionSearchService;
|
||||
|
||||
private final String CHINA = "China";
|
||||
//private final String HK = "Hong Kong";
|
||||
//private final String MO = "Macao";
|
||||
//private final String TW = "Taiwan";
|
||||
|
||||
public String getRegion(String registerIp) {
|
||||
return regionSearchService.getRegion(registerIp);
|
||||
}
|
||||
|
||||
public boolean isChineseMainland(String ipRegion){
|
||||
String[] ipRegionArray = ipRegion.split("\\|");
|
||||
return CHINA.equals(ipRegionArray[0]);
|
||||
}
|
||||
|
||||
}
|
@@ -9,6 +9,7 @@ import com.accompany.core.exception.ServiceException;
|
||||
import com.accompany.core.model.Account;
|
||||
import com.accompany.core.service.SysConfService;
|
||||
import com.accompany.core.service.account.AccountService;
|
||||
import com.accompany.core.service.region.RegionNetworkService;
|
||||
import com.accompany.core.service.region.RegionService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
@@ -28,7 +29,7 @@ public class IpRegionService {
|
||||
@Autowired
|
||||
private AccountService accountService;
|
||||
@Autowired
|
||||
private RegionService regionService;
|
||||
private RegionNetworkService regionService;
|
||||
@Autowired
|
||||
private EnvComponent envComponent;
|
||||
|
||||
|
@@ -16,6 +16,7 @@ import com.accompany.core.service.account.AccountService;
|
||||
import com.accompany.core.service.account.LoginRecordService;
|
||||
import com.accompany.core.service.account.UserAppService;
|
||||
import com.accompany.core.service.common.JedisService;
|
||||
import com.accompany.core.service.region.RegionNetworkService;
|
||||
import com.accompany.core.service.region.RegionService;
|
||||
import com.accompany.core.service.user.PhoneBlackService;
|
||||
import com.accompany.core.service.user.UsersBaseService;
|
||||
@@ -70,7 +71,7 @@ public class MyUserDetailsServiceImpl implements MyUserDetailsService {
|
||||
@Autowired
|
||||
private PhoneBlackService phoneBlackService;
|
||||
@Autowired
|
||||
private RegionService regionService;
|
||||
private RegionNetworkService regionService;
|
||||
@Autowired
|
||||
private PrettyNumberRecordMapper prettyNumberRecordMapper;
|
||||
|
||||
|
Reference in New Issue
Block a user