Files
Web_AuthorityManagement_Mvc…/Services/Tool/HttpRequestHelp.cs

337 lines
13 KiB
C#
Raw Normal View History

2025-11-20 09:50:21 +08:00
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);
}
}
}
}