2025-12-11 09:17:16 +08:00
using System ;
using System.Collections.Generic ;
using System.Data ;
using System.IO ;
using System.Linq ;
using System.Linq.Dynamic ;
using System.Text.RegularExpressions ;
using System.Web.Mvc ;
using Domain ;
using Newtonsoft.Json ;
using Newtonsoft.Json.Converters ;
using Service ;
using Common ;
using System.Web.Routing ;
using RCUHost ;
using System.Threading ;
using System.Threading.Tasks ;
using System.Text ;
using System.Web ;
using CommonEntity ;
using WebSite.Models ;
using RCUHost.Protocols ;
using RCUHost.Implement ;
using RestSharp ;
using System.Net ;
namespace WebSite.Controllers
{
public class HostController : BaseController
{
private const int AUTHORITY_Host = 30 ;
private const int AUTHORITY_Secret = 34 ;
/// <summary>
/// 数据升级权限ID
/// </summary>
private const int AUTHORITY_DataUpgrade = 1003 ;
private const int AUTHORITY_CHostUpgrade = 1006 ; //C主机升级权限
private const int AUTHORITY_HostAuthority = 1007 ; //主机授权权限
private const int AUTHORITY_MACAuthority = 1008 ; //MAC查询授权权限
private static log4net . ILog logger = log4net . LogManager . GetLogger ( typeof ( HostController ) ) ;
private static string tool_sync_url = System . Configuration . ConfigurationManager . AppSettings [ "tool_sync_url" ] ;
public IHostManager HostManager { get ; set ; }
public IHostAirManager HostAirManager { get ; set ; }
public IHostUpdateManager HostUpdateManager { get ; set ; }
public IRoomStatusManager RoomStatusManager { get ; set ; }
public IRoomTypeAirManager RoomTypeAirManager { get ; set ; }
public IGroupManager GroupManager { get ; set ; }
public ISysUserManager SysUserManager { get ; set ; }
public IPowerSupplyControlManager PowerSupplyControlManager { get ; set ; }
public ISysHotelManager SysHotelManager { get ; set ; }
public IHostRCUManager HostRCUManager { get ; set ; }
public IRoomTypeManager RoomTypeManager { get ; set ; }
public ITFTP_SettingMananger TFTPManager { get ; set ; }
//public ISmartRobotDisableTimeMananger SmartRobotDisableTimeMananger { get; set; }
public IHostModalManager HostModalManager { get ; set ; }
#region Action
[Authorize]
public ActionResult Index ( )
{
ViewData [ "EnableDataUpgrade" ] = SysUserManager . HasAuthority ( User . Identity . Name , AUTHORITY_DataUpgrade ) ;
ViewData [ "AUTHORITY_CHostUpgrade" ] = SysUserManager . HasAuthority ( User . Identity . Name , AUTHORITY_CHostUpgrade ) ;
ViewData [ "AUTHORITY_HostAuthority" ] = SysUserManager . HasAuthority ( User . Identity . Name , AUTHORITY_HostAuthority ) ;
ViewData [ "AUTHORITY_MACAuthority" ] = SysUserManager . HasAuthority ( User . Identity . Name , AUTHORITY_MACAuthority ) ;
return View ( "SimonIndex" ) ;
}
[Authorize]
public ActionResult SecretMgtIndex ( )
{
return View ( "SecretMgtIndex" ) ;
}
[Authorize]
public ActionResult HostInfo ( )
{
return View ( "HostInfo" ) ;
}
[Authorize]
public ActionResult Edit ( int? id , string hostNumber , string ip , string mac , string version )
{
ViewData [ "Account" ] = User . Identity . Name ;
if ( id . HasValue )
{
return View ( HostManager . Get ( id . Value ) ) ;
}
else
{
var hotel = SysHotelManager . Get ( CurrentHotelID ) ;
return View ( new Host
{
ID = 0 ,
HostNumber = hostNumber ,
RoomNumber = hostNumber ,
MAC = mac ,
SysHotel = hotel ,
Group = null ,
RoomType = null ,
Remark = hotel . Code ,
IsSyncRoomNumber = false ,
IsAutoUpdate = false ,
ServerIP = "106.75.37.225" ,
ServerPort = 3339 ,
IPType = 1 ,
LanIP = "192.168.1.200" ,
LanPort = 3341 ,
SubnetMask = "255.255.255.0" ,
Gateway = "192.168.1.1" ,
DNS = "114.114.114.114" ,
FCS_locationUUID = ""
} ) ;
//var host = HostManager.GetByMAC(mac, CurrentHotelID);
//if (host != null)
//{
// return View(host);
//}
//else
//{
// var hotel = SysHotelManager.Get(CurrentHotelID);
// return View(new Host
// {
// ID = 0,
// HostNumber = hostNumber,
// RoomNumber = hostNumber,
// MAC = mac,
// SysHotel = hotel,
// Group = null,
// RoomType = null,
// Remark = hotel.Code,
// IsSyncRoomNumber = false,
// IsAutoUpdate = false,
// ServerIP = "106.75.37.225",
// ServerPort = 3339,
// IPType = 1,
// LanIP = "192.168.1.200",
// LanPort = 3341,
// SubnetMask = "255.255.255.0",
// Gateway = "192.168.1.1",
// DNS = "114.114.114.114",
// FCS_locationUUID=""
// });
//}
}
}
[Authorize]
public ActionResult NetworkSetting ( )
{
return View ( ) ;
}
/// <summary>
///
/// </summary>
/// <param name="page"></param>
/// <param name="rows"></param>
/// <param name="order"></param>
/// <param name="sort"></param>
/// <param name="groupId"></param>
/// <param name="roomNumber">房号</param>
/// <param name="mac">mac地址</param>
/// <param name="roomType">房型名称</param>
/// <param name="isSyncRoomNumber">房号是否同步: 0否, 1是, 2全部</param>
/// <returns></returns>
[Authorize]
public ActionResult LoadAllByPage ( int page , int rows , string order , string sort , int? groupId , string roomNumber = "" , string mac = "" , string roomType = "" , int isSyncRoomNumber = 1 )
{
long total = 0 ;
if ( groupId . HasValue )
{
var list = HostManager . LoadAllByPage ( out total , page , rows , order , sort , groupId . GetValueOrDefault ( ) , CurrentHotelID , roomNumber , mac , roomType , isSyncRoomNumber ) . ToList ( ) ;
IList < object > result = new List < object > ( ) ;
foreach ( var host in list )
{
int hotelid = host . SysHotel . ID ;
int hostid = host . ID ;
TFTP_Set ttt = TFTPManager . GetData ( hotelid , hostid ) ;
if ( ttt ! = null )
{
}
result . Add ( new
{
ID = host . ID ,
Status = CSRedisCacheHelper . Contains ( host . HostNumber , host . MAC ) ,
Code = host . SysHotel . Code ,
HostNumber = host . HostNumber ,
RoomNumber = host . RoomNumber ,
MAC = host . MAC ,
GroupName = host . Group . Name ,
RoomType = host . RoomType . Name ,
IsSyncRoomNumber = host . IsSyncRoomNumber ,
IsAutoUpdate = host . IsAutoUpdate ,
Version = host . Version ,
ConfigVersion = host . ConfigVersion ,
RegisterDate = host . RegisterDate . ToString ( "yyyy-MM-dd HH:mm:ss" ) ,
IP = host . IP ,
Port = host . Port ,
LanIP = host . IPType = = 1 ? host . LanIP : "" ,
LanPort = host . IPType = = 1 ? host . LanPort : 0 ,
SubnetMask = host . IPType = = 1 ? host . SubnetMask : "" ,
Gateway = host . IPType = = 1 ? host . Gateway : "" ,
DNS = host . IPType = = 1 ? host . DNS : "" ,
Remark = host . Remark ,
XiaoDuCUID = host . XiaoDuCUID ,
TCLCUID = host . TCLCUID ,
TCLSkillID = host . TCLSkillID ,
HiWeiCUID = host . HiWeiCUID ,
HuaWeiCUID = host . HuaWeiCUID ,
TianMaoCUID = host . TianMaoCUID ,
RokidWebhookUrl = host . RokidWebhookUrl ,
DeviceName = host . DeviceName ,
DeviceSecret = host . DeviceSecret ,
IsPublish = host . IsPublish ,
HostSecret = host . HostSecret ,
ProductKey = host . ProductKey ,
IotId = host . IotId ,
IPType = host . IPType = = 1 ? HttpContext . InnerLanguage ( "Auto" ) : HttpContext . InnerLanguage ( "Manual" ) ,
ExpireTime = host . ExpireTime = = null ? "" : Convert . ToDateTime ( host . ExpireTime ) . ToString ( "yyyy-MM-dd HH:mm:ss" ) ,
SetExpireTime = host . SetExpireTime = = null ? "" : Convert . ToDateTime ( host . SetExpireTime ) . ToString ( "yyyy-MM-dd HH:mm:ss" ) ,
Season = ChangeSeason ( host . Season ) ,
ServerIP = host . ServerIP ,
ServerPort = host . ServerPort ,
Model = host . Model ,
Launcher = host . LauncherVersion ,
IsTrigger = ttt ! = null ? ttt . IsTrigger : false ,
TargetDomain = ttt ! = null ? ttt . TargetDomain : "" ,
TargetPort = ttt ! = null ? ttt . TargetPort : 0 ,
LastTime = ttt ! = null ? ttt . LastTime : 0 ,
CreateTime = ttt ! = null ? ttt . CreateTime : "" ,
} ) ;
}
return Json ( new { total = total , rows = result } ) ;
}
else
{
return Json ( new { total = 0 , rows = new List < object > ( ) } ) ;
}
}
[Authorize]
public ActionResult LoadAllByPageForInfo ( int page , int rows , string order , string sort , int? groupId , string roomNumber = "" , string mac = "" , string roomType = "" , int isSyncRoomNumber = 1 )
{
long total = 0 ;
if ( groupId . HasValue )
{
var list = HostManager . LoadAllByPage ( out total , page , rows , order , sort , groupId . GetValueOrDefault ( ) , CurrentHotelID , roomNumber , mac , roomType , isSyncRoomNumber ) . ToList ( ) ;
var lstHostRCU = HostRCUManager . LoadAll ( CurrentHotelID ) ;
IList < object > result = new List < object > ( ) ;
int flag = 0 ;
foreach ( var host in list )
{
result . Add ( new
{
ID = host . ID ,
Flag = flag ,
Type = "后台预设信息" ,
HotelCode = host . SysHotel . Code ,
RoomType = host . RoomType . Name ,
RoomNumber = host . RoomNumber ,
MAC = host . MAC ,
IPType = ( host . IPType = = 0 ? HttpContext . InnerLanguage ( "Unknown" ) : ( host . IPType = = 2 ? HttpContext . InnerLanguage ( "Manual" ) : HttpContext . InnerLanguage ( "Auto" ) ) ) ,
LanIP = host . IPType = = 2 ? host . LanIP : "" ,
Remark = host . Remark ,
RoomStatus = host . RoomStatus . Name ,
TypeNumber = "" ,
Version = host . Version ,
ConfigVersion = host . ConfigVersion ,
HotelName = host . SysHotel . Name ,
RoomTypeRemark = "" ,
HostID = host . ID ,
RoomTypeID = host . RoomType . ID ,
LanPort = host . IPType = = 1 ? 0 : host . LanPort ,
Gateway = host . IPType = = 1 ? "" : host . Gateway ,
SubnetMask = host . IPType = = 1 ? "" : host . SubnetMask ,
DNS = host . IPType = = 1 ? "" : host . DNS ,
ServerIP = host . ServerIP ,
RunTime = "" ,
Season = ChangeSeason ( host . Season ) ,
LockStatus = "" ,
SetExpireTime = host . SetExpireTime = = null ? "" : Convert . ToDateTime ( host . SetExpireTime ) . ToString ( "yyyy-MM-dd HH:mm:ss" ) ,
ExpireTime = host . ExpireTime = = null ? "" : Convert . ToDateTime ( host . ExpireTime ) . ToString ( "yyyy-MM-dd HH:mm:ss" ) ,
Core = "" ,
Model = host . Model ,
Launcher = host . LauncherVersion ,
UpdateTime = ""
} ) ;
if ( host . Version . StartsWith ( "C" ) )
{
HostRCU hostRCU = lstHostRCU . Where ( r = > r . HostID = = host . ID ) . FirstOrDefault ( ) ;
if ( hostRCU ! = null )
{
result . Add ( new
{
ID = hostRCU . HostID ,
Flag = flag ,
Type = "真实主机信息" ,
HotelCode = hostRCU . HotelCode ,
RoomType = hostRCU . RoomType ,
RoomNumber = hostRCU . RoomNumber ,
MAC = hostRCU . MAC ,
IPType = ( hostRCU . IPType = = 0 ? HttpContext . InnerLanguage ( "Unknown" ) : ( hostRCU . IPType = = 2 ? HttpContext . InnerLanguage ( "Manual" ) : HttpContext . InnerLanguage ( "Auto" ) ) ) ,
LanIP = hostRCU . LanIP ,
Remark = hostRCU . RoomRemark ,
RoomStatus = hostRCU . RoomStatus ,
TypeNumber = hostRCU . TypeNumber ,
Version = hostRCU . Version ,
ConfigVersion = hostRCU . ConfigVersion ,
HotelName = hostRCU . HotelName ,
RoomTypeRemark = hostRCU . RoomTypeRemark ,
HostID = hostRCU . HostID ,
RoomTypeID = hostRCU . RoomTypeID ,
LanPort = hostRCU . LanPort ,
Gateway = hostRCU . Gateway ,
SubnetMask = hostRCU . SubnetMask ,
DNS = hostRCU . DNS ,
ServerIP = hostRCU . ServerIP ,
RunTime = hostRCU . RunTime = = null ? "" : Convert . ToDateTime ( hostRCU . RunTime ) . ToString ( "yyyy-MM-dd HH:mm:ss" ) ,
Season = ChangeSeason ( hostRCU . Season ) ,
LockStatus = hostRCU . LockStatus = = 0 ? "正常" : "锁定" ,
SetExpireTime = hostRCU . SetExpireTime = = null ? "" : Convert . ToDateTime ( hostRCU . SetExpireTime ) . ToString ( "yyyy-MM-dd HH:mm:ss" ) ,
ExpireTime = hostRCU . ExpireTime = = null ? "" : Convert . ToDateTime ( hostRCU . ExpireTime ) . ToString ( "yyyy-MM-dd HH:mm:ss" ) ,
Core = hostRCU . Core ,
Model = hostRCU . Model ,
Launcher = hostRCU . LauncherVersion ,
UpdateTime = hostRCU . UpdateTime = = null ? "" : Convert . ToDateTime ( hostRCU . UpdateTime ) . ToString ( "yyyy-MM-dd HH:mm:ss" )
} ) ;
}
}
switch ( flag )
{
case 0 :
flag = 1 ;
break ;
default :
flag = 0 ;
break ;
}
}
return Json ( new { total = total , rows = result } ) ;
}
else
{
return Json ( new { total = 0 , rows = new List < object > ( ) } ) ;
}
}
private string ChangeSeason ( string season )
{
System . Text . StringBuilder result = new System . Text . StringBuilder ( ) ;
if ( season ! = null )
{
for ( int i = 0 ; i < season . Length ; i + + )
{
switch ( Convert . ToInt16 ( season . Substring ( i , 1 ) ) )
{
case 1 :
result . Append ( HttpContext . InnerLanguage ( "Spring" ) ) ;
break ;
case 2 :
result . Append ( HttpContext . InnerLanguage ( "Summer" ) ) ;
break ;
case 3 :
result . Append ( HttpContext . InnerLanguage ( "Winter" ) ) ;
break ;
default :
result . Append ( HttpContext . InnerLanguage ( "Autumn" ) ) ;
break ;
}
}
}
return result . ToString ( ) ;
}
/// <summary>
/// 根据mac地址获取主机信息
/// </summary>
/// <param name="mac"></param>
/// <returns></returns>
[Authorize]
[HttpPost]
public ActionResult LoadHostByMAC ( string mac )
{
object data = null ;
Host host = HostManager . GetByMAC ( mac , CurrentHotelID ) ;
if ( host ! = null )
{
data = new
{
host . ID ,
host . HostNumber ,
host . RoomNumber ,
host . IP ,
host . MAC ,
GroupID = host . Group ! = null ? host . Group . ID . ToString ( ) : "" ,
RoomTypeID = host . RoomType ! = null ? host . RoomType . ID . ToString ( ) : "" ,
host . Version ,
host . Remark ,
HotelID = host . SysHotel ! = null ? host . SysHotel . ID . ToString ( ) : "" ,
} ;
}
return Json ( new { IsSuccess = true , Data = data } ) ;
}
/// <summary>
/// 根据房型ID获取对应的主机列表( 针对C主机)
/// </summary>
/// <param name="roomTypeID"></param>
/// <returns></returns>
[Authorize]
public ActionResult LoadHostByRoomType ( int roomTypeID )
{
//var list = HostManager.LoadAll().Where(r => r.SysHotel.ID == CurrentHotelID && !string.IsNullOrEmpty(r.MAC) && r.RoomType.ID == roomTypeID && r.Version.StartsWith("C")).ToList();
var lists = HostManager . LoadHostByRoomType ( CurrentHotelID , roomTypeID ) ; //ID,HostNumber,RoomNumber,MAC,RoomTypeID,Model,LauncherVersion,Version,ConfigVersion,UpgradeStatus,UpgradeTime
IList < ShengJiData > result = new List < ShengJiData > ( ) ;
foreach ( var list in lists )
{
ShengJiData sss = new ShengJiData ( ) ;
sss . ID = ( ( object [ ] ) list ) [ 0 ] ;
object hostnumber = ( ( object [ ] ) list ) [ 1 ] ;
object mac = ( ( object [ ] ) list ) [ 3 ] ;
if ( hostnumber ! = null & & mac ! = null )
{
sss . Status = CSRedisCacheHelper . Contains ( hostnumber . ToString ( ) , mac . ToString ( ) ) ;
}
else
{
sss . Status = "" ;
}
//sss.Status = CSRedisCacheHelper.Contains(((object[])list)[1].ToString(), ((object[])list)[3].ToString());
sss . RoomNumber = ( ( object [ ] ) list ) [ 2 ] . ToString ( ) ;
sss . MAC = ( ( object [ ] ) list ) [ 3 ] ;
sss . Model = ( ( object [ ] ) list ) [ 5 ] ;
sss . Launcher = ( ( object [ ] ) list ) [ 6 ] ;
sss . Version = ( ( object [ ] ) list ) [ 7 ] ;
sss . ConfigVersion = ( ( object [ ] ) list ) [ 8 ] ;
sss . UpgradeStatus = ( ( object [ ] ) list ) [ 10 ] = = null ? "" : ( ( object [ ] ) list ) [ 9 ] ;
sss . UpgradeTime = ( ( object [ ] ) list ) [ 10 ] = = null ? "" : Convert . ToDateTime ( ( ( object [ ] ) list ) [ 10 ] ) . ToString ( "yyyy-MM-dd HH:mm:ss" ) ;
sss . ProgressBar = "" ;
result . Add ( sss ) ;
//result.Add(new ShengJiData
//{
// ID = ((object[])list)[0],
// Status = CSRedisCacheHelper.Contains(((object[])list)[1].ToString(), ((object[])list)[3].ToString()),
// RoomNumber = ((object[])list)[2].ToString(),
// MAC = ((object[])list)[3],
// //RoomType = host.RoomType.Name,
// Model = ((object[])list)[5],
// Launcher = ((object[])list)[6],
// Version = ((object[])list)[7],
// ConfigVersion = ((object[])list)[8],
// UpgradeStatus = ((object[])list)[10] == null ? "" : ((object[])list)[9],
// UpgradeTime = ((object[])list)[10] == null ? "" : Convert.ToDateTime(((object[])list)[10]).ToString("yyyy-MM-dd HH:mm:ss"),
// ProgressBar = ""
//});
}
//foreach (var item in result)
//{
// var SSS= item.UpgradeStatus;
// if (SSS!=null)
// {
// if (SSS.ToString().Length<=5)
// {
// item.UpgradeStatus = item.UpgradeStatus.ToString() + "";
// }
// }
//}
var QQQ = result . OrderBy ( A = > A . RoomNumber ) . ToList ( ) ;
return Json ( new { total = result . Count , rows = QQQ } ) ;
}
/// <summary>
/// 根据房型获取所有类型主机
/// </summary>
/// <param name="roomTypeID"></param>
/// <returns></returns>
[Authorize]
public ActionResult LoadAllHostByRoomType ( int roomTypeID )
{
var lists = HostManager . LoadAllHostByRoomType ( CurrentHotelID , roomTypeID ) ;
IList < object > result = new List < object > ( ) ;
foreach ( var list in lists )
{
result . Add ( new
{
ID = ( ( object [ ] ) list ) [ 0 ] ,
Status = CSRedisCacheHelper . Contains ( ( ( object [ ] ) list ) [ 1 ] . ToString ( ) , ( ( object [ ] ) list ) [ 3 ] . ToString ( ) ) ,
RoomNumber = ( ( object [ ] ) list ) [ 2 ] ,
MAC = ( ( object [ ] ) list ) [ 3 ] ,
ExpireTime = ( ( object [ ] ) list ) [ 5 ] = = null ? "" : Convert . ToDateTime ( ( ( object [ ] ) list ) [ 5 ] ) . ToString ( "yyyy-MM-dd HH:mm:ss" ) ,
SetExpireTime = ( ( object [ ] ) list ) [ 6 ] = = null ? "" : Convert . ToDateTime ( ( ( object [ ] ) list ) [ 6 ] ) . ToString ( "yyyy-MM-dd HH:mm:ss" )
} ) ;
}
return Json ( new { total = result . Count , rows = result } ) ;
}
[Authorize]
[HttpPost]
public ActionResult Save ( string jsonData )
{
try
{
Host entity = Newtonsoft . Json . JsonConvert . DeserializeObject < Host > ( jsonData ) ;
Host existHost = null ;
if ( ! string . IsNullOrEmpty ( entity . MAC ) )
{
if ( ! Regex . IsMatch ( entity . MAC , Common . ValidatePattern . MAC ) )
{
return Json ( new { IsSuccess = false , Message = HttpContext . InnerLanguage ( "InvalidMACAddress" ) } ) ;
}
existHost = HostManager . GetByMAC ( entity . MAC , CurrentHotelID ) ; //同一酒店下MAC不能重复
if ( existHost ! = null & & existHost . ID ! = entity . ID )
{
return Json ( new { IsSuccess = false , Message = "MAC(" + entity . MAC + ")已存在酒店(" + entity . SysHotel . Code + ")客房(" + entity . RoomNumber + ")下,请重新输入。" } ) ;
}
}
if ( ! string . IsNullOrEmpty ( entity . RoomNumber ) )
{
existHost = HostManager . GetByRoomNumber ( entity . RoomNumber , entity . SysHotel . ID ) ; //同一酒店下房号不能重复
if ( existHost ! = null & & existHost . ID ! = entity . ID )
{
return Json ( new { IsSuccess = false , Message = "房号(" + entity . RoomNumber + ")已存在,请重新输入。" } ) ;
}
}
/ * if ( ! string . IsNullOrEmpty ( entity . XiaoDuCUID ) )
{
existHost = HostManager . GetByXiaoDuCUID ( entity . XiaoDuCUID ) ;
if ( existHost ! = null & & existHost . ID ! = entity . ID )
{
throw new ApplicationException ( string . Format ( "XiaoDu CUID({0})已绑定到酒店({1})客房({2})下,请重新输入。" , entity . XiaoDuCUID , existHost . SysHotel . Name , existHost . RoomNumber ) ) ;
}
}
if ( ! string . IsNullOrEmpty ( entity . TCLCUID ) )
{
existHost = HostManager . GetByTCLCUID ( entity . TCLCUID ) ;
if ( existHost ! = null & & existHost . ID ! = entity . ID )
{
throw new ApplicationException ( string . Format ( "TCL TV CUID({0})已绑定到酒店({1})客房({2})下,请重新输入。" , entity . XiaoDuCUID , existHost . SysHotel . Name , existHost . RoomNumber ) ) ;
}
}
if ( ! string . IsNullOrEmpty ( entity . HuaWeiCUID ) )
{
existHost = HostManager . GetByHuaWeiCUID ( entity . HuaWeiCUID ) ;
if ( existHost ! = null & & existHost . ID ! = entity . ID )
{
throw new ApplicationException ( string . Format ( "HuaWei TV CUID({0})已绑定到酒店({1})客房({2})下,请重新输入。" , entity . HuaWeiCUID , existHost . SysHotel . Name , existHost . RoomNumber ) ) ;
}
} * /
Host host_take = null ;
string Key = CacheKey . HostInfo_Key_HostNumber + "_" + entity . HostNumber ;
object obj = MemoryCacheHelper . Get ( Key ) ;
if ( obj ! = null )
{
host_take = obj as Host ;
host_take . RoomNumber = entity . RoomNumber ;
//"SysHotel":{"ID":"1"},"Group":{"ID":"1811"},"RoomType":{"ID":"1"}}
if ( entity . SysHotel ! = null & & existHost ! = null )
{
host_take . SysHotel = existHost . SysHotel ;
}
if ( entity . RoomType ! = null & & existHost ! = null )
{
host_take . RoomType = existHost . RoomType ;
}
if ( entity . Group ! = null & & existHost ! = null )
{
host_take . Group = existHost . Group ;
}
host_take . IPType = entity . IPType ;
}
string action = entity . ID = = 0 ? HttpContext . InnerLanguage ( "New" ) : HttpContext . InnerLanguage ( "Edit" ) ;
HostManager . Save ( entity ) ;
SaveSystemLog ( AUTHORITY_Host , action , "【" + entity . RoomNumber + "】" ) ;
return Json ( new { IsSuccess = true , Message = HttpContext . InnerLanguage ( "SaveSuccess" ) } ) ;
}
catch ( Exception ex )
{
SaveSystemLog ( AUTHORITY_Host , HttpContext . InnerLanguage ( "NewOrEdit" ) , ex . Message , false ) ;
logger . Error ( ex ) ;
return Json ( new { IsSuccess = false , Message = HttpContext . InnerLanguage ( "SaveFailedBecause" ) + ex . Message } ) ;
}
}
/// <summary>
/// 通过excel导入主机列表
/// </summary>
/// <returns></returns>
[Authorize]
public ActionResult ImortHosts ( System . Web . HttpPostedFileBase file )
{
try
{
if ( file = = null | | file . ContentLength < = 0 )
{
throw new ApplicationException ( HttpContext . InnerLanguage ( "PleaseSelectTheUpgradePackageFile" ) ) ;
}
string ext = System . IO . Path . GetExtension ( file . FileName ) . ToLower ( ) ;
if ( ext ! = ".xls" & & ext ! = ".xlsx" )
{
throw new ApplicationException ( HttpContext . InnerLanguage ( "PleaseSelectTheUpgradePackageFile" ) ) ;
}
var tup = new Tuple < int , HttpPostedFileBase > ( CurrentHotelID , file ) ;
System . Threading . Tasks . Task . Factory . StartNew ( ( state ) = >
{
var ttt = state as Tuple < int , HttpPostedFileBase > ;
var file_o = ttt . Item2 ;
var CurrentHotelIDAAA = ttt . Item1 ;
using ( ExcelHelper excelHelper = new ExcelHelper ( file_o . FileName ) )
{
DataTable dtNewHosts = excelHelper . ExcelToDataTable ( file . InputStream , "" , true ) ;
foreach ( DataRow dr in dtNewHosts . Rows )
{
if ( ! string . IsNullOrEmpty ( dr [ "房号" ] . ToString ( ) ) )
{
Host host = HostManager . GetByRoomNumber ( dr [ "房号" ] . ToString ( ) , CurrentHotelIDAAA ) ;
if ( host ! = null )
{
logger . Error ( string . Format ( "导入酒店({0})主机的房号({1})已存在" , CurrentHotelIDAAA , dr [ "房号" ] . ToString ( ) ) ) ;
continue ;
}
Domain . Group group = GroupManager . LoadAll ( ) . Where ( r = > r . Name = = dr [ "分组" ] . ToString ( ) & & r . HotelID = = CurrentHotelIDAAA ) . FirstOrDefault ( ) ;
if ( group = = null )
{
logger . Error ( string . Format ( "导入酒店({0})主机的分组({1})不存在" , CurrentHotelIDAAA , dr [ "分组" ] . ToString ( ) ) ) ;
continue ;
}
RoomType roomType = RoomTypeManager . LoadAll ( ) . Where ( r = > r . Name = = dr [ "房型" ] . ToString ( ) & & r . HotelID = = CurrentHotelIDAAA ) . FirstOrDefault ( ) ;
if ( roomType = = null )
{
logger . Error ( string . Format ( "导入酒店({0})主机的分组({1})不存在" , CurrentHotelIDAAA , dr [ "房型" ] . ToString ( ) ) ) ;
continue ;
}
host = new Host ( ) ;
host . ID = 0 ;
host . IPType = 1 ;
host . RoomNumber = dr [ "房号" ] . ToString ( ) ;
host . SysHotel = SysHotelManager . Get ( CurrentHotelIDAAA ) ;
host . Group = group ;
host . RoomType = roomType ;
host . IsSyncRoomNumber = dr [ "房号同步" ] . ToString ( ) = = "是" ? true : false ;
host . XiaoDuCUID = dr [ "小度CUID" ] . ToString ( ) ;
host . TianMaoCUID = dr [ "天猫精灵CUID" ] . ToString ( ) ;
host . TCLCUID = dr [ "TCLCUID" ] . ToString ( ) ;
host . TCLSkillID = dr [ "TCLSkillID" ] . ToString ( ) ;
host . HiWeiCUID = dr [ "HiWeiCUID" ] . ToString ( ) ;
host . FCS_locationUUID = dr [ "FCS_LocationUUID" ] . ToString ( ) ;
HostManager . Save ( host ) ;
SaveSystemLog ( AUTHORITY_Host , "导入" , "【" + host . RoomNumber + "】" ) ;
}
}
}
} , tup , CancellationToken . None , TaskCreationOptions . None , TaskScheduler . Default ) ;
return Json ( new { IsSuccess = true , Message = HttpContext . InnerLanguage ( "ImportSuccess" ) } ) ;
}
catch ( Exception ex )
{
SaveSystemLog ( AUTHORITY_Host , HttpContext . InnerLanguage ( "Import" ) , ex . Message , false ) ;
logger . Error ( ex ) ;
return Json ( new { IsSuccess = false , Message = HttpContext . InnerLanguage ( "SaveFailedBecause" ) + ex . Message } ) ;
}
}
///// <summary>
///// 导出主机记录到excel
///// </summary>
///// <returns></returns>
//[Authorize]
//public ActionResult ExportExcel()
//{
// //过滤当前酒店
// Domain.Group group = GroupManager.LoadAll().Where(r => r.HotelID == CurrentHotelID && r.Parent == null).First();
// //var list = HostManager.LoadAll(group).Select(r => new { r.RoomNumber, r.IP, r.MAC, r.Group, r.Remark }).ToList();
// var list = HostManager.LoadAll(group).ToList();//.Select(r => new { r.RoomNumber, r.IP, r.MAC, r.Group, r.Remark }).ToList();
// NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook();
// NPOI.SS.UserModel.ISheet sheet1 = book.CreateSheet("Sheet1");
// sheet1.SetColumnWidth(0, 10 * 256);
// sheet1.SetColumnWidth(1, 20 * 256);
// sheet1.SetColumnWidth(2, 20 * 256);
// sheet1.SetColumnWidth(3, 20 * 256);
// NPOI.SS.UserModel.IRow row1 = sheet1.CreateRow(0);
// //row1.CreateCell(0).SetCellValue(HttpContext.InnerLanguage("RoomNumber"));
// //row1.CreateCell(1).SetCellValue("MAC");
// //row1.CreateCell(2).SetCellValue(HttpContext.InnerLanguage("Floor"));
// //row1.CreateCell(3).SetCellValue(HttpContext.InnerLanguage("Remark"));
// //row1.CreateCell(4).SetCellValue("IP");
// row1.CreateCell(0).SetCellValue("房号");
// row1.CreateCell(1).SetCellValue("分组");
// row1.CreateCell(2).SetCellValue("房型");
// row1.CreateCell(3).SetCellValue("房号同步");
// row1.CreateCell(4).SetCellValue("小度CUID");
// row1.CreateCell(5).SetCellValue("天猫精灵CUID");
// row1.CreateCell(6).SetCellValue("TCL CUID");
// //row1.CreateCell(7).SetCellValue("MAC");
// //row1.CreateCell(8).SetCellValue("IP");
// //row1.CreateCell(9).SetCellValue("备注");
// for (int i = 0; i < list.Count; i++)
// {
// NPOI.SS.UserModel.IRow row = sheet1.CreateRow(i + 1);
// row.CreateCell(0).SetCellValue(list[i].RoomNumber);
// //row.CreateCell(1).SetCellValue(list[i].MAC);
// //row.CreateCell(2).SetCellValue(GroupManager.BuildGroupName(list[i].Group));
// //row.CreateCell(3).SetCellValue(list[i].Remark);
// //row.CreateCell(4).SetCellValue(list[i].IP);
// row.CreateCell(1).SetCellValue(list[i].Group.Name);
// row.CreateCell(2).SetCellValue(list[i].RoomType.Name);
// row.CreateCell(3).SetCellValue(list[i].IsSyncRoomNumber ? "是" : "否");
// row.CreateCell(4).SetCellValue(list[i].XiaoDuCUID);
// row.CreateCell(5).SetCellValue(list[i].TianMaoCUID);
// row.CreateCell(6).SetCellValue(list[i].TCLCUID);
// //row.CreateCell(7).SetCellValue(list[i].MAC);
// //row.CreateCell(8).SetCellValue(list[i].IP);
// //row.CreateCell(9).SetCellValue(list[i].Remark);
// }
// NPOIMemoryStream nopiMS = new NPOIMemoryStream();
// nopiMS.AllowClose = false;
// book.Write(nopiMS);
// nopiMS.Flush();
// nopiMS.Seek(0, SeekOrigin.Begin);
// nopiMS.AllowClose = true;
// //string fileName = string.Format("blw_host{0}.xls", DateTime.Now.ToString("yyyyMMddHHmmss"));
// string fileName = string.Format("blv_hosts_{0}.xls", DateTime.Now.ToString("yyyyMMddHHmmss"));
// SaveSystemLog(AUTHORITY_Host, HttpContext.InnerLanguage("ExportHostList"), "");
// return File(nopiMS, "application/vnd.ms-excel", fileName);
// //using (MemoryStream stream = new MemoryStream())
// //{
// // book.Write(stream);
// // stream.Seek(0, SeekOrigin.Begin);
// // string filename = "blw_host.xls"; //Common.Tools.ToUtf8String("主机列表.xls");
// // SaveSystemLog(AUTHORITY_Host, HttpContext.InnerLanguage("ExportHostList"), "");
// // return File(stream, "application/vnd.ms-excel", filename);
// //}
//}
/// <summary>
/// 导出主机记录到excel
/// </summary>
/// <returns></returns>
[Authorize]
public ActionResult ExportExcel ( )
{
//过滤当前酒店
Domain . Group group = GroupManager . LoadAll ( ) . Where ( r = > r . HotelID = = CurrentHotelID & & r . Parent = = null ) . First ( ) ;
var list = HostManager . LoadAll ( group ) . ToList ( ) ; //.Select(r => new { r.RoomNumber, r.IP, r.MAC, r.Group, r.Remark }).ToList();
//var list = HostManager.LoadAll(group).Select(r => new { r.RoomNumber, r.IP, r.MAC, r.Group, r.Remark }).ToList();
NPOI . HSSF . UserModel . HSSFWorkbook book = new NPOI . HSSF . UserModel . HSSFWorkbook ( ) ;
NPOI . SS . UserModel . ISheet sheet1 = book . CreateSheet ( "Sheet1" ) ;
sheet1 . SetColumnWidth ( 0 , 10 * 256 ) ;
sheet1 . SetColumnWidth ( 1 , 20 * 256 ) ;
sheet1 . SetColumnWidth ( 2 , 20 * 256 ) ;
sheet1 . SetColumnWidth ( 3 , 20 * 256 ) ;
NPOI . SS . UserModel . IRow row1 = sheet1 . CreateRow ( 0 ) ;
row1 . CreateCell ( 0 ) . SetCellValue ( "房号" ) ;
row1 . CreateCell ( 1 ) . SetCellValue ( "分组" ) ;
row1 . CreateCell ( 2 ) . SetCellValue ( "房型" ) ;
row1 . CreateCell ( 3 ) . SetCellValue ( "房号同步" ) ;
row1 . CreateCell ( 4 ) . SetCellValue ( "小度CUID" ) ;
row1 . CreateCell ( 5 ) . SetCellValue ( "天猫精灵CUID" ) ;
row1 . CreateCell ( 6 ) . SetCellValue ( "TCLCUID" ) ;
row1 . CreateCell ( 7 ) . SetCellValue ( "TCLSkillID" ) ;
row1 . CreateCell ( 8 ) . SetCellValue ( "HiWeiCUID" ) ;
row1 . CreateCell ( 9 ) . SetCellValue ( "FCS_LocationUUID" ) ;
//row1.CreateCell(7).SetCellValue("MAC");
//row1.CreateCell(8).SetCellValue("IP");
//row1.CreateCell(9).SetCellValue("备注");
for ( int i = 0 ; i < list . Count ; i + + )
{
NPOI . SS . UserModel . IRow row = sheet1 . CreateRow ( i + 1 ) ;
row . CreateCell ( 0 ) . SetCellValue ( list [ i ] . RoomNumber ) ;
row . CreateCell ( 1 ) . SetCellValue ( list [ i ] . Group . Name ) ;
row . CreateCell ( 2 ) . SetCellValue ( list [ i ] . RoomType . Name ) ;
row . CreateCell ( 3 ) . SetCellValue ( list [ i ] . IsSyncRoomNumber ? "是" : "否" ) ;
row . CreateCell ( 4 ) . SetCellValue ( list [ i ] . XiaoDuCUID ) ;
row . CreateCell ( 5 ) . SetCellValue ( list [ i ] . TianMaoCUID ) ;
row . CreateCell ( 6 ) . SetCellValue ( list [ i ] . TCLCUID ) ;
row . CreateCell ( 7 ) . SetCellValue ( list [ i ] . TCLSkillID ) ;
row . CreateCell ( 8 ) . SetCellValue ( list [ i ] . HiWeiCUID ) ;
row . CreateCell ( 9 ) . SetCellValue ( list [ i ] . FCS_locationUUID ) ;
//row.CreateCell(7).SetCellValue(list[i].MAC);
//row.CreateCell(8).SetCellValue(list[i].IP);
//row.CreateCell(9).SetCellValue(list[i].Remark);
}
NPOIMemoryStream nopiMS = new NPOIMemoryStream ( ) ;
nopiMS . AllowClose = false ;
book . Write ( nopiMS ) ;
nopiMS . Flush ( ) ;
nopiMS . Seek ( 0 , SeekOrigin . Begin ) ;
nopiMS . AllowClose = true ;
string fileName = string . Format ( "blv_hosts_{0}.xls" , DateTime . Now . ToString ( "yyyyMMddHHmmss" ) ) ;
SaveSystemLog ( AUTHORITY_Host , HttpContext . InnerLanguage ( "ExportHostList" ) , "" ) ;
return File ( nopiMS , "application/vnd.ms-excel" , fileName ) ;
//using (MemoryStream stream = new MemoryStream())
//{
// book.Write(stream);
// stream.Seek(0, SeekOrigin.Begin);
// string filename = "blw_host.xls"; //Common.Tools.ToUtf8String("主机列表.xls");
// SaveSystemLog(AUTHORITY_Host, HttpContext.InnerLanguage("ExportHostList"), "");
// return File(stream, "application/vnd.ms-excel", filename);
//}
}
///// <summary>
///// 导出主机记录到excel
///// </summary>
///// <returns></returns>
//[Authorize]
//public ActionResult ExportExcel()
//{
// //过滤当前酒店
// Domain.Group group = GroupManager.LoadAll().Where(r => r.HotelID == CurrentHotelID && r.Parent == null).First();
// var list = HostManager.LoadAll(group).Select(r => new { r.RoomNumber, r.IP, r.MAC, r.Group, r.Remark }).ToList();
// NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook();
// NPOI.SS.UserModel.ISheet sheet1 = book.CreateSheet("Sheet1");
// sheet1.SetColumnWidth(0, 10 * 256);
// sheet1.SetColumnWidth(1, 20 * 256);
// sheet1.SetColumnWidth(2, 20 * 256);
// sheet1.SetColumnWidth(3, 20 * 256);
// NPOI.SS.UserModel.IRow row1 = sheet1.CreateRow(0);
// row1.CreateCell(0).SetCellValue(HttpContext.InnerLanguage("RoomNumber"));
// row1.CreateCell(1).SetCellValue("MAC");
// row1.CreateCell(2).SetCellValue(HttpContext.InnerLanguage("Floor"));
// row1.CreateCell(3).SetCellValue(HttpContext.InnerLanguage("Remark"));
// //row1.CreateCell(1).SetCellValue(list[i].Group.Name);
// //row1.CreateCell(2).SetCellValue(list[i].RoomType.Name);
// //row1.CreateCell(3).SetCellValue(list[i].IsSyncRoomNumber ? "是" : "否");
// row1.CreateCell(4).SetCellValue("IP");
// for (int i = 0; i < list.Count; i++)
// {
// NPOI.SS.UserModel.IRow row = sheet1.CreateRow(i + 1);
// row.CreateCell(0).SetCellValue(list[i].RoomNumber);
// row.CreateCell(1).SetCellValue(list[i].MAC);
// row.CreateCell(2).SetCellValue(GroupManager.BuildGroupName(list[i].Group));
// row.CreateCell(3).SetCellValue(list[i].Remark);
// row.CreateCell(4).SetCellValue(list[i].IP);
// }
// NPOIMemoryStream nopiMS = new NPOIMemoryStream();
// //using (NPOIMemoryStream nopiMS = new NPOIMemoryStream())
// nopiMS.AllowClose = false;
// book.Write(nopiMS);
// nopiMS.Flush();
// nopiMS.Seek(0, SeekOrigin.Begin);
// nopiMS.AllowClose = true;
// string fileName = string.Format("blw_host{0}.xls", DateTime.Now.ToString("yyyyMMddHHmmss"));
// SaveSystemLog(AUTHORITY_Host, HttpContext.InnerLanguage("ExportHostList"), "");
// return File(nopiMS, "application/vnd.ms-excel", fileName);
// //using (MemoryStream stream = new MemoryStream())
// //{
// // book.Write(stream);
// // stream.Seek(0, SeekOrigin.Begin);
// // string filename = "blw_host.xls"; //Common.Tools.ToUtf8String("主机列表.xls");
// // SaveSystemLog(AUTHORITY_Host, HttpContext.InnerLanguage("ExportHostList"), "");
// // return File(stream, "application/vnd.ms-excel", filename);
// //}
//}
/// <summary>
/// 修改主机网络
/// </summary>
/// <returns></returns>
[Authorize]
[HttpPost]
public ActionResult ChangeNetworkSetting ( int [ ] hostIDs , string ip , string subnetmask , string gateway , int port )
{
string ipPattern = @"^([1-9]?\d|1\d\d|2[0-4]\d|25[0-5])\.([1-9]?\d|1\d\d|2[0-4]\d|25[0-5])\.([1-9]?\d|1\d\d|2[0-4]\d|25[0-5])\.([1-9]?\d|1\d\d|2[0-4]\d|25[0-5])$" ;
try
{
if ( ! Regex . IsMatch ( ip , ipPattern ) )
{
throw new ApplicationException ( HttpContext . InnerLanguage ( "InvalidIPAddress" ) ) ;
}
if ( ! Regex . IsMatch ( subnetmask , ipPattern ) )
{
throw new ApplicationException ( HttpContext . InnerLanguage ( "InvalidSubnetMask" ) ) ;
}
if ( ! Regex . IsMatch ( gateway , ipPattern ) )
{
throw new ApplicationException ( HttpContext . InnerLanguage ( "InvalidDefaultGateway" ) ) ;
}
if ( port < 0 | | port > 65535 )
{
throw new ApplicationException ( HttpContext . InnerLanguage ( "InvalidCommunicationPort" ) ) ;
}
var hostList = new List < Host > ( ) ;
foreach ( int id in hostIDs )
{
Host host = HostManager . Get ( id ) ;
if ( host = = null )
{
throw new ApplicationException ( HttpContext . InnerLanguage ( "InvalidHostNumber" ) + "【" + id + "】。" ) ;
}
hostList . Add ( host ) ;
}
HostManager . ChangeNetworkSetting ( hostList , ip , subnetmask , gateway , ( ushort ) port ) ;
string logDetail = "【" + ip + ", " + subnetmask + "," + gateway + "," + port + "】" ;
SaveSystemLog ( AUTHORITY_Host , HttpContext . InnerLanguage ( "EditNetworkSetting" ) , logDetail ) ;
return Json ( new { IsSuccess = true , Message = HttpContext . InnerLanguage ( "ModifiedSuccess" ) } ) ;
}
catch ( Exception ex )
{
SaveSystemLog ( AUTHORITY_Host , HttpContext . InnerLanguage ( "EditNetworkSetting" ) , ex . Message , false ) ;
return Json ( new { IsSuccess = false , Message = HttpContext . InnerLanguage ( "ModificationFailsTheFailureReasons" ) + ex . Message } ) ;
}
}
/// <summary>
/// 更改房态
/// </summary>
/// <returns></returns>
[Authorize]
public ActionResult ChangeRoomStatus ( int id , int roomStatusID )
{
Host host = HostManager . Get ( id ) ;
RoomStatus roomStatus = RoomStatusManager . Get ( roomStatusID ) ;
if ( host = = null | | roomStatus = = null )
{
return Json ( new { IsSuccess = false , Message = HttpContext . InnerLanguage ( "InvalidOperation" ) } ) ;
}
if ( ! host . Status )
{
string message = String . Format ( HttpContext . InnerLanguage ( "SendFailedHostOffline" ) , host . RoomNumber ) ;
return Json ( new { IsSuccess = false , Message = message } ) ;
}
string Key = CacheKey . SyncRoomStatus + "_" + host . HostNumber ;
RoomStatusRequest ddd = new RoomStatusRequest ( ) ;
ddd . HostNumber = host . HostNumber ;
ddd . MAC = host . MAC ;
ddd . Status = roomStatus ;
CSRedisCacheHelper . Set_Partition < RoomStatusRequest > ( Key , ddd ) ;
string logDetail = string . Format ( "客房({0}房态({1})设置为:{2}" , host . RoomNumber , host . RoomStatus . Name , roomStatus . Name ) ; //"客房"host.RoomStatus.Name + "设置为:" + roomStatus.Name;
HostManager . ChangeRoomStatus ( host , roomStatus ) ;
SaveSystemLog ( AUTHORITY_Host , HttpContext . InnerLanguage ( "SetRoomStatus" ) , logDetail ) ;
return Json ( new { IsSuccess = true , Message = HttpContext . InnerLanguage ( "ModifiedSuccess" ) } ) ;
}
/// <summary>
/// 客房电源
/// </summary>
/// <param name="id"></param>
/// <param name="roomStatusID"></param>
/// <returns></returns>
[Authorize]
public ActionResult ChangePowerSupply ( int hostID , PowerSupplyCtrl ctrl )
{
Host host = HostManager . Get ( hostID ) ;
try
{
if ( host = = null )
{
return Json ( new { IsSuccess = false , Message = HttpContext . InnerLanguage ( "InvalidRoom" ) } ) ;
}
if ( ! host . Status )
{
return Json ( new { IsSuccess = false , Message = String . Format ( HttpContext . InnerLanguage ( "SendFailedHostOffline" ) , host . RoomNumber ) } ) ;
}
PowerSupplyControlManager . SendCtrl ( host , ctrl ) ;
host . PowerSupply = ctrl = = PowerSupplyCtrl . Normal ? true : false ;
string k2 = CacheKey . PowerSupply + "_" + host . HostNumber ;
CSRedisCacheHelper . Forever < bool > ( k2 , host . PowerSupply ) ;
Host hostAAA = null ;
string Key = CacheKey . RoomStatus_Prefix + "_" + host . HostNumber ;
object obj = MemoryCacheHelper . Get ( Key ) ;
if ( obj ! = null )
{
hostAAA = obj as Host ;
hostAAA . PowerSupply = host . PowerSupply ;
}
HostManager . Update ( host ) ;
return Json ( new { IsSuccess = true , Message = HttpContext . InnerLanguage ( "OperationSuccess" ) } ) ;
}
catch ( Exception ex )
{
logger . Error ( ex ) ;
return Json ( new { IsSuccess = false , Message = HttpContext . InnerLanguage ( "OperationFailed" ) } ) ;
}
}
[Authorize]
public ActionResult Delete ( IList < int > idList )
{
IList < string > roomNumberList = new List < string > ( ) ;
if ( idList ! = null )
{
foreach ( int id in idList )
{
roomNumberList . Add ( HostManager . GetRoomNumber ( id ) ) ;
}
}
//需要删除相关设备
HostManager . Delete ( idList . Cast < object > ( ) . ToList ( ) ) ;
SaveSystemLog ( AUTHORITY_Host , HttpContext . InnerLanguage ( "Delete" ) , "【" + String . Join ( "," , roomNumberList . ToArray ( ) ) + "】" ) ;
return Json ( new { IsSuccess = true , Message = HttpContext . InnerLanguage ( "DeleteSuccess" ) } ) ;
}
[Authorize]
public ActionResult HostAuthorization ( int hostID )
{
return View ( HostManager . Get ( hostID ) ) ;
}
/// <summary>
/// 保存并下发到期时间
/// </summary>
/// <param name="jsonData"></param>
/// <returns></returns>
public ActionResult SaveHostAuthorization ( IList < int > idList , string expireTime )
{
bool result = true ;
IList < string > roomNumberList = new List < string > ( ) ;
try
{
foreach ( int id in idList )
{
Host host = HostManager . Get ( id ) ;
roomNumberList . Add ( host . RoomNumber ) ;
if ( Common . CSRedisCacheHelper . Contains ( host . HostNumber , host . MAC ) )
{
using ( MemoryStream buffer = new MemoryStream ( ) )
{
using ( BinaryWriter writer = new BinaryWriter ( buffer ) )
{
writer . Write ( new byte [ ] { 2 } ) ;
writer . Write ( new byte [ ] { 32 , 0 , 0 , 0 } ) ; //授权到期时间
writer . Write ( BitConverter . GetBytes ( TimeHelper . DateTimeToStamp ( Convert . ToDateTime ( expireTime ) ) ) , 0 , 4 ) ;
writer . Write ( new byte [ ] { 40 , 0 , 0 , 0 } ) ; //设置到期时间
writer . Write ( BitConverter . GetBytes ( TimeHelper . DateTimeToStamp ( DateTime . Now ) ) , 0 , 4 ) ;
HostManager . PublishHostInfo ( host , buffer . ToArray ( ) ) ; //下发
HostManager . SyncHostInfo ( host ) ; //同步
SaveSystemLog ( AUTHORITY_Secret , HttpContext . InnerLanguage ( "HostAuthorization" ) , "【" + host . RoomNumber + "】" ) ;
}
}
}
else
{
result = false ;
string msg = String . Format ( HttpContext . InnerLanguage ( "SendFailedHostOffline" ) , host . RoomNumber ) ;
SaveSystemLog ( AUTHORITY_Secret , HttpContext . InnerLanguage ( "HostAuthorization" ) , msg , false ) ;
}
}
}
catch ( Exception ex )
{
logger . Error ( "主机授权失败:" + ex . ToString ( ) ) ;
return Json ( new { IsSuccess = false , Message = HttpContext . InnerLanguage ( "OperationFailed" ) } ) ;
}
if ( result )
{
SaveSystemLog ( AUTHORITY_Secret , HttpContext . InnerLanguage ( "HostAuthorization" ) , "【" + String . Join ( "," , roomNumberList . ToArray ( ) ) + "】" ) ;
return Json ( new { IsSuccess = true , Message = HttpContext . InnerLanguage ( "OperationSuccess" ) } ) ;
}
else
{
return Json ( new { IsSuccess = false , Message = HttpContext . InnerLanguage ( "OperationFailed" ) + HttpContext . InnerLanguage ( "HostOffine" ) } ) ;
}
}
/// <summary>
/// 智能语音绑定
/// </summary>
/// <param name="hostID"></param>
/// <returns></returns>
[Authorize]
public ActionResult SmartVoiceBinding ( int hostID )
{
return View ( HostManager . Get ( hostID ) ) ;
}
/// <summary>
/// 保存智能语音绑定信息
/// </summary>
/// <param name="jsonData"></param>
/// <returns></returns>
public ActionResult SaveSmartVoiceBinding ( string jsonData )
{
var entity = Newtonsoft . Json . JsonConvert . DeserializeObject < Host > ( jsonData ) ;
Host existHost = null ;
if ( ! string . IsNullOrEmpty ( entity . XiaoDuCUID ) )
{
string XiaoDuKongZhiKey = CacheKey . XiaoDuYuYin + "_" + entity . XiaoDuCUID ;
HttpContext . Cache . Remove ( XiaoDuKongZhiKey ) ;
existHost = HostManager . GetByXiaoDuCUID ( entity . XiaoDuCUID ) ;
if ( existHost ! = null & & existHost . ID ! = entity . ID )
{
return Json ( new { IsSuccess = false , Message = string . Format ( "小度CUID({0})已绑定到酒店({1})客房({2})下,请重新输入。" , entity . XiaoDuCUID , existHost . SysHotel . Name , existHost . RoomNumber ) } ) ;
}
}
if ( ! string . IsNullOrEmpty ( entity . TianMaoCUID ) )
{
existHost = HostManager . GetByTianMaoCUID ( entity . TianMaoCUID ) ;
if ( existHost ! = null & & existHost . ID ! = entity . ID )
{
return Json ( new { IsSuccess = false , Message = string . Format ( "天猫精灵CUID({0})已绑定到酒店({1})客房({2})下,请重新输入。" , entity . TianMaoCUID , existHost . SysHotel . Name , existHost . RoomNumber ) } ) ;
}
}
if ( ! string . IsNullOrEmpty ( entity . TCLCUID ) )
{
existHost = HostManager . GetByTCLCUID ( entity . TCLCUID ) ;
if ( existHost ! = null & & existHost . ID ! = entity . ID )
{
return Json ( new { IsSuccess = false , Message = string . Format ( "TCL TV CUID({0})已绑定到酒店({1})客房({2})下,请重新输入。" , entity . TCLCUID , existHost . SysHotel . Name , existHost . RoomNumber ) } ) ;
}
}
if ( ! string . IsNullOrEmpty ( entity . HuaWeiCUID ) )
{
existHost = HostManager . GetByHuaWeiCUID ( entity . HuaWeiCUID ) ;
if ( existHost ! = null & & existHost . ID ! = entity . ID )
{
return Json ( new { IsSuccess = false , Message = string . Format ( "华为TV CUID({0})已绑定到酒店({1})客房({2})下,请重新输入。" , entity . HuaWeiCUID , existHost . SysHotel . Name , existHost . RoomNumber ) } ) ;
}
}
if ( ! string . IsNullOrEmpty ( entity . HiWeiCUID ) )
{
existHost = HostManager . GetByHuaWeiCUID ( entity . HiWeiCUID ) ;
if ( existHost ! = null & & existHost . ID ! = entity . ID )
{
return Json ( new { IsSuccess = false , Message = string . Format ( "华为TV CUID({0})已绑定到酒店({1})客房({2})下,请重新输入。" , entity . HuaWeiCUID , existHost . SysHotel . Name , existHost . RoomNumber ) } ) ;
}
}
Host host_take = null ;
string Key = CacheKey . HostInfo_Key_HostNumber + "_" + entity . HostNumber ;
object obj = MemoryCacheHelper . Get ( Key ) ;
if ( obj ! = null )
{
host_take = obj as Host ;
if ( ! string . IsNullOrEmpty ( entity . XiaoDuCUID ) )
{
host_take . XiaoDuCUID = entity . XiaoDuCUID ;
}
if ( ! string . IsNullOrEmpty ( entity . TianMaoCUID ) )
{
host_take . TianMaoCUID = entity . TianMaoCUID ;
}
if ( ! string . IsNullOrEmpty ( entity . TCLCUID ) )
{
host_take . TCLCUID = entity . TCLCUID ;
}
if ( ! string . IsNullOrEmpty ( entity . HuaWeiCUID ) )
{
host_take . HuaWeiCUID = entity . HuaWeiCUID ;
}
if ( ! string . IsNullOrEmpty ( entity . HiWeiCUID ) )
{
host_take . HiWeiCUID = entity . HiWeiCUID ;
}
host_take . TCLSkillID = entity . TCLSkillID ;
host_take . DisableStartTime = entity . DisableStartTime ;
host_take . DisableEndTime = entity . DisableEndTime ;
host_take . IsWelcomeDisableTime = entity . IsWelcomeDisableTime ;
2026-02-27 15:53:42 +08:00
host_take . EBell_RSTP = entity . EBell_RSTP ;
host_take . EBell_TV_duration = entity . EBell_TV_duration ;
2025-12-11 09:17:16 +08:00
}
//天猫的发现设备
string ChaXunKey = CacheKey . TianMaoJingLingQuerryAll + "_" + CurrentHotelID + "_" + entity . RoomNumber ;
HttpContext . Cache . Remove ( ChaXunKey ) ;
//小度发现设备
string MyCacheKey = "小度音箱" + "Discovery_" + CurrentHotelID + "_" + entity . RoomNumber ;
HttpContext . Cache . Remove ( MyCacheKey ) ;
HostManager . SaveSmartVoiceBinding ( entity ) ;
if ( existHost = = null )
{
existHost = HostManager . GetByRoomNumber ( entity . HostNumber , CurrentHotelID ) ;
}
if ( existHost ! = null )
{
//删除掉小度语间的缓存
string hotelid = existHost . SysHotel . ID . ToString ( ) ;
string code = existHost . SysHotel . Code ;
string roomno = existHost . RoomNumber ;
string KKA = CacheKey . XiaoDuCacheUpdate + "_" + code + "_" + roomno ;
string CUIDKey = CSRedisCacheHelper . Get_Partition < string > ( KKA ) ;
//XiaoDuYuYin_950932DC9960012309FD
if ( ! string . IsNullOrEmpty ( CUIDKey ) )
{
string XiaoDuKongZhiKey = CacheKey . XiaoDuYuYin + "_" + CUIDKey ;
HttpContext . Cache . Remove ( CUIDKey ) ;
}
string TianMaoKongZhiKey = CacheKey . TianMaoJingLing + "_" + hotelid + "_" + roomno ;
HttpContext . Cache . Remove ( TianMaoKongZhiKey ) ;
}
//string ti = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
//SmartRobotDisableTime ss = new SmartRobotDisableTime();
//ss.HostID = existHost.ID;
//ss.HotelCode = existHost.SysHotel.Code;
//ss.RoomNumber = existHost.RoomNumber;
//ss.DisableSTime = entity1.WStarttime;
//ss.DisableSTime = entity1.WEndtime;
//ss.CreateTime = ti;
//SmartRobotDisableTimeMananger.SaveOrUpdate(ss);
SaveSystemLog ( AUTHORITY_Host , HttpContext . InnerLanguage ( "Edit" ) + HttpContext . InnerLanguage ( "SmartVoiceBinding" ) , "【" + entity . RoomNumber + "】" ) ;
return Json ( new { IsSuccess = true , Message = HttpContext . InnerLanguage ( "SaveSuccess" ) } ) ;
}
/// <summary>
/// 设置或取消连通房
/// </summary>
/// <param name="hostIDs">主机ID列表</param>
/// <param name="cancel">false/设置连通房, true/取消连通房</param>
/// <returns></returns>
[Authorize]
public ActionResult ConnectRoom ( IList < int > hostIDs , bool cancel = false )
{
try
{
var hosts = new List < Host > ( ) ;
foreach ( int hostID in hostIDs )
{
var host = HostManager . Get ( hostID ) ;
if ( host ! = null )
{
hosts . Add ( host ) ;
}
}
//HostManager.ConnectRoom(hosts, cancel);
return Json ( new { IsSuccess = true , Message = HttpContext . InnerLanguage ( "OperationSuccess" ) } ) ;
}
catch ( Exception ex )
{
return Json ( new { IsSuccess = false , Message = HttpContext . InnerLanguage ( "TheOperationFailedTheFailureReasons" ) + ex . Message } ) ;
}
}
/// <summary>
/// 获取密钥
/// </summary>
/// <param name="idList"></param>
/// <returns></returns>
[Authorize]
public ActionResult GetKey ( IList < int > idList )
{
bool result = true ;
IList < string > roomNumberList = new List < string > ( ) ;
//根据酒店code和mac地址, 调用阿里云物联网获取密钥
try
{
foreach ( int id in idList )
{
Host host = HostManager . Get ( id ) ;
roomNumberList . Add ( host . RoomNumber ) ;
DeviceRegisterResult resultData = FreeGoOperation . DeviceRegister ( host . MAC ) ;
if ( resultData . errcode = = "0" )
{
host . DeviceName = resultData . device_name ;
host . DeviceSecret = resultData . device_secret ;
host . IotId = resultData . iot_id ;
host . ProductKey = resultData . product_key ;
host . IsPublish = false ;
HostManager . Update ( host ) ;
}
else
{
result = false ;
string msg = string . Format ( "调用FreeGo接口返回错误: RoomNumber:{0},ErrorCode:{1},ErrorMessage:{2}" , host . RoomNumber , resultData . errcode , resultData . msg ) ;
SaveSystemLog ( AUTHORITY_Secret , HttpContext . InnerLanguage ( "GetKey" ) , msg , false ) ;
}
}
}
catch ( Exception ex )
{
logger . Error ( "调用阿里云接口失败:" + ex . ToString ( ) ) ;
return Json ( new { IsSuccess = false , Message = HttpContext . InnerLanguage ( "OperationFailed" ) } ) ;
}
if ( result )
{
SaveSystemLog ( AUTHORITY_Secret , HttpContext . InnerLanguage ( "GetKey" ) , "【" + String . Join ( "," , roomNumberList . ToArray ( ) ) + "】" ) ;
return Json ( new { IsSuccess = true , Message = HttpContext . InnerLanguage ( "OperationSuccess" ) } ) ;
}
else
{
return Json ( new { IsSuccess = false , Message = HttpContext . InnerLanguage ( "OperationFailed" ) } ) ;
}
}
/// <summary>
/// 下发密钥
/// </summary>
/// <param name="idList"></param>
/// <returns></returns>
[Authorize]
public ActionResult PublishKey ( IList < int > idList )
{
bool result = true ;
IList < string > roomNumberList = new List < string > ( ) ;
try
{
foreach ( int id in idList )
{
Host host = HostManager . Get ( id ) ;
roomNumberList . Add ( host . RoomNumber ) ;
if ( Common . CSRedisCacheHelper . Contains ( host . HostNumber , host . MAC ) )
{
HostManager . SetDeviceSecret ( host ) ;
host . IsPublish = true ;
HostManager . Update ( host ) ;
}
else
{
result = false ;
string msg = String . Format ( HttpContext . InnerLanguage ( "SendFailedHostOffline" ) , host . RoomNumber ) ;
SaveSystemLog ( AUTHORITY_Secret , HttpContext . InnerLanguage ( "PublishKey" ) , msg , false ) ;
}
}
}
catch ( Exception ex )
{
logger . Error ( "下发密钥失败失败:" + ex . ToString ( ) ) ;
return Json ( new { IsSuccess = false , Message = HttpContext . InnerLanguage ( "OperationFailed" ) } ) ;
}
if ( result )
{
SaveSystemLog ( AUTHORITY_Secret , HttpContext . InnerLanguage ( "PublishKey" ) , "【" + String . Join ( "," , roomNumberList . ToArray ( ) ) + "】" ) ;
return Json ( new { IsSuccess = true , Message = HttpContext . InnerLanguage ( "OperationSuccess" ) } ) ;
}
else
{
return Json ( new { IsSuccess = false , Message = HttpContext . InnerLanguage ( "OperationFailed" ) + HttpContext . InnerLanguage ( "HostOffine" ) } ) ;
}
}
/// <summary>
/// 获取主机密钥
/// </summary>
/// <param name="idList"></param>
/// <returns></returns>
[Authorize]
public ActionResult GetHostKey ( IList < int > idList )
{
bool result = true ;
IList < string > roomNumberList = new List < string > ( ) ;
try
{
foreach ( int id in idList )
{
Host host = HostManager . Get ( id ) ;
roomNumberList . Add ( host . RoomNumber ) ;
if ( Common . CSRedisCacheHelper . Contains ( host . HostNumber , host . MAC ) )
{
HostManager . SendForGetHostSecret ( host ) ;
}
else
{
result = false ;
string msg = String . Format ( HttpContext . InnerLanguage ( "SendFailedHostOffline" ) , host . RoomNumber ) ;
SaveSystemLog ( AUTHORITY_Secret , HttpContext . InnerLanguage ( "GetHostKey" ) , msg , false ) ;
}
}
}
catch ( Exception ex )
{
logger . Error ( "发送获取主机密钥命令失败:" + ex . ToString ( ) ) ;
return Json ( new { IsSuccess = false , Message = HttpContext . InnerLanguage ( "OperationFailed" ) } ) ;
}
if ( result )
{
SaveSystemLog ( AUTHORITY_Secret , HttpContext . InnerLanguage ( "GetHostKey" ) , "【" + String . Join ( "," , roomNumberList . ToArray ( ) ) + "】" ) ;
return Json ( new { IsSuccess = true , Message = HttpContext . InnerLanguage ( "OperationSuccess" ) } ) ;
}
else
{
return Json ( new { IsSuccess = false , Message = HttpContext . InnerLanguage ( "OperationFailed" ) + HttpContext . InnerLanguage ( "HostOffine" ) } ) ;
}
}
/// <summary>
/// 同步信息
/// </summary>
/// <param name="idList"></param>
/// <returns></returns>
[Authorize]
public ActionResult SyncInfo ( IList < int > idList )
{
bool result = true ;
IList < string > roomNumberList = new List < string > ( ) ;
try
{
foreach ( int id in idList )
{
Host host = HostManager . Get ( id ) ;
roomNumberList . Add ( host . RoomNumber ) ;
if ( Common . CSRedisCacheHelper . Contains ( host . HostNumber , host . MAC ) )
{
HostManager . SyncHostInfo ( host ) ;
}
else
{
result = false ;
string msg = String . Format ( HttpContext . InnerLanguage ( "SendFailedHostOffline" ) , host . RoomNumber ) ;
SaveSystemLog ( AUTHORITY_Secret , HttpContext . InnerLanguage ( "SyncInfo" ) , msg , false ) ;
}
}
}
catch ( Exception ex )
{
logger . Error ( "发送同步主机信息命令失败:" + ex . ToString ( ) ) ;
return Json ( new { IsSuccess = false , Message = HttpContext . InnerLanguage ( "OperationFailed" ) } ) ;
}
if ( result )
{
SaveSystemLog ( AUTHORITY_Secret , HttpContext . InnerLanguage ( "SyncInfo" ) , "【" + String . Join ( "," , roomNumberList . ToArray ( ) ) + "】" ) ;
return Json ( new { IsSuccess = true , Message = HttpContext . InnerLanguage ( "OperationSuccess" ) } ) ;
}
else
{
return Json ( new { IsSuccess = false , Message = HttpContext . InnerLanguage ( "OperationFailed" ) + HttpContext . InnerLanguage ( "HostOffine" ) } ) ;
}
}
/// <summary>
/// 下发信息给主机
/// </summary>
/// <param name="idList"></param>
/// <returns></returns>
[Authorize]
public ActionResult PublishInfo ( IList < int > idList )
{
bool result = true ;
IList < string > roomNumberList = new List < string > ( ) ;
try
{
foreach ( int id in idList )
{
Host host = HostManager . Get ( id ) ;
roomNumberList . Add ( host . RoomNumber ) ;
if ( Common . CSRedisCacheHelper . Contains ( host . HostNumber , host . MAC ) )
{
HostManager . PublishHostInfo ( host ) ;
//if (string.IsNullOrEmpty(host.ServerIP) || !Regex.IsMatch(host.ServerIP, Common.ValidatePattern.IPAddress))
//{
// return Json(new { IsSuccess = false, Message = HttpContext.InnerLanguage("OperationFailed") + "服务器IP不合法" });
//}
//if (host.IPType == 2)
//{
// if (string.IsNullOrEmpty(host.LanIP) || !Regex.IsMatch(host.LanIP, Common.ValidatePattern.IPAddress))
// {
// return Json(new { IsSuccess = false, Message = HttpContext.InnerLanguage("OperationFailed") + "局域网IP不合法" });
// }
// if (string.IsNullOrEmpty(host.SubnetMask) || !Regex.IsMatch(host.SubnetMask, Common.ValidatePattern.IPAddress))
// {
// return Json(new { IsSuccess = false, Message = HttpContext.InnerLanguage("OperationFailed") + "子网掩码不合法" });
// }
// if (string.IsNullOrEmpty(host.Gateway) || !Regex.IsMatch(host.Gateway, Common.ValidatePattern.IPAddress))
// {
// return Json(new { IsSuccess = false, Message = HttpContext.InnerLanguage("OperationFailed") + "网关不合法" });
// }
// if (string.IsNullOrEmpty(host.DNS) || !Regex.IsMatch(host.DNS, Common.ValidatePattern.IPAddress))
// {
// return Json(new { IsSuccess = false, Message = HttpContext.InnerLanguage("OperationFailed") + "DNS不合法" });
// }
//}
}
else
{
result = false ;
string msg = String . Format ( HttpContext . InnerLanguage ( "SendFailedHostOffline" ) , host . RoomNumber ) ;
SaveSystemLog ( AUTHORITY_Secret , HttpContext . InnerLanguage ( "PublishInfo" ) , msg , false ) ;
}
}
}
catch ( Exception ex )
{
logger . Error ( "下发主机房型房号命令失败:" + ex . ToString ( ) ) ;
return Json ( new { IsSuccess = false , Message = HttpContext . InnerLanguage ( "OperationFailed" ) } ) ;
}
if ( result )
{
SaveSystemLog ( AUTHORITY_Secret , HttpContext . InnerLanguage ( "PublishInfo" ) , "【" + String . Join ( "," , roomNumberList . ToArray ( ) ) + "】" ) ;
return Json ( new { IsSuccess = true , Message = HttpContext . InnerLanguage ( "OperationSuccess" ) } ) ;
}
else
{
return Json ( new { IsSuccess = false , Message = HttpContext . InnerLanguage ( "OperationFailed" ) + HttpContext . InnerLanguage ( "HostOffine" ) } ) ;
}
}
/// <summary>
/// 工具同步
/// </summary>
/// <param name="idList"></param>
/// <returns></returns>
[Authorize]
public ActionResult ToolSync ( string key )
{
if ( string . IsNullOrEmpty ( tool_sync_url ) )
{
return Json ( new { IsSuccess = false , Message = "未配置工具同步服务器地址!" } ) ;
}
try
{
string result = HttpWebRequestHelper . PostWebRequest ( tool_sync_url , "" ) ;
Newtonsoft . Json . Linq . JObject jData = ( Newtonsoft . Json . Linq . JObject ) JsonConvert . DeserializeObject ( result ) ;
if ( jData [ "Status" ] ! = null & & Convert . ToBoolean ( jData [ "Status" ] ) = = true )
{
return Json ( new { IsSuccess = true , Message = jData [ "messages" ] . ToString ( ) } ) ;
}
else
{
return Json ( new { IsSuccess = false , Message = jData [ "messages" ] . ToString ( ) } ) ;
}
}
catch ( Exception ex )
{
logger . Error ( "发送工具同步命令失败:" + ex . ToString ( ) ) ;
return Json ( new { IsSuccess = false , Message = HttpContext . InnerLanguage ( "OperationFailed" ) + ex . Message } ) ;
}
}
/// <summary>
/// 根据mac获取对应的主机列表
/// </summary>
/// <param name="roomTypeID"></param>
/// <returns></returns>
[Authorize]
public ActionResult LoadHostsByMAC ( string mac )
{
IList < object > result = new List < object > ( ) ;
if ( ! string . IsNullOrEmpty ( mac ) )
{
IList < Host > hosts ;
if ( mac . Length = = 17 )
{
hosts = HostManager . LoadAll ( ) . Where ( r = > r . MAC = = mac ) . ToList ( ) ;
}
else
{
hosts = HostManager . LoadAll ( ) . Where ( r = > r . MAC . Contains ( mac ) ) . ToList ( ) ;
}
foreach ( Host host in hosts )
{
result . Add ( new
{
ID = host . ID ,
HostNumber = host . HostNumber ,
RoomNumber = host . RoomNumber ,
MAC = host . MAC ,
Code = host . SysHotel . Code ,
Name = ReturnNameByLanguage ( host . SysHotel . Name , host . SysHotel . EName , host . SysHotel . TWName )
} ) ;
}
}
return Json ( new { total = result . Count , rows = result } ) ;
}
#region 加 载 控 件 数 据
[Authorize]
public ActionResult LoadDataForRoomNumberCombobox ( )
{
var result = new List < object > ( ) ;
var currentUser = SysUserManager . Get ( User . Identity . Name ) ; //获取当前用户
//var sysUserHotel = SysUserHotelManager.Get(currentUser.ID, CurrentHotelID);//获取当前用户所在酒店
var currentGroup = GroupManager . Get ( currentUser . Group . ID ) ; //获取当前用户所在酒店的楼层
if ( currentUser . HotelID ! = CurrentHotelID ) //如果当前用户所在酒店跟当前所选酒店不一致,则获取该酒店下第一个楼层分组
{
currentGroup = GroupManager . LoadAll ( ) . FirstOrDefault ( r = > r . Parent = = null & & r . HotelID = = CurrentHotelID ) ;
}
DataTable table = HostManager . LoadRoomNumbers ( currentGroup , CurrentHotelID ) ;
foreach ( DataRow row in table . Rows )
{
result . Add ( new { ID = row [ "ID" ] , RoomNumber = row [ "RoomNumber" ] , RoomTypeID = row [ "RoomTypeID" ] } ) ;
}
result . Insert ( 0 , new { ID = 0 , RoomNumber = HttpContext . InnerLanguage ( "CheckAll" ) } ) ;
return Json ( result ) ;
}
[Authorize]
public ActionResult LoadRoomNumbersForCombobox ( )
{
var result = HostManager . LoadRoomNumbers ( ) . Select ( r = > new { RoomNumber = r } ) ;
return Json ( result ) ;
}
#endregion
[Authorize]
public ActionResult Read_TFTPSet_Array ( )
{
int hotelid = CurrentHotelID ;
using ( Stream stream = Request . InputStream )
{
stream . Position = 0 ;
using ( StreamReader reader = new StreamReader ( stream , Encoding . UTF8 ) )
{
string body = reader . ReadToEnd ( ) ;
var qqq = JsonConvert . DeserializeObject < List < Dictionary < string , string > > > ( body ) ;
foreach ( var item in qqq )
{
string hotelcode = item [ "hotelcode" ] . ToString ( ) ;
string hostnumber = item [ "hostnumber" ] . ToString ( ) ;
string mac = item [ "mac" ] . ToString ( ) ;
HostManager . Send_Query_Data ( new byte [ ] { } , hostnumber , mac ) ;
}
}
}
TFTP_Set TFG = TFTPManager . GetData ( hotelid , 111 ) ;
return Json ( new { IsSuccess = true , Message = TFG } ) ;
}
[Authorize]
public ActionResult TFTPSet_Execute ( )
{
try
{
int hotelid = CurrentHotelID ;
using ( Stream stream = Request . InputStream )
{
stream . Position = 0 ;
//AA 55 15 01 54 33 53 41 D9 10 00 FF FF FF FF //包头
//FF //日志开启状态
//FF: 全开 00: 全关
//DC FF //日志上报端口
//65500 18 00
////日志上报时间 24 小时
//17 //域名字符长度
////域名 BoonliveNAS.synology.me 42 6F 6F 6E 6C 69 76 65 4E 41 53 2E 73 79 6E 6F 6C 6F 67 79 2E 6D 65
//XX XX //CRC 根据实际计算结果为准
using ( StreamReader reader = new StreamReader ( stream , Encoding . UTF8 ) )
{
string body = reader . ReadToEnd ( ) ;
var item = JsonConvert . DeserializeObject < FTP_JSON > ( body ) ;
var lll = item . host_data ;
foreach ( var singleitem in lll )
{
List < byte > list = new List < byte > ( ) ;
if ( item . isenable )
{
list . Add ( 0xff ) ;
}
else
{
list . Add ( 0x00 ) ;
}
byte [ ] p1 = BitConverter . GetBytes ( item . port ) ;
list . AddRange ( p1 ) ;
byte [ ] p2 = BitConverter . GetBytes ( item . lasttime ) ;
list . AddRange ( p2 ) ;
byte [ ] bbb = Encoding . ASCII . GetBytes ( item . domain ) ;
byte len = ( byte ) bbb . Length ;
list . Add ( len ) ;
list . AddRange ( bbb ) ;
byte [ ] bba = list . ToArray ( ) ;
var hostnumber = singleitem . hostnumber ;
var mac = singleitem . mac ;
HostManager . Send_Setting_Data ( bba , hostnumber , mac ) ;
}
}
return Json ( new { IsSuccess = true , Message = "成功" } ) ;
}
}
catch ( Exception ex )
{
logger . Error ( ex . Message ) ;
logger . Error ( ex . StackTrace ) ;
return Json ( new { IsSuccess = false , Message = "保存失败" } ) ;
}
}
[Authorize()]
public ActionResult GetVersion ( List < int > idList )
{
foreach ( int id in idList )
{
Host host = HostManager . Get ( id ) ;
HostManager . SyncHostInfo ( host ) ;
}
return Json ( new { IsSuccess = true , Message = "成功" } ) ;
}
#endregion
/// <summary>
/// 生成主机编号
/// </summary>
/// <returns></returns>
[Authorize()]
public ActionResult GenericHOSTNUMBER ( )
{
try
{
//1001-默认酒店
string [ ] Name = CurrentHotelName . Split ( '-' ) ;
string code = Name [ 0 ] ;
NewDataSQL . GenericHOSTNUMBER ( CurrentHotelID . ToString ( ) , code ) ;
return Json ( new { IsSuccess = true , Message = "成功" } ) ;
}
catch ( Exception )
{
return Json ( new { IsSuccess = false , Message = "失败" } ) ;
}
}
/// <summary>
/// 发送B1
/// </summary>
/// <returns></returns>
[Authorize()]
public ActionResult Send_B1 ( string MAC , string HostNumber )
{
try
{
var hostList = HostManager . LoadAll ( CurrentHotelID ) ;
//[AA 55 15 00 54 33 53 41 B1 01 00 FF FF FF FF 00 00 00 00 1F 24 ]
var L1 = hostList . Select ( A = > new { HostNumber = A . HostNumber , MAC = A . MAC } ) ;
foreach ( var item in L1 )
{
HostModalManager . SendData ( item . HostNumber , item . MAC , new byte [ ] { } ) ;
}
return Json ( new { IsSuccess = true , Message = "成功" } ) ;
}
catch ( Exception )
{
return Json ( new { IsSuccess = false , Message = "失败" } ) ;
}
}
//{
// "baiduReqBody": "{\"header\":{\"namespace\":\"DuerOS.ConnectedHome.Discovery\",\"name\":\"DiscoverAppliancesRequest\",
//\"messageId\":\"6d6d6e14-8aee-473e-8c24-0d31ff9c17a2\",
//\"payloadVersion\":\"1\"},\
//"payload\":{\"accessToken\":\"pass\",\"openUid\":\"pass\",\"cuid\":\"pass\"}}",
// "deviceFactory": "携旅提供-客控逻辑标识",
// "forceUpdate": "1",
// "deleteFlag": "1",
// "hotelContract": "携旅提供-酒店逻辑标识",
// "macList": [
// "00:00:00:00:00:00"
// ]
//}
[Authorize()]
public ActionResult HaiXinFoundDevice ( )
{
try
{
HaiXinData h = new HaiXinData ( ) ;
CommonEntity . header h1 = new CommonEntity . header ( ) ;
h1 . @namespace = "DuerOS.ConnectedHome.Discovery" ;
h1 . name = "DiscoverAppliancesRequest" ;
h1 . messageId = Guid . NewGuid ( ) . ToString ( "N" ) ;
h1 . payloadVersion = "1" ;
CommonEntity . payload p = new CommonEntity . payload ( )
{
accessToken = "pass" ,
openUid = "pass" ,
cuid = "pass"
} ;
HaiXinHeader he = new HaiXinHeader ( ) { header = h1 , payload = p } ;
string str = JsonConvert . SerializeObject ( he ) ;
HaiXinData da = new HaiXinData ( ) ;
da . baiduReqBody = str ;
da . deviceFactory = "boonlive" ;
da . forceUpdate = "1" ;
da . deleteFlag = "1" ;
var Q = SysHotelManager . Get ( CurrentHotelID ) ;
da . hotelContract = Q . HeTongNumber ;
List < string > hosts = HostManager . LoadAll ( ) . Where ( A = > A . SysHotel . ID = = CurrentHotelID ) . Select ( A = > A . XiaoDuCUID ) . ToList ( ) ;
da . macList = hosts ;
var client1 = new RestClient ( "https://device-manage.ctlife.tv/" ) ;
var request1 = new RestRequest ( "api/extend/device/app/baiduSeriesFindDevice" , Method . POST ) ;
logger . Error ( "发送的数据为:" + JsonConvert . SerializeObject ( da ) ) ;
request1 . AddJsonBody ( da ) ;
var QQQ = client1 . Execute ( request1 ) ;
string ddd = QQQ . Content ;
logger . Error ( "发现设备返回的是:" + ddd ) ;
HttpStatusCode HHH = QQQ . StatusCode ;
if ( HHH = = HttpStatusCode . Created | | HHH = = HttpStatusCode . OK )
{
}
return Json ( new { IsSuccess = true , Message = "设备更新成功" } ) ;
}
catch ( Exception ex )
{
logger . Error ( "发现设备:" + ex . Message ) ;
return Json ( new { IsSuccess = false , Message = "失败" } ) ;
}
}
}
public class host_data
{
public string hostnumber { get ; set ; }
public string mac { get ; set ; }
}
public class FTP_JSON
{
public List < host_data > host_data { get ; set ; }
public bool isenable { get ; set ; }
public string domain { get ; set ; }
public UInt16 port { get ; set ; }
public UInt16 lasttime { get ; set ; }
}
public class ShengJiData
{
public object ID { get ; set ; }
public object Status { get ; set ; }
public string RoomNumber { get ; set ; }
public object MAC { get ; set ; }
public object Model { get ; set ; }
public object Launcher { get ; set ; }
public object Version { get ; set ; }
public object ConfigVersion { get ; set ; }
public object UpgradeStatus { get ; set ; }
public object UpgradeTime { get ; set ; }
public string ProgressBar { get ; set ; }
}
}