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);
}
}
}
}