AddressUtils.java 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package com.bizmatics.service.util;
  2. import com.baomidou.mybatisplus.core.toolkit.StringUtils;
  3. import com.bizmatics.common.core.util.HttpUtils;
  4. import com.bizmatics.common.mvc.utils.IpUtils;
  5. import com.bizmatics.common.spring.util.JsonUtils;
  6. import com.bizmatics.service.config.RuoYiConfig;
  7. import com.fasterxml.jackson.core.type.TypeReference;
  8. import org.slf4j.Logger;
  9. import org.slf4j.LoggerFactory;
  10. import java.util.HashMap;
  11. import java.util.Map;
  12. /**
  13. * 获取地址类
  14. *
  15. * @author ruoyi
  16. */
  17. public class AddressUtils
  18. {
  19. private static final Logger log = LoggerFactory.getLogger(AddressUtils.class);
  20. // IP地址查询
  21. public static final String IP_URL = "http://whois.pconline.com.cn/ipJson.jsp";
  22. // 未知地址
  23. public static final String UNKNOWN = "XX XX";
  24. public static String getRealAddressByIP(String ip)
  25. {
  26. String address = UNKNOWN;
  27. // 内网不查询
  28. if (IpUtils.internalIp(ip))
  29. {
  30. return "内网IP";
  31. }
  32. if (RuoYiConfig.isAddressEnabled())
  33. {
  34. try
  35. {
  36. Map<String,String> param = new HashMap<>();
  37. param.put("ip",ip);
  38. String rspStr = HttpUtils.get(IP_URL, param);
  39. if (StringUtils.isBlank(rspStr))
  40. {
  41. log.error("获取地理位置异常 {}", ip);
  42. return UNKNOWN;
  43. }
  44. Map<String, String> objectMap = JsonUtils.fromJson(rspStr, new TypeReference<Map<String, String>>() {
  45. });
  46. String region = objectMap.get("pro");
  47. String city = objectMap.get("city");
  48. return String.format("%s %s", region, city);
  49. }
  50. catch (Exception e)
  51. {
  52. log.error("获取地理位置异常 {}", ip);
  53. }
  54. }
  55. return address;
  56. }
  57. }