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 { /// /// 缓存 /// 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 /// /// 获取写入酒店列表 /// /// public static List GetHotelslist() { return BaseCacheHelp.GetCache(HotelListKsy, () => { var list = new List(); list = SqlSugarBase.authoriydb.Queryable().ToList(); return list; }); } /// /// 删除酒店缓存 /// public static void ClearHotelList() { BaseCacheHelp.ClearCache(HotelListKsy); } /// /// 用户当前选择库 /// /// /// /// 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; } } /// /// 获取写入人脸机列表 /// /// public static List GetFaceList() { return BaseCacheHelp.GetCache(FaceListKsy, () => { var list = new List(); using (SqlSugarClient db = SqlSugarBase.GesmartDb()) { list = db.Queryable().ToList(); } return list; }); } /// /// 获取总数 /// /// public static int Geiface(string name,int i) { return BaseCacheHelp.GetCache(name, () => { return i; }); } /// /// 删除人脸机缓存 /// public static void ClearFaceList() { BaseCacheHelp.ClearCache(FaceListKsy); } /// /// 删除入住客人信息 /// public static void ClearRoomCustomer() { BaseCacheHelp.ClearCache(RoomCustomerKsy); } /// /// 获取开房入住信息列表 /// /// public static List GetRoomCheck() { return BaseCacheHelp.GetCache(RoomCheckKey, () => { var list = new List(); list =SqlSugarBase.authoriydb.Queryable().ToList(); return list; }); } /// /// 删除开房入住信息 /// public static void ClearRoomCheck() { BaseCacheHelp.ClearCache(RoomCheckKey); } /// /// 获取酒店项目信息列表 /// /// public static List GetHotelGroup() { return BaseCacheHelp.GetCache(HotelGroupKey, () => { var list = new List(); list = SqlSugarBase.authoriydb.Queryable().ToList(); return list; }); } //从数据库查询 public static List GetHotelGroup2() { var list = new List(); list = SqlSugarBase.authoriydb.Queryable().ToList(); return list; } /// /// 删除酒店项目信息 /// public static void ClearHotelGroup() { BaseCacheHelp.ClearCache(HotelGroupKey); } /// /// 获取房间号信息列表 /// /// public static List GetRoomGroup() { return BaseCacheHelp.GetCache(RoomGroupKey, () => { var list = new List(); list = SqlSugarBase.authoriydb.Queryable().ToList(); return list; }); } public static List GetInInfoList() { var res =BaseCacheHelp.GetCache(testinfo, () => { return new List(); }); //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>(() => { var data = GetInInfoList(); data.Add(info); data = data.Where(x => DateTime.Now - x.CheckTime <= TimeSpan.FromHours(3)).ToList(); return data; })); } /// /// 删除房间信息 /// 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(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; } } } }