Files
Web_Faces_Prod/Face.Web/Areas/App/Controllers/TestController.cs

576 lines
25 KiB
C#
Raw Normal View History

2025-11-25 17:41:24 +08:00
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<Hotels>().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<DeviceManage>().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<Hotels> 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<TestUser>().Where(x => x.state == 1).Where(j => j.establish == name).ToList();
ViewBag.clist = list;
}
ViewData["Hotelsp"] = SqlSugarBase.authoriydb.Queryable<Hotels>().ToList();
return View();
}
public ActionResult visitinfo(string infoShow, string hotel, string room, string checkin, int shi)//开房测试
{
try
{
List<Result> relist = null;
List<string> vs = infoShow.Split(',').ToList();
DateTime date = Convert.ToDateTime(checkin);
var code = int.Parse(hotel);
//查询酒店
var hotellist = SqlSugarBase.authoriydb.Queryable<Hotels>().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<CheckinTest>().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<CheckinTest>().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<TestUser>().Where(x => vs.Contains(x.id.ToString())).ToList();
List<WebServer.UserInfo> users = new List<WebServer.UserInfo>();
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<TestUser>().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<CheckinTest>().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<WebServer.UserInfo> users1 = new List<WebServer.UserInfo>();
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<TestUser>().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<CheckinTest>().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<CheckInInfo>().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<TestUser>().Where(s => s.establish == name).ToList();
//ViewBag.testlist = testlist;
IPagedList<TestUser> 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<int> lit = (List<int>)Session["list"];
List<TBL_ROOM_BASIC_INFO> ZongRoominfo = (List<TBL_ROOM_BASIC_INFO>)Session["ZongRoominfo"];
List<CheckinTest> li = new List<CheckinTest>();
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<TestUser>().ToList();
var se = ser.Queryable<subtabulation>().ToList();
var userList = ser.Queryable<CheckinTest>().ToList();
var dsae = ser.Queryable<CheckinTest>().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<CheckinTest> 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<Hotels>().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<DeviceManage>().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<Responsesd>(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; }
}
}
}