337 lines
13 KiB
C#
337 lines
13 KiB
C#
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";
|
||
/// <summary>
|
||
/// 根据MAC获取主机
|
||
/// </summary>
|
||
/// <param name="Mac"></param>
|
||
/// <returns></returns>
|
||
public static List<Hosts> GetHostByMAC(string Mac)
|
||
{
|
||
if (string.IsNullOrEmpty(Mac))
|
||
return null;
|
||
var res = new Dictionary<string, dynamic>();
|
||
res.Add("jsonData", JsonConvert.SerializeObject(new { key = Key, mac = Mac }));
|
||
var resdata = Post<ReturnData<List<HostsAsync>>>(Url + "GetHostByMAC", res);
|
||
if (resdata != null && resdata.IsSuccess)
|
||
{
|
||
List<Hosts> newdata = new List<Hosts>();
|
||
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;
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 获取用户信息
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
public static List<UserInfo> GetUserList()
|
||
{
|
||
var res = new Dictionary<string, dynamic>();
|
||
res.Add("jsonData", JsonConvert.SerializeObject(new { key = Key}));
|
||
var resdata = Post<ReturnData<List<UserInfoAsync>>>(Url + "GetUserList", res);
|
||
if (resdata != null && resdata.IsSuccess)
|
||
{
|
||
List<UserInfo> newdata = new List<UserInfo>();
|
||
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;
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// 写入mac地址
|
||
/// </summary>
|
||
/// <param name="hotels"></param>
|
||
/// <param name="Mac"></param>
|
||
/// <param name="roomNumber"></param>
|
||
/// <returns></returns>
|
||
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<Hotels>().First(x => x.Id == hotelsid);
|
||
if (hotels == null)
|
||
return false;
|
||
var res = new Dictionary<string, dynamic>();
|
||
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<ReturnData<string>>(Url + "SetHostMAC", res);
|
||
if (resdata == null)
|
||
return false;
|
||
return resdata.IsSuccess && resdata.Result.Contains("成功");
|
||
}
|
||
/// <summary>
|
||
/// 房间表主机表信息
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
public static List<HostsAdd> GetHosts(int hotelsid)
|
||
{
|
||
var hotels = new Hotels();
|
||
hotels = SqlSugarBase.Db.Queryable<Hotels>().First(x=>x.Id == hotelsid);
|
||
|
||
|
||
|
||
if (hotels == null || hotels == default(Hotels))
|
||
return null;
|
||
var res = new Dictionary<string, dynamic>();
|
||
res.Add("jsonData", JsonConvert.SerializeObject(new { key = Key, code = hotels.Code, creatDate = hotels.CreateTime.ToString("yyyy-MM-dd")}));
|
||
|
||
try
|
||
{
|
||
var resdata = Post<ReturnData<List<HostsAsync>>>(Url + "GetHostList", res);
|
||
if (resdata != null && resdata.IsSuccess)
|
||
{
|
||
List<HostsAdd> newdata = new List<HostsAdd>();
|
||
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;
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
}
|
||
/// <summary>
|
||
/// 获取酒店列表 全部酒店信息
|
||
/// </summary>
|
||
public static List<Hotels> GetHotelList() {
|
||
var res = new Dictionary<string, dynamic>();
|
||
res.Add("jsonData",JsonConvert.SerializeObject( new{ key= Key }));
|
||
var resdata = Post<ReturnData<List<HotelsAsync>>>(Url+ "GetHotelList", res);
|
||
if (resdata!=null && resdata.IsSuccess)
|
||
{
|
||
List<Hotels> newdata = new List<Hotels>();
|
||
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;
|
||
}
|
||
/// <summary>
|
||
/// 获取酒店组 全部酒店组信息
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
public static List<HotelGroups> GetHotelGroups()
|
||
{
|
||
var res = new Dictionary<string, dynamic>();
|
||
res.Add("jsonData", JsonConvert.SerializeObject(new { key = Key }));
|
||
var resdata = Post<ReturnData<List<HotelGroups>>>(Url + "GetHotelGroupList", res);
|
||
if (resdata != null && resdata.IsSuccess)
|
||
return resdata.Result;
|
||
else
|
||
return null;
|
||
}
|
||
/// <summary>
|
||
/// 获取IP
|
||
/// </summary>
|
||
/// <param name="url"></param>
|
||
/// <returns></returns>
|
||
public static dynamic GetIp(string url)
|
||
{
|
||
return Get<Data>(url);
|
||
}
|
||
/// <summary>
|
||
/// 获取ip的帮助类
|
||
/// </summary>
|
||
public class Data
|
||
{
|
||
public int status { get; set; }
|
||
public string t { get; set; }
|
||
public string set_cache_time { get; set; }
|
||
public List<dynamic> data { get; set; }
|
||
}
|
||
|
||
public class ReturnData<T>
|
||
{
|
||
public bool IsSuccess { get; set; }
|
||
public T Result{ get; set; }
|
||
}
|
||
private static T Get<T>(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<T>(retString);
|
||
else
|
||
return default(T);
|
||
}
|
||
/// <summary>
|
||
/// 指定Post地址使用Get 方式获取全部字符串
|
||
/// </summary>
|
||
/// <param name="url">请求后台地址</param>
|
||
/// <returns></returns>
|
||
private static T Post<T>(string url, Dictionary<string, dynamic> 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<T>(result);
|
||
else
|
||
{
|
||
Logs.WriteTimingUDPLog(result);
|
||
return default(T);
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
LogHelp.WriteExceptionLog(ex);
|
||
return default(T);
|
||
}
|
||
}
|
||
|
||
|
||
}
|
||
}
|