Files
2025-11-20 09:51:24 +08:00

337 lines
13 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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);
}
}
}
}