using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Text; using System.Threading.Tasks; using Models; using Models.ApiModei; using Models.ModelItems; using Newtonsoft.Json; using Services.Manager; namespace Services.Tool { public class HttpRequestHelp { //巫工Api static string Url = "https://www.boonlive-rcu.com/api/"; // 注释掉巫工API 改为宝来威 "https://pms.boonlive-rcu.com/api/"; static string Key = "blw_ws@2015"; /// /// 根据MAC获取主机 /// /// /// public static List GetHostByMAC(string Mac) { if (string.IsNullOrEmpty(Mac)) return null; var res = new Dictionary(); res.Add("jsonData", JsonConvert.SerializeObject(new { key = Key, mac = Mac })); var resdata = Post>>(Url + "GetHostByMAC", res); if (resdata != null && resdata.IsSuccess) { List newdata = new List(); foreach (var item in resdata.Result) { newdata.Add(new Hosts() { Id = item.ID, HotelID = item.HotelID, Status = item.Status?1:0, HotelName = item.HotelName, Desc = item.Remark, RoomNumber = item.RoomNumber, RoomStatusID = item.RoomStatusID, MAC = item.MAC, }); } return newdata; } else { Logs.WriteTimingUDPLog(JsonConvert.SerializeObject(resdata)); return null; } } /// /// 获取用户信息 /// /// public static List GetUserList() { var res = new Dictionary(); res.Add("jsonData", JsonConvert.SerializeObject(new { key = Key})); var resdata = Post>>(Url + "GetUserList", res); if (resdata != null && resdata.IsSuccess) { List newdata = new List(); foreach (var item in resdata.Result) { var s = 2; if(!int.TryParse(item.Sex,out s)) { if(item.Sex == "男") { s = 0; } else { if (item.Sex == "女") s = 1; else s = 2; } } if (newdata.FirstOrDefault(x => x.Uid.ToLower() == item.Account.ToLower())!= null) { continue; } newdata.Add(new UserInfo() { OldId = item.ID, IsImport = 1, IsValid = item.ActiveIndicator?0:1, HotelGroupID = item.SysHotelGroupID, HotelID = item.HotelID, CreateTime = item.CreatedDate, Desc = item.Remark, Sex = s, Uid = item.Account, Pwd = item.Password, EndTime = item.CreatedDate.AddMonths(2) }); } return newdata; }else { return null; } } /// /// 写入mac地址 /// /// /// /// /// public static bool SetHostMAC(int hotelsid, string Mac,string roomNumber) { // code”:“酒店编码,我司提供,例如:1001”, “creatDate”:“日期,我司提供,例如:2016 - 09 - 05”, “roomNumber”:“房号,如:8888”, //深圳市宝来威智能科技有限公司 第 20页 共 22页 “mac”:“mac 地址,如:34 - D0 - B8 - 1F - 02 - 15” var hotels = new Hotels(); hotels = SqlSugarBase.Db.Queryable().First(x => x.Id == hotelsid); if (hotels == null) return false; var res = new Dictionary(); res.Add("jsonData", JsonConvert.SerializeObject(new { key = Key, roomNumber= roomNumber, mac = Mac, code = hotels.Code, creatDate = hotels.CreateTime.ToString("yyyy-MM-dd") })); var resdata = Post>(Url + "SetHostMAC", res); if (resdata == null) return false; return resdata.IsSuccess && resdata.Result.Contains("成功"); } /// /// 房间表主机表信息 /// /// public static List GetHosts(int hotelsid) { var hotels = new Hotels(); hotels = SqlSugarBase.Db.Queryable().First(x=>x.Id == hotelsid); if (hotels == null || hotels == default(Hotels)) return null; var res = new Dictionary(); res.Add("jsonData", JsonConvert.SerializeObject(new { key = Key, code = hotels.Code, creatDate = hotels.CreateTime.ToString("yyyy-MM-dd")})); try { var resdata = Post>>(Url + "GetHostList", res); if (resdata != null && resdata.IsSuccess) { List newdata = new List(); var FaceList = FaceServer.SelfaceSN_HotelID(hotels.Id); foreach (var item in resdata.Result) { var temp = FaceList.FirstOrDefault(x => x.RoomId == item.ID); if (temp == null) temp = new DeviceManage(); newdata.Add(new HostsAdd() { Id = item.ID, HotelID = item.HotelID, HotelName = item.HotelName, Status = item.Status ? 1 : 0, Desc = item.Remark, RoomNumber = item.RoomNumber, RoomStatusID = item.RoomStatusID, MAC = item.MAC, FaceSN = temp.SerialNo, FaceStatus = temp.Status, maintainStatus = temp.maintainStatus, RoomTypeID = item.RoomTypeID }); } return newdata; } else return null; } catch (Exception ex) { Console.WriteLine(ex); return null; } } /// /// 获取酒店列表 全部酒店信息 /// public static List GetHotelList() { var res = new Dictionary(); res.Add("jsonData",JsonConvert.SerializeObject( new{ key= Key })); var resdata = Post>>(Url+ "GetHotelList", res); if (resdata!=null && resdata.IsSuccess) { List newdata = new List(); foreach (var item in resdata.Result) { newdata.Add(new Hotels() { Id = item.ID, Name = item.Name, Status = item.Status, Desc = item.Remark, CreateTime = item.CreatDate, GroupId = item.SysHotelGroupID, IsApprove = item.IsApprove?1:0, Code = item.Code.ToString() }); } return newdata; } //return resdata.Result; else return null; } /// /// 获取酒店组 全部酒店组信息 /// /// public static List GetHotelGroups() { var res = new Dictionary(); res.Add("jsonData", JsonConvert.SerializeObject(new { key = Key })); var resdata = Post>>(Url + "GetHotelGroupList", res); if (resdata != null && resdata.IsSuccess) return resdata.Result; else return null; } /// /// 获取IP /// /// /// public static dynamic GetIp(string url) { return Get(url); } /// /// 获取ip的帮助类 /// public class Data { public int status { get; set; } public string t { get; set; } public string set_cache_time { get; set; } public List data { get; set; } } public class ReturnData { public bool IsSuccess { get; set; } public T Result{ get; set; } } private static T Get(string url, int Timeout = 10000) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "GET"; request.ContentType = "text/html;charset=UTF-8"; request.UserAgent = null; request.Timeout = Timeout; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream myResponseStream = response.GetResponseStream(); StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8")); string retString = myStreamReader.ReadToEnd(); myStreamReader.Close(); myResponseStream.Close(); if (!string.IsNullOrEmpty(retString)) return JsonConvert.DeserializeObject(retString); else return default(T); } /// /// 指定Post地址使用Get 方式获取全部字符串 /// /// 请求后台地址 /// private static T Post(string url, Dictionary dic) { string result = ""; HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); req.Method = "POST"; req.ContentType = "application/x-www-form-urlencoded"; #region 添加Post 参数 StringBuilder builder = new StringBuilder(); int i = 0; foreach (var item in dic) { if (i > 0) builder.Append("&"); builder.AppendFormat("{0}={1}", item.Key, item.Value); i++; } byte[] data = Encoding.UTF8.GetBytes(builder.ToString()); req.ContentLength = data.Length; using (Stream reqStream = req.GetRequestStream()) { reqStream.Write(data, 0, data.Length); reqStream.Close(); } #endregion HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); Stream stream = resp.GetResponseStream(); //获取响应内容 using (StreamReader reader = new StreamReader(stream, Encoding.UTF8)) { result = reader.ReadToEnd(); } try { if (!string.IsNullOrEmpty(result)) return JsonConvert.DeserializeObject(result); else { Logs.WriteTimingUDPLog(result); return default(T); } } catch (Exception ex) { LogHelp.WriteExceptionLog(ex); return default(T); } } } }