Files
Web_Faces_Prod/Face.Web/Areas/App/Controllers/TestController.cs
2025-11-25 17:41:57 +08:00

576 lines
25 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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; }
}
}
}