123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271 |
- using System.Net;
- using System.Text;
- using WingCloudServer.IpOfflineTools.Model;
- using Newtonsoft.Json;
- namespace WingCloudServer.IpOfflineTools.Service
- {
- /// <summary>
- /// 辅助类
- /// </summary>
- public class CommonHelper
- {
- //地球曲率
- private const double EARTH_RADIUS = 6378137;
- /// <summary>
- /// 当前时间的时间戳
- /// </summary>
- public static long GetCurrentTimeStamp()
- {
- TimeSpan ts = DateTime.Now.ToUniversalTime() - new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
- var timeStamp = Convert.ToInt64(ts.TotalMilliseconds);
- return timeStamp;
- }
- /// <summary>
- /// 国内省份、直辖市列表
- /// </summary>
- /// <param name="ipAddress"></param>
- /// <returns></returns>
- public static List<string> GetProvinceList()
- {
- List<string> list = new List<string>()
- {
- "北京",
- "上海",
- "天津",
- "重庆",
- "黑龙江",
- "辽宁",
- "吉林",
- "河北",
- "河南",
- "湖北",
- "湖南",
- "山东",
- "山西",
- "陕西",
- "安徽",
- "浙江",
- "江苏",
- "福建",
- "广东",
- "海南",
- "四川",
- "云南",
- "贵州",
- "青海",
- "甘肃",
- "江西",
- "宁夏",
- "内蒙古",
- "新疆",
- "西藏",
- "广西",
- };
- return list;
- }
-
- /// <summary>
- /// 国内省份对应的市的列表
- /// </summary>
- /// <param name="ipAddress"></param>
- /// <returns></returns>
- public static Dictionary<string, List<string>> GetCityDictionary()
- {
- var dic = new Dictionary<string, List<string>>();
- var gdList = new List<string>() { "东莞市", "广州市", "中山市", "深圳市", "惠州市", "江门市", "珠海市", "汕头市", "佛山市", "湛江市", "河源市", "肇庆市", "潮州市", "清远市", "韶关市", "揭阳市", "阳江市", "云浮市", "茂名市", "梅州市", "汕尾市" };
- dic.Add("广东", gdList);
- var hljList = new List<string>() { "齐齐哈尔市", "哈尔滨市", "大庆市", "佳木斯市", "双鸭山市", "牡丹江市", "鸡西市", "黑河市", "绥化市", "鹤岗市", "伊春市", "大兴安岭地区", "七台河市" };
- dic.Add("黑龙江", hljList);
- var lnList = new List<string>() { "大连市", "沈阳市", "丹东市", "辽阳市", "葫芦岛市", "锦州市", "朝阳市", "营口市", "鞍山市", "抚顺市", "阜新市", "本溪市", "盘锦市", "铁岭市" };
- dic.Add("辽宁", lnList);
- var jlList = new List<string>() { "吉林市", "长春市", "白山市", "白城市", "延边州", "松原市", "辽源市", "通化市", "四平市" };
- dic.Add("吉林", jlList);
- var hbdList = new List<string>() { "石家庄市", "唐山市", "保定市", "邯郸市", "邢台市", "河北区", "沧州市", "秦皇岛市", "张家口市", "衡水市", "廊坊市", "承德市" };
- dic.Add("河北", hbdList);
- var hnList = new List<string>() { "郑州市", "南阳市", "新乡市", "安阳市", "洛阳市", "信阳市", "平顶山市", "周口市", "商丘市", "开封市", "焦作市", "驻马店市", "濮阳市", "三门峡市", "漯河市", "许昌市", "鹤壁市", "济源市" };
- dic.Add("河南", hnList);
- var hbList = new List<string>() { "武汉市", "宜昌市", "襄樊市", "荆州市", "恩施州", "孝感市", "黄冈市", "十堰市", "咸宁市", "黄石市", "仙桃市", "随州市", "天门市", "荆门市", "潜江市", "鄂州市", "神农架林区" };
- dic.Add("湖北", hbList);
- var hndList = new List<string>() { "长沙市", "邵阳市", "常德市", "衡阳市", "株洲市", "湘潭市", "永州市", "岳阳市", "怀化市", "郴州市", "娄底市", "益阳市", "张家界市", "湘西州" };
- dic.Add("湖南", hndList);
- var sdList = new List<string>() { "济南市", "青岛市", "临沂市", "济宁市", "菏泽市", "烟台市", "泰安市", "淄博市", "潍坊市", "日照市", "威海市", "滨州市", "东营市", "聊城市", "德州市", "莱芜市", "枣庄市" };
- dic.Add("山东", sdList);
- var sxist = new List<string>() { "太原市", "大同市", "运城市", "长治市", "晋城市", "忻州市", "临汾市", "吕梁市", "晋中市", "阳泉市", "朔州市" };
- dic.Add("山西", sxist);
- var sxdList = new List<string>() { "西安市", "咸阳市", "宝鸡市", "汉中市", "渭南市", "安康市", "榆林市", "商洛市", "延安市", "铜川市" };
- dic.Add("陕西", sxdList);
- var ahList = new List<string>() { "芜湖市", "合肥市", "六安市", "宿州市", "阜阳市", "安庆市", "马鞍山市", "蚌埠市", "淮北市", "淮南市", "宣城市", "黄山市", "铜陵市", "亳州市", "池州市", "巢湖市", "滁州市" };
- dic.Add("安徽", ahList);
- var zjList = new List<string>() { "温州市", "宁波市", "杭州市", "台州市", "嘉兴市", "金华市", "湖州市", "绍兴市", "舟山市", "丽水市", "衢州市" };
- dic.Add("浙江", zjList);
- var jsList = new List<string>() { "苏州市", "徐州市", "盐城市", "无锡市", "南京市", "南通市", "连云港市", "常州市", "扬州市", "镇江市", "淮安市", "泰州市", "宿迁市" };
- dic.Add("江苏", jsList);
- var fjList = new List<string>() { "漳州市", "泉州市", "厦门市", "福州市", "莆田市", "宁德市", "三明市", "南平市", "龙岩市" };
- dic.Add("福建", fjList);
- var hnsList = new List<string>() { "三亚市", "海口市", "琼海市", "文昌市", "东方市", "昌江县", "陵水县", "乐东县", "五指山市", "保亭县", "澄迈县", "万宁市", "儋州市", "临高县", "白沙县", "定安县", "琼中县", "屯昌县" };
- dic.Add("海南", hnsList);
- var scList = new List<string>() { "成都市", "绵阳市", "广元市", "达州市", "南充市", "德阳市", "广安市", "阿坝州", "巴中市", "遂宁市", "内江市", "凉山州", "攀枝花市", "乐山市", "自贡市", "泸州市", "雅安市", "宜宾市", "资阳市", "眉山市", "甘孜州" };
- dic.Add("四川", scList);
- var ynList = new List<string>() { "昆明市", "红河州", "大理州", "文山州", "德宏州", "曲靖市", "昭通市", "楚雄州", "保山市", "玉溪市", "丽江地区", "临沧地区", "思茅地区", "西双版纳州", "怒江州", "迪庆州" };
- dic.Add("云南", ynList);
- var gzList = new List<string>() { "贵阳市", "黔东南州", "黔南州", "遵义市", "黔西南州", "毕节地区", "铜仁地区", "安顺市", "六盘水市" };
- dic.Add("贵州", gzList);
- var gqhList = new List<string>() { "西宁市", "海西州", "海东地区", "海北州", "果洛州", "玉树州", "黄南藏族自治州" };
- dic.Add("青海", gqhList);
- var gsList = new List<string>() { "兰州市", "天水市", "庆阳市", "武威市", "酒泉市", "张掖市", "陇南地区", "白银市", "定西地区", "平凉市", "嘉峪关市", "临夏回族自治州", "金昌市", "甘南州" };
- dic.Add("甘肃", gsList);
- var jxList = new List<string>() { "南昌市", "赣州市", "上饶市", "吉安市", "九江市", "新余市", "抚州市", "宜春市", "景德镇市", "萍乡市", "鹰潭市" };
- dic.Add("江西", jxList);
- var nxList = new List<string>() { "银川市", "吴忠市", "中卫市", "石嘴山市", "固原市" };
- dic.Add("宁夏", nxList);
- var nmgList = new List<string>() { "赤峰市", "包头市", "通辽市", "呼和浩特市", "乌海市", "鄂尔多斯市", "呼伦贝尔市", "兴安盟", "巴彦淖尔盟", "乌兰察布盟", "锡林郭勒盟", "阿拉善盟" };
- dic.Add("内蒙古", nmgList);
- var xjList = new List<string>() { "乌鲁木齐市", "伊犁州", "昌吉州", "石河子市", "哈密地区", "阿克苏地区", "巴音郭楞州", "喀什地区", "塔城地区", "克拉玛依市", "和田地区", "阿勒泰州", "吐鲁番地区", "阿拉尔市", "博尔塔拉州", "五家渠市", "克孜勒苏州", "图木舒克市" };
- dic.Add("新疆", xjList);
- var xzList = new List<string>() { "拉萨市", "山南地区", "林芝地区", "日喀则地区", "阿里地区", "昌都地区", "那曲地区" };
- dic.Add("西藏", xzList);
- var gxList = new List<string>() { "贵港市", "玉林市", "北海市", "南宁市", "柳州市", "桂林市", "梧州市", "钦州市", "来宾市", "河池市", "百色市", "贺州市", "崇左市", "防城港市" };
- dic.Add("广西", gxList);
- var bjList = new List<string>() { "朝阳区" };
- dic.Add("北京", bjList);
- var tjList = new List<string>() { "南开区" };
- dic.Add("天津", tjList);
- var shList = new List<string>() { "徐汇区" };
- dic.Add("上海", shList);
- var cqList = new List<string>() { "渝中区" };
- dic.Add("重庆", cqList);
- return dic;
- }
- /// <summary>
- /// ip地址转long
- /// </summary>
- /// <param name="ipAddress"></param>
- /// <returns></returns>
- public static long IpToLong(string ipAddress)
- {
- byte[] byts = IPAddress.Parse(ipAddress).GetAddressBytes();
- Array.Reverse(byts); // 需要倒置一次字节序
- long ipLong = BitConverter.ToUInt32(byts, 0);
- return ipLong;
- }
- /// <summary>
- /// 获取ip的定位信息
- /// </summary>
- /// <param name="d"></param>
- /// <returns></returns>
- public static IPServiceResult GetIpLocationInfo(string ip)
- {
- IPServiceResult info = new IPServiceResult();
- var url = string.Format("https://apis.map.qq.com/ws/location/v1/ip?ip={0}&key=4Z3BZ-L5RK6-MJ5SC-EXNFA-3V7PH-RSB3U", ip);
- try
- {
- var json = HttpGet(url);
- if (!string.IsNullOrEmpty(json))
- {
- var serviceGuideInfo = JsonConvert.DeserializeObject<GuideResultInfo>(json);
- if (serviceGuideInfo != null && serviceGuideInfo.status == 0 && serviceGuideInfo.result != null)
- {
- info = serviceGuideInfo.result;
- }
- }
- }
- catch (Exception ex)
- {
- //异常处理
- throw ex;
- }
- return info;
- }
- /// <summary>
- /// 计算两点位置的距离,返回两点的距离,单位m
- /// 该公式为GOOGLE提供,误差小为小数点后.2位
- /// </summary>
- /// <param name="lat1">第一点纬度</param>
- /// <param name="lng1">第一点经度</param>
- /// <param name="lat2">第二点纬度</param>
- /// <param name="lng2">第二点经度</param>
- /// <returns></returns>
- public static double GetDistance(double lat1, double lng1, double lat2, double lng2)
- {
- double radLat1 = Rad(lat1);
- double radLng1 = Rad(lng1);
- double radLat2 = Rad(lat2);
- double radLng2 = Rad(lng2);
- double a = radLat1 - radLat2;
- double b = radLng1 - radLng2;
- double result = 2 * Math.Asin(Math.Sqrt(Math.Pow(Math.Sin(a / 2), 2) + Math.Cos(radLat1) * Math.Cos(radLat2) * Math.Pow(Math.Sin(b / 2), 2))) * EARTH_RADIUS;
- return result;
- }
- /// <summary>
- /// 经纬度转化成弧度
- /// </summary>
- /// <param name="d"></param>
- /// <returns></returns>
- public static double Rad(double d)
- {
- return (double)d * Math.PI / 180d;
- }
- /// <summary>
- /// 处理http GET请求,并返回数据
- /// </summary>
- /// <param name="url">请求的url地址</param>
- /// <returns>http GET成功后返回的数据,失败抛WebException异常</returns>
- public static string HttpGet(string url)
- {
- System.GC.Collect();
- string result = "";
- HttpWebRequest request = null;
- HttpWebResponse response = null;
- //请求url以获取数据
- try
- {
- //设置最大连接数
- ServicePointManager.DefaultConnectionLimit = 40;
- /***************************************************************
- * 下面设置HttpWebRequest的相关属性
- * ************************************************************/
- request = (HttpWebRequest)WebRequest.Create(url);
- request.Method = "GET";
- //获取服务器返回值
- response = (HttpWebResponse)request.GetResponse();
- //获取HTTP返回数据
- StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
- result = sr.ReadToEnd().Trim();
- sr.Close();
- }
- catch (Exception e)
- {
- throw e;
- }
- finally
- {
- //关闭连接和流
- if (response != null)
- {
- response.Close();
- }
- if (request != null)
- {
- request.Abort();
- }
- }
- return result;
- }
- }
- }
|