地区-注册地区列表

This commit is contained in:
khalil
2024-12-16 15:47:18 +08:00
parent ddb687e200
commit 95259d2307
5 changed files with 37 additions and 3 deletions

View File

@@ -11,6 +11,7 @@ public class RegionNetworkVo {
private String regionName = "0";
private String city = "0";
private String isp = "0";
private String countryCode;
public boolean isSuccess(){
return StringUtils.equals("success", status);

View File

@@ -20,14 +20,18 @@ public class RegionNetworkSearchService {
private static final String IP_API = "https://pro.ip-api.com/json/%s?key=CNziZ12dU01uo0f&fields=60415&lang=zh-CN";
@SneakyThrows
private String search(String ipStr){
public RegionNetworkVo networkSearch(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();
return result;
}
private String search(String ipStr){
return networkSearch(ipStr).format();
}
@SneakyThrows

View File

@@ -9,7 +9,8 @@
ri.id id,
ri.partition_id partitionId,
pi.`desc` partitionDesc,
ri.`name` regionDesc
ri.`name` regionDesc,
ri.`icon`
FROM
region_info ri
LEFT JOIN partition_info pi ON ri.partition_id = pi.id

View File

@@ -7,4 +7,5 @@ import lombok.Data;
public class RegionInfoVo extends RegionInfo {
private String partitionDesc;
private String regionDesc;
private Boolean checked = Boolean.FALSE;
}

View File

@@ -4,13 +4,20 @@ import com.accompany.business.common.BaseController;
import com.accompany.common.annotation.Authorization;
import com.accompany.common.result.BusiResult;
import com.accompany.common.status.BusiStatus;
import com.accompany.common.utils.IPUtils;
import com.accompany.core.exception.ServiceException;
import com.accompany.core.model.RegionInfo;
import com.accompany.core.service.region.RegionInfoService;
import com.accompany.core.service.region.RegionNetworkSearchService;
import com.accompany.core.vo.RegionInfoVo;
import com.accompany.core.vo.RegionNetworkVo;
import com.alibaba.fastjson.JSON;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -24,9 +31,29 @@ import java.util.List;
@RequestMapping("/regionInfo")
public class RegionInfoController extends BaseController {
@Autowired
private RegionNetworkSearchService regionNetworkSearchService;
@Autowired
private RegionInfoService service;
@ApiOperation("获取地区列表")
@GetMapping("/listAll")
public BusiResult<List<RegionInfoVo>> listAll(HttpServletRequest request) {
List<RegionInfoVo> regionInfos = service.getAllList();
if (!CollectionUtils.isEmpty(regionInfos)) {
String ip = IPUtils.getRealIpAddress(request);
RegionNetworkVo regionNetworkVo = regionNetworkSearchService.networkSearch(ip);
String countryCode = StringUtils.hasText(regionNetworkVo.getCountryCode()) ? regionNetworkVo.getCountryCode() : "";
for (RegionInfoVo regionInfoVo : regionInfos) {
regionInfoVo.setPartitionDesc(null);
if (regionInfoVo.getCode().equalsIgnoreCase(countryCode)) {
regionInfoVo.setChecked(Boolean.TRUE);
}
}
}
return new BusiResult<>(regionInfos);
}
@ApiOperation("获取地区列表")
@GetMapping("/list")
@Authorization