package com.ruoyi.common.utils.ip; 
 | 
  
 | 
import org.slf4j.Logger; 
 | 
import org.slf4j.LoggerFactory; 
 | 
import com.alibaba.fastjson.JSONObject; 
 | 
import com.ruoyi.common.config.RuoYiConfig; 
 | 
import com.ruoyi.common.constant.Constants; 
 | 
import com.ruoyi.common.utils.StringUtils; 
 | 
import com.ruoyi.common.utils.http.HttpUtils; 
 | 
  
 | 
/** 
 | 
 * 获取地址类 
 | 
 *  
 | 
 * @author ruoyi 
 | 
 */ 
 | 
public class AddressUtils 
 | 
{ 
 | 
    private static final Logger log = LoggerFactory.getLogger(AddressUtils.class); 
 | 
  
 | 
    // IP地址查询 
 | 
    public static final String IP_URL = "http://whois.pconline.com.cn/ipJson.jsp"; 
 | 
  
 | 
    // 未知地址 
 | 
    public static final String UNKNOWN = "XX XX"; 
 | 
  
 | 
    public static String getRealAddressByIP(String ip) 
 | 
    { 
 | 
        String address = UNKNOWN; 
 | 
        // 内网不查询 
 | 
        if (IpUtils.internalIp(ip)) 
 | 
        { 
 | 
            return "内网IP"; 
 | 
        } 
 | 
        if (RuoYiConfig.isAddressEnabled()) 
 | 
        { 
 | 
            try 
 | 
            { 
 | 
                String rspStr = HttpUtils.sendGet(IP_URL, "ip=" + ip + "&json=true", Constants.GBK); 
 | 
                if (StringUtils.isEmpty(rspStr)) 
 | 
                { 
 | 
                    log.error("获取地理位置异常 {}", ip); 
 | 
                    return UNKNOWN; 
 | 
                } 
 | 
                JSONObject obj = JSONObject.parseObject(rspStr); 
 | 
                String region = obj.getString("pro"); 
 | 
                String city = obj.getString("city"); 
 | 
                return String.format("%s %s", region, city); 
 | 
            } 
 | 
            catch (Exception e) 
 | 
            { 
 | 
                log.error("获取地理位置异常 {}", ip); 
 | 
            } 
 | 
        } 
 | 
        return address; 
 | 
    } 
 | 
} 
 |