using Newtonsoft.Json; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Text; using System.Web; using System.Web.Mvc; using Face.Domain.ViewModels; using Face.Services.Manager; using Face.Domain.Entities; using PagedList; using Face.Services.Cache; using System.Data.Entity.Infrastructure; using WebServer; using System.Threading.Tasks; using Face.Services.DBUtility.Common; using Face.Web.Areas.App.Models; using System.Data.Entity; using System.Threading; using static Face.Web.Areas.App.Models.Roominfo; using Face.Domain.Application; using SqlSugar; using System.Web.Hosting; using AUTS.Services.Manager; using LogHelp = Face.Services.Manager.LogHelp; using Logs = Face.Services.Manager.Logs; using WebSocketToolsConsole; using TencentCloud.Common.Profile; using TencentCloud.Common; using TencentCloud.Sms.V20210111; using TencentCloud.Sms.V20210111.Models; using System.Diagnostics; using System.Data; using System.Text.RegularExpressions; namespace Face.Web.Areas.App.Controllers { public class TestController : BaseController { public ActionResult FaceOperate(int? page) { var HotelsList = SqlSugarBase.authoriydb.Queryable().ToList(); return View(HotelsList); } public ActionResult IssueBJandLogandroomid() { Uiinfo ui = new Uiinfo(); string issuetype = ""; var Roonid = int.Parse(Request.Form["Roonid"]);//获得房间id var roomname = Request.Form["roomname"];//获得房间名称 var photo = Request.Form["photo"];//背景图 var photologo = Request.Form["photologo"];//获得logo ImgServerController imgServer = new ImgServerController(); if (!string.IsNullOrEmpty(photo)) { issuetype = "BkgPng"; var img = imgServer.YHFileImage(issuetype + "/" + photo); ui.imageBj = "<" + issuetype + "/" + photo + ">"; } if (!string.IsNullOrEmpty(photologo)) { issuetype = "Logo"; var img = imgServer.YHFileImage(issuetype + "/" + photologo); ui.imagelogo = "<" + issuetype + "/" + photologo + ">"; } if (!string.IsNullOrEmpty(roomname)) { //Unicode编码房号,不转换字母和数字, //string sasd = Regex.Replace(roomname, @"(?![a-zA-Z0-9\s]).", match => "\\u" + ((int)match.Value[0]).ToString("x4")); //Unicode编码房号,所有的信息都进行编译 char[] cs = roomname.ToCharArray(); StringBuilder sb = new StringBuilder(); for (int i = 0; i < cs.Length; i++) { sb.AppendFormat("\\u{0:x4}", (int)cs[i]); } ui.Roomname = sb.ToString(); } else { ui.Roomname = "U+0020U+0020U+0020U+0020"; } using (var db = SqlSugarBase.GesmartDb()) { var Sn = db.Queryable().Where(s => s.RoomId == Roonid).ToList(); StringBuilder sbperson = new StringBuilder(); sbperson.Append("key=abcdef"); string ImageInfo = Newtonsoft.Json.JsonConvert.SerializeObject(ui); sbperson.Append("&ImageInfo=" + ImageInfo); Entity.Rootinfo msgx = new Entity.Rootinfo(); Entity.msgx msgxs = new Entity.msgx(); msgxs.msgid = Guid.NewGuid().ToString(); msgxs.sn = Sn[0].SerialNo; msgxs.cmd = "SetUI";//操作 msgxs.msg = System.Web.HttpUtility.HtmlDecode(sbperson.ToString()); msgx.msgx = msgxs; msgx.pmsid = -1; string sendMsg = Newtonsoft.Json.JsonConvert.SerializeObject(msgx); UdpCommunication.QueueSend(sendMsg);//下发数据给控制台 } return Json(""); } public List GetHotel//酒店缓存 { get { return CacheHelp.GetHotelslist(); } } // GET: App/Test public ActionResult TestOpen() { using (SqlSugarClient db = SqlSugarBase.GesmartDb()) { string name = Session["id"].ToString(); var list = db.Queryable().Where(x => x.state == 1).Where(j => j.establish == name).ToList(); ViewBag.clist = list; } ViewData["Hotelsp"] = SqlSugarBase.authoriydb.Queryable().ToList(); return View(); } public ActionResult visitinfo(string infoShow, string hotel, string room, string checkin, int shi)//开房测试 { try { List relist = null; List vs = infoShow.Split(',').ToList(); DateTime date = Convert.ToDateTime(checkin); var code = int.Parse(hotel); //查询酒店 var hotellist = SqlSugarBase.authoriydb.Queryable().First(s => s.Code == code.ToString()); if (hotellist == null) { return Json(false); } GetRoomInterface.test test = new GetRoomInterface.test { code = hotellist.Code.ToString(), creatDate = hotellist.CreateTime.ToString("yyyy-MM-dd") }; //查询房间 Roominfo.Root asd = GetRoomInterface.Roomport(test); if (asd == null) { return Json(false); } if (asd.IsSuccess != true) { return Json(false); } relist = asd.Result; //查询房间的第一条数据 var sc = relist.FirstOrDefault(j => j.RoomNumber == room); if (sc == null) { return Json(false); } int state = 0; CheckinTest user = new CheckinTest() { testState = state, creationTime = DateTime.Now, predictCheckIn = date, checkInduration = shi, hotelid = hotellist.Id, Roomid = sc.ID }; //插入到数据库Face的表CheckinTest返回主键 var Staty = SqlSugarBase.Db.Insertable(user).ExecuteReturnIdentity(); //Logs.WriteTimingUDPLog("保存开房信息主表成功"); int id = Staty; for (int i = 0; i < vs.Count; i++) { subtabulation su = new subtabulation() { masterid = id, Lodgerid = int.Parse(vs[i]) }; //插入到数据库Face的表subtabulation返回主键 SqlSugarBase.Db.Insertable(su).ExecuteCommand(); } using (SqlSugarClient db = SqlSugarBase.GesmartDb()) { //查询CheckinTest数据表对应的数据信息 var OutRoom = db.Queryable().First(x => x.id == id); //添加时间处理 var timeOut = DateTime.Parse(OutRoom.predictCheckIn.ToString()).AddMinutes(Convert.ToDouble(OutRoom.checkInduration.ToString())); var dqsj = timeOut - DateTime.Now; if (OutRoom.checkInduration != 0) { Thread S = new Thread(new ThreadStart(() => { try { var time = (int)dqsj.TotalMilliseconds; Thread.Sleep(time); using (var ar = SqlSugarBase.GesmartDb()) { var Out = ar.Queryable().First(x => x.id == id); if (OutRoom.checkInduration != 0)//判断是否为永久开房 { if (FJHelp.outinfos(id.ToString())) { //Logs.WriteTimingUDPLog("退房ok"); } else { //Logs.WriteTimingUDPLog("退房no id" + id + ":" + Out); } } } } catch (Exception ex) { Logs.WriteLog("预退出错" + ex.ToString()); } }));//到达时间的时候执行事件; S.Start(); } //查询下发人员信息 var select = SqlSugarBase.Db.Queryable().Where(x => vs.Contains(x.id.ToString())).ToList(); List users = new List(); var nowok = true; bool isok = false; if (date <= DateTime.Now) { //Logs.WriteTimingUDPLog("立即开房"); for (int i = 0; i < select.Count; i++) { WebServer.UserInfo fo = new WebServer.UserInfo() { idcard = select[i].idNumber, customer = select[i].name, sex = select[i].sex == 1 ? "男" : "女", photoUrl = "http://face.blv-oa.com/ImgServer/FileImage?url=" + select[i].picture, }; users.Add(fo); int uid = int.Parse(vs[i]); var sm = SqlSugarBase.Db.Queryable().First(x => x.id == uid); isok = WebHelp.Send(new SendInfo { code = hotel, roomNumber = room, idNumber = sm.idNumber, phoneNumber = sm.phone }, users.ToArray()); users.Clear(); } int states = 3; if (isok) { states = 1; } else { nowok = false; } SqlSugarBase.Db.Updateable().SetColumns(it => it.testState == states).Where(it => it.id == Staty).ExecuteCommand(); } else { try { var dt = date - DateTime.Now; Thread thread = new Thread(new ThreadStart(() => { try { List users1 = new List(); var time = (int)dt.TotalMilliseconds; Thread.Sleep(time); for (int i = 0; i < select.Count; i++) { WebServer.UserInfo fo = new WebServer.UserInfo() { idcard = select[i].idNumber, customer = select[i].name, sex = select[i].sex == 1 ? "男" : "女", photoUrl = "http://face.blv-oa.com/ImgServer/FileImage?url=" + select[i].picture, }; users1.Add(fo); int uid = int.Parse(vs[i]); var sm = SqlSugarBase.Db.Queryable().First(x => x.id == uid); isok = WebHelp.Send(new SendInfo { code = hotel, roomNumber = room, idNumber = sm.idNumber, phoneNumber = sm.phone }, users1.ToArray()); users1.Clear(); } int states = 3; if (isok) { states = 1; } else { nowok = false; } SqlSugarBase.Db.Updateable().SetColumns(it => it.testState == states).Where(it => it.id == user.id).ExecuteCommand(); } catch (Exception ex) { AUTS.Services.Manager.Logs.WriteTimingUDPLog("预开出错" + ex.ToString()); } }));//到达时间的时候执行事件; thread.Start(); } catch (Exception ex) { LogHelp.WriteExceptionLog(ex); } } return Json(nowok); } } catch (Exception ex) { LogHelp.WriteExceptionLog(ex); return Json(false); } } [HttpPost] public ActionResult outinfos(string id)//退房信息 { return Json(FJHelp.outinfos(id)); } public ActionResult action(string str) { using (SqlSugarClient db = SqlSugarBase.GesmartDb()) { var list = db.Queryable().Where(s => s.IdNumber == str).ToList(); return Json(list); } } public class OutClass { public string HotelCode { get; set; } public string roomid { get; set; } public DateTime checkOutTime { get; set; } } public ActionResult testindent(int? page)//测试人员 { int pageSize = 8; int pageNumber = page ?? 1; using (SqlSugarClient db = SqlSugarBase.GesmartDb()) { string name = Session["id"].ToString(); var testlist = db.Queryable().Where(s => s.establish == name).ToList(); //ViewBag.testlist = testlist; IPagedList userPagedList = testlist.ToPagedList(pageNumber, pageSize); return View(userPagedList); } } public ActionResult freeze(string id) { ReturnResult result = new ReturnResult(); if (SqlOperationsData.amendtestUser(id) != 0) { result.Status = 200; } else { result.Status = 100; } return Json(result); } public ActionResult freeze1(string id) { ReturnResult result = new ReturnResult(); if (SqlOperationsData.amendtestUser1(id) != 0) { result.Status = 200; } else { result.Status = 100; } return Json(result); } public ActionResult retreatinfo(int? page) { List lit = (List)Session["list"]; List ZongRoominfo = (List)Session["ZongRoominfo"]; List li = new List(); try { //第几页 int pageNumber = page ?? 1; if (page != null) { ViewData["page"] = page; } else { ViewData["page"] = 1; } //每页显示多少条 int pageSize = 7; //根据ID升序排序 using (SqlSugarClient ser = SqlSugarBase.GesmartDb()) { var user = ser.Queryable().ToList(); var se = ser.Queryable().ToList(); var userList = ser.Queryable().ToList(); var dsae = ser.Queryable().ToList(); for (int i = 0; i < lit.Count; i++) { var id = Convert.ToInt32(lit[i]); li.AddRange(userList.Where(x => x.hotelid == id).ToList()); } ViewData["people"] = dsae; ViewBag.indent = li; ViewBag.se = se; ViewBag.user = user; } li = li.OrderByDescending(x => x.id).ToList(); IPagedList userPagedList = li.ToPagedList(pageNumber, pageSize); //将分页处理后的列表传给View return View(userPagedList); } catch (Exception ex) { AUTS.Services.Manager.LogHelp.WriteExceptionLog(ex); throw; } } public ActionResult FaceTestOperate(int? page) { var HotelsList = SqlSugarBase.authoriydb.Queryable().ToList(); return View(HotelsList); } public ActionResult IssueUiType() { string issuetype = ""; var Roonid = int.Parse(Request.Form["Roonid"]);//获得房间id var type = int.Parse(Request.Form["type"]);//获得下发类型 var roomname = Request.Form["roomname"];//获得房间名称 var photo = Request.Form["photo"];//获得上传的文件 ImgServerController imgServer = new ImgServerController(); switch (type) { case 2: issuetype = "BkgPng"; break; case 3: issuetype = "Logo"; break; } var img = imgServer.YHFileImage(issuetype + "/" + photo); using (var db = SqlSugarBase.GesmartDb()) { var Sn = db.Queryable().Where(s => s.RoomId == Roonid).ToList(); switch (type) { case 2: StringBuilder sbperson = new StringBuilder(); UiImg ui = new UiImg(); ui.name = "uiname"; ui.image = "<" + issuetype + "/" + photo + ">"; ui.x = 0; ui.y = 0; ui.w = 0; ui.h = 0; sbperson.Append("key=abc"); string ImageInfo = Newtonsoft.Json.JsonConvert.SerializeObject(ui); sbperson.Append("&ImageInfo=" + ImageInfo); Entity.Rootinfo msgx = new Entity.Rootinfo(); Entity.msgx msgxs = new Entity.msgx(); msgxs.msgid = Guid.NewGuid().ToString(); msgxs.sn = Sn[0].SerialNo; msgxs.cmd = "updateMainPageBG";//操作 msgxs.msg = System.Web.HttpUtility.HtmlDecode(sbperson.ToString()); msgx.msgx = msgxs; msgx.pmsid = -1; string sendMsg = Newtonsoft.Json.JsonConvert.SerializeObject(msgx); UdpCommunication.QueueSend(sendMsg);//下发数据给控制台 break; case 3: StringBuilder sbperson2 = new StringBuilder(); //Unicode编码房号,不转换字母和数字, //string sasd = Regex.Replace(roomname, @"(?![a-zA-Z0-9\s]).", match => "\\u" + ((int)match.Value[0]).ToString("x4")); //Unicode编码房号,所有的信息都进行编译 //char[] cs = roomname.ToCharArray(); //StringBuilder sb = new StringBuilder(); //for (int i = 0; i < cs.Length; i++) //{ // sb.AppendFormat("\\u{0:x4}", (int)cs[i]); ////} //string roominfo = sb.ToString(); sbperson2.Append("key=abc"); sbperson2.Append("&Roomnumber=" + roomname); sbperson2.Append("&Logo=" + "<" + issuetype + "/" + photo + ">"); Entity.Rootinfo msgx2 = new Entity.Rootinfo(); Entity.msgx msgxs2 = new Entity.msgx(); msgxs2.msgid = Guid.NewGuid().ToString(); msgxs2.sn = Sn[0].SerialNo; msgxs2.cmd = "updateLogoRoomNo";//操作 msgxs2.msg = System.Web.HttpUtility.HtmlDecode(sbperson2.ToString()); msgx2.msgx = msgxs2; msgx2.pmsid = -1; string sendMsg2 = Newtonsoft.Json.JsonConvert.SerializeObject(msgx2); UdpCommunication.QueueSend(sendMsg2);//下发数据给控制台 break; } } return Json(""); } public static class SMSinfo { public static Responsesd SMSNotify() { Responsesd shujiu = new Responsesd(); try { // 实例化一个认证对象,入参需要传入腾讯云账户 SecretId 和 SecretKey,此处还需注意密钥对的保密 // 代码泄露可能会导致 SecretId 和 SecretKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议采用更安全的方式来使用密钥,请参见:https://cloud.tencent.com/document/product/1278/85305 // 密钥可前往官网控制台 https://console.cloud.tencent.com/cam/capi 进行获取 Credential cred = new Credential { SecretId = "AKID99vRlvskQs52khPs78uQhkbKwaCkDeHo", SecretKey = " " }; // 实例化一个client选项,可选的,没有特殊需求可以跳过 ClientProfile clientProfile = new ClientProfile(); // 实例化一个http选项,可选的,没有特殊需求可以跳过 HttpProfile httpProfile = new HttpProfile(); httpProfile.Endpoint = ("sms.tencentcloudapi.com"); clientProfile.HttpProfile = httpProfile; // 实例化要请求产品的client对象,clientProfile是可选的 SmsClient client = new SmsClient(cred, "", clientProfile); // 实例化一个请求对象,每个接口都会对应一个request对象 SendSmsRequest req = new SendSmsRequest(); req.PhoneNumberSet = new string[] { "13509214696" }; req.SmsSdkAppId = "1400871751"; req.SignName = "东莞市英皓思科技有限公司"; req.TemplateId = "2000581"; // 返回的resp是一个SendSmsResponse的实例,与请求对象对应 SendSmsResponse resp = client.SendSmsSync(req); var abs = AbstractModel.ToJsonString(resp); shujiu = JsonConvert.DeserializeObject(abs); } catch (Exception e) { Console.WriteLine(e.ToString()); } return shujiu; } } public class Responsesd { public SendStatusSetsdf SendStatusSet { get; set; } public string RequestId { get; set; } } public class SendStatusSetsdf { public string PhoneNumber { get; set; } public string SerialNo { get; set; } public int Fee { get; set; } public string SessionContext { get; set; } public string Code { get; set; } public string Message { get; set; } public string IsoCode { get; set; } } } }