576 lines
25 KiB
C#
576 lines
25 KiB
C#
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; }
|
||
}
|
||
|
||
|
||
}
|
||
|
||
|
||
} |