Files
Web_Faces_Prod/Face.Services/Cache/CacheHelp.cs
2025-11-25 17:41:57 +08:00

321 lines
9.7 KiB
C#

using Face.Domain.Entities;
using Face.Services.Enums;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Face.Domain.ViewModels;
using Newtonsoft.Json;
using System.IO;
using System.Net;
using Face.Services.Manager;
using SqlSugar;
namespace Face.Services.Cache
{
/// <summary>
/// 缓存
/// </summary>
public static class CacheHelp
{
private static readonly string FaceListKsy = "sysFaceList";//人脸机列表
private static readonly string HotelListKsy = "sysHotelslList";//酒店列表
private static readonly string RoomCustomerKsy = "sysRoomCustomerList";//入住客人信息列表
private static readonly string RoomCheckKey = "sysRoomCheckKeyList";//开放入住信息
private static readonly string HotelGroupKey = "sysHotelGroupList";
private static readonly string sysUserOperationKey = "UserOperation_";//用户当前选择库
private static readonly string RoomGroupKey = "sysRoomGroupList";
private static readonly string testinfo = "systest";
#region Hash缓存前缀
#endregion
/// <summary>
/// 获取写入酒店列表
/// </summary>
/// <returns></returns>
public static List<Hotels> GetHotelslist()
{
return BaseCacheHelp.GetCache(HotelListKsy, () =>
{
var list = new List<Hotels>();
list = SqlSugarBase.authoriydb.Queryable<Hotels>().ToList();
return list;
});
}
/// <summary>
/// 删除酒店缓存
/// </summary>
public static void ClearHotelList()
{
BaseCacheHelp.ClearCache(HotelListKsy);
}
/// <summary>
/// 用户当前选择库
/// </summary>
/// <param name="userName"></param>
/// <param name="dbID"></param>
/// <returns></returns>
public static int GetUserOperation(string userName, int dbID = 0)
{
if (dbID == 0)
{
return BaseCacheHelp.GetCache(sysUserOperationKey + userName, () =>
{
return dbID;
});
}
else
{
BaseCacheHelp.SetCache(sysUserOperationKey + userName, () =>
{
return dbID;
});
return dbID;
}
}
/// <summary>
/// 获取写入人脸机列表
/// </summary>
/// <returns></returns>
public static List<DeviceManage> GetFaceList()
{
return BaseCacheHelp.GetCache(FaceListKsy, () =>
{
var list = new List<DeviceManage>();
using (SqlSugarClient db = SqlSugarBase.GesmartDb())
{
list = db.Queryable<DeviceManage>().ToList();
}
return list;
});
}
/// <summary>
/// 获取总数
/// </summary>
/// <returns></returns>
public static int Geiface(string name,int i)
{
return BaseCacheHelp.GetCache(name, () =>
{
return i;
});
}
/// <summary>
/// 删除人脸机缓存
/// </summary>
public static void ClearFaceList()
{
BaseCacheHelp.ClearCache(FaceListKsy);
}
/// <summary>
/// 删除入住客人信息
/// </summary>
public static void ClearRoomCustomer()
{
BaseCacheHelp.ClearCache(RoomCustomerKsy);
}
/// <summary>
/// 获取开房入住信息列表
/// </summary>
/// <returns></returns>
public static List<Hosts> GetRoomCheck()
{
return BaseCacheHelp.GetCache(RoomCheckKey, () =>
{
var list = new List<Hosts>();
list =SqlSugarBase.authoriydb.Queryable<Hosts>().ToList();
return list;
});
}
/// <summary>
/// 删除开房入住信息
/// </summary>
public static void ClearRoomCheck()
{
BaseCacheHelp.ClearCache(RoomCheckKey);
}
/// <summary>
/// 获取酒店项目信息列表
/// </summary>
/// <returns></returns>
public static List<HotelGroups> GetHotelGroup()
{
return BaseCacheHelp.GetCache(HotelGroupKey, () =>
{
var list = new List<HotelGroups>();
list = SqlSugarBase.authoriydb.Queryable<HotelGroups>().ToList();
return list;
});
}
//从数据库查询
public static List<HotelGroups> GetHotelGroup2()
{
var list = new List<HotelGroups>();
list = SqlSugarBase.authoriydb.Queryable<HotelGroups>().ToList();
return list;
}
/// <summary>
/// 删除酒店项目信息
/// </summary>
public static void ClearHotelGroup()
{
BaseCacheHelp.ClearCache(HotelGroupKey);
}
/// <summary>
/// 获取房间号信息列表
/// </summary>
/// <returns></returns>
public static List<Hosts> GetRoomGroup()
{
return BaseCacheHelp.GetCache(RoomGroupKey, () =>
{
var list = new List<Hosts>();
list = SqlSugarBase.authoriydb.Queryable<Hosts>().ToList();
return list;
});
}
public static List<Interfacefield> GetInInfoList()
{
var res =BaseCacheHelp.GetCache(testinfo, () =>
{
return new List<Interfacefield>();
});
//foreach (var info in res)
//{
// //已经过期的
// if( DateTime.Now - info.CheckTime.AddHours(1) > TimeSpan.FromSeconds(0))
// {
// OutClass oc = new OutClass
// {
// HotelCode = info.HotelCode,
// roomid = info.roomid,
// checkOutTime = DateTime.Now
// };
// outinfo(oc);
// continue;
// }
// //未过期的
// var time = info.CheckTime.AddMinutes(5) - DateTime.Now;
// Task.Factory.StartNew(async () => {
// await Task.Delay(time);
// OutClass oc = new OutClass
// {
// HotelCode = info.HotelCode,
// roomid = info.roomid,
// checkOutTime = DateTime.Now
// };
// outinfo(oc);
// });
//}
return res;
}
public static void SetInInfoList(Interfacefield info)
{
var time = info.CheckTime.AddMinutes(3) - DateTime.Now ;
Task.Factory.StartNew( ()=> {
Task.Delay(time).Wait();
OutClass oc = new OutClass
{
HotelCode = info.HotelCode,
roomid = info.roomid,
checkOutTime = DateTime.Now
};
outinfo(oc);
});
BaseCacheHelp.SetCache(testinfo,new Func<List<Interfacefield>>(() =>
{
var data = GetInInfoList();
data.Add(info);
data = data.Where(x => DateTime.Now - x.CheckTime <= TimeSpan.FromHours(3)).ToList();
return data;
}));
}
/// <summary>
/// 删除房间信息
/// </summary>
public static void ClearRoomGroup()
{
BaseCacheHelp.ClearCache(RoomGroupKey);
}
public static bool outinfo(OutClass po)//退房测试
{
try
{
string url = "http://face.blv-oa.com/Interface/CheckOut";
//InterfaceController li = new InterfaceController();
//li.CheckOut("abc", JsonConvert.SerializeObject(
// po
// ));
string postData = $"key=abc&data={JsonConvert.SerializeObject(po)}";
WebRequest request = WebRequest.Create(url);
request.Method = "Post";
request.ContentType = "application/x-www-form-urlencoded";
StreamWriter sw = new StreamWriter(request.GetRequestStream());
sw.Write(postData);
sw.Flush();
WebResponse response = request.GetResponse();
Stream s = response.GetResponseStream();
StreamReader sr = new StreamReader(s, Encoding.GetEncoding("UTF-8"));
string Show = sr.ReadToEnd();
ReturnResult info = JsonConvert.DeserializeObject<ReturnResult>(Show);//josn转换实体类
sw.Dispose();
sw.Close();
sr.Dispose();
sr.Close();
s.Dispose();
s.Close();
return info.Status == 200;
}
catch (Exception ex)
{
LogHelp.WriteExceptionLog(ex);
throw;
}
}
public class OutClass
{
public string HotelCode { get; set; }
public string roomid { get; set; }
public DateTime checkOutTime { get; set; }
}
}
}