Files
Web_HotelServices_Prod/WebUI/Controllers/publicApiController.cs
2025-11-26 11:18:26 +08:00

1627 lines
83 KiB
C#
Raw Permalink 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 DB_Server;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Models;
using Models.Models;
using Models.Models.LOGDB;
using SERVER;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.IO;
using System.Linq;
using System.Text;
using WebUI.Model;
using System.Security.Cryptography;
namespace WebUI.Controllers
{
/// <summary>
///
/// </summary>
public class publicApiController : Controller
{
private readonly HotelServiceContext _db;
/// <summary>
/// 注入服务
/// </summary>
/// <param name="db"></param>
public publicApiController(HotelServiceContext db)
{
_db = db;
}
#region mac地址获取房间类型 ()
///// <summary>
///// 通过mac地址获取房间类型 (暂无用)
///// </summary>
///// <param name="mac"></param>
///// <returns></returns>
//[HttpPost]
//[Route("OTApi/GetRoomType")]
//public IActionResult GetRoomType(string mac)
//{
// try
// {
// if (!string.IsNullOrEmpty(mac))
// {
// var data = (from a in _db.TBL_ROOM_BASIC_INFOS join b in _db.TBL_ROOM_TYPE_LISTS on a.ROOM_TYPE_OLD_ID equals b.ROOM_TYPE_OLD_ID
// where a.MAC == mac
// select b).FirstOrDefault();
// return Json(new
// {
// data,
// messages = "请求成功",
// Status = 200
// });
// }
// else
// return Json(new
// {
// messages = "mac为空值",
// Status = 50
// });
// }
// catch (System.Exception ex)
// {
// return Json(new
// {
// messages = ex.Message,
// Status = 404
// });
// }
//}
#endregion
#region API
/// <summary>
/// 同步API
/// </summary>
/// <returns></returns>
[HttpPost]
[Route("OTApi/SyncData")]
public IActionResult SyncData(string Pwd, int stepid=0)
{
if (Pwd == "fs%sd")
{
var res = SYNC_DATA.SYNC_DATA_ALL(stepid);
string erMsg = GlobalSyncLockTest.recentErrMsg;
//return Json(res);
if (res)
{
return Json(new
{
messages = "同步成功",
Status = true
});
}
else
{
return Json(new
{
messages = erMsg,
Status = false
});
}
}
else
return Json(new
{
messages = "同步密码错误",
Status = false
});
}
#endregion
#region id获取文件路径(使)
/// <summary>
/// 通过房间类型id获取文件路径
/// </summary>
/// <param name="RoomTypeid"></param>
/// <returns></returns>
//public IActionResult GainFile(int RoomTypeid)
//{
// FTPOperation operation = new FTPOperation();
// string hexPath2 = "";//App_Cfg_For_L2升级文件tfp路径
// string hexPath4 = ""; //App_Cfg_For_L4升级文件tfp路径
// string BinPath = ""; //二进制配置文件tfp路径
// try
// {
// if (RoomTypeid != 0)
// {
// //获取对应的房间类型表的中的字段
// var data = (
// from a in _db.TBL_ROOM_TYPE_LISTS
// join b in _db.TBL_HOTEL_BASIC_INFOS on a.HOTEL_OLD_ID equals b.IDOLD
// join c in _db.TBL_HOTEL_GROUP_INFOS on b.HOTEL_OLD_GROUP equals c.HOTEL_GROUP_OLD_ID
// where a.ROOM_TYPE_OLD_ID == RoomTypeid
// select new
// {
// a.CONFIG_BIN,
// a.App_Cfg_For_L2,
// a.App_Cfg_For_L4,
// a.HOTEL_OLD_ID,
// c.HOTEL_GROUP_NAME,
// b.HOTEL_NAME_CN,
// b.PROJECT_NUMBER,
// a.Hex_Code_For_L2,
// a.Hex_Code_For_L4,
// a.APPTYPE,
// a.Hex_Code_For_L2_MD5,
// a.Hex_Code_For_L4_MD5,
// a.App_Cfg_For_L2_MD5,
// a.App_Cfg_For_L4_MD5
// }).FirstOrDefault();
// //获取对应的酒店编号,酒店名称,酒店分组
// //var hotelgroup = (from a in _db.TBL_HOTEL_BASIC_INFOS join b in _db.TBL_HOTEL_GROUP_INFOS on a.HOTEL_OLD_GROUP equals b.HOTEL_GROUP_OLD_ID where a.IDOLD == data.HOTEL_OLD_ID select new { b.HOTEL_GROUP_NAME ,a.PROJECT_NUMBER ,a.HOTEL_NAME_CN }).FirstOrDefault();
// if (data == null)
// {
// return Json(new
// {
// messages = "未找到数据",
// Status = 100
// });
// }
// if (data.CONFIG_BIN != null)
// {
// //BinPath = @"BLV_Studio\Data\Config\" + data.HOTEL_GROUP_NAME + @"\" + data.PROJECT_NUMBER + "-" + data.HOTEL_NAME_CN + @"\" + data.CONFIG_BIN;
// BinPath = "ftp://auth.blv-oa.com:50/BLV_Studio/Data/Config/"+ data.HOTEL_GROUP_NAME+ @"/" + data.PROJECT_NUMBER+"-"+data.HOTEL_NAME_CN+ @"/" + data.CONFIG_BIN;
// }
// if (data.APPTYPE != "")
// {
// if (data.APPTYPE == "App_Cfg")
// {
// if (data.App_Cfg_For_L2 != null)
// {
// //校验MD5是否给修改过
// if (MD5Verify.getMD5Hash(operation.GetFile(data.App_Cfg_For_L2)) == data.App_Cfg_For_L2_MD5)
// {
// hexPath2 = "ftp://auth.blv-oa.com:50/BLV_Studio/Data/Firmware/" + data.App_Cfg_For_L2;
// }
// else
// {
// hexPath2 = "文件修改过对不上MD5";
// }
// }
// if (data.App_Cfg_For_L4 != null)
// {
// if (MD5Verify.getMD5Hash(operation.GetFile(data.App_Cfg_For_L4)) == data.App_Cfg_For_L4_MD5)
// {
// hexPath4 = "ftp://auth.blv-oa.com:50/BLV_Studio/Data/Firmware/" + data.App_Cfg_For_L4;
// }
// else
// {
// hexPath4 = "文件修改过对不上MD5";
// }
// }
// }
// else if (data.APPTYPE == "Hex_Code")
// {
// if (data.Hex_Code_For_L2 != null)
// {
// if (MD5Verify.getMD5Hash(operation.GetFile(data.Hex_Code_For_L2)) == data.Hex_Code_For_L2_MD5)
// {
// hexPath2 = "ftp://auth.blv-oa.com:50/BLV_Studio/Data/Firmware/" + data.Hex_Code_For_L2;
// }
// else
// {
// hexPath2 = "文件修改过对不上MD5";
// }
// }
// if (data.Hex_Code_For_L4 != null)
// {
// if (MD5Verify.getMD5Hash(operation.GetFile(data.Hex_Code_For_L4)) == data.Hex_Code_For_L4_MD5)
// {
// hexPath4 = "ftp://auth.blv-oa.com:50/BLV_Studio/Data/Firmware/" + data.Hex_Code_For_L4;
// }
// else
// {
// hexPath4 = "文件修改过对不上MD5";
// }
// }
// }
// }
// var Filedata = new
// {
// BinPath = BinPath,
// hexPath2 = hexPath2,
// hexPath4 = hexPath4,
// };
// return Json(new
// {
// Filedata,
// messages = "请求成功",
// Status = 200
// });
// }
// else
// return Json(new
// {
// messages = "参数为空值",
// Status = 50
// });
// }
// catch (System.Exception ex)
// {
// return Json(new
// {
// messages = ex.Message,
// Status = 404
// });
// }
//}
#endregion
#region
[HttpPost]
[Route("OTApi/GainFiles")]
public IActionResult GainFile1s(int RoomTypeid,int DataType)
{
FTPOperation operation = new FTPOperation();
HexFile hexFile = new HexFile();
// Luncher版本
string LuncherVer = "";
//数据主题
string data = "";
//状态
bool Status = false;
//最后获取的文件
List<string> FileName = new List<string> ();
//错误信息
string MrrMsg = null;
//机型
string ModelName = "";
//Hex起初地址
string HexStart = "";
//总数据
List<SendFileLuncher> datalist = new List<SendFileLuncher>();
//房型名称
string RoomTypeName = "";
//项目id
int hotelId=0;
//项目名称
string hotelName = "";
//文件数量
int FileCount = 0;
int coun = 0;
//写入日志
TBL_EQUIPMENTISSUELOG eqlog = new TBL_EQUIPMENTISSUELOG();
try
{
if (RoomTypeid != 0)
{
//获取对应的房间类型表的中的字段
var selectdata = (
from a in _db.TBL_ROOM_TYPE_LISTS
join b in _db.TBL_HOTEL_BASIC_INFOS on a.HOTEL_OLD_ID equals b.IDOLD
join c in _db.TBL_HOTEL_GROUP_INFOS on b.HOTEL_OLD_GROUP equals c.HOTEL_GROUP_OLD_ID
where a.ROOM_TYPE_OLD_ID == RoomTypeid
select new
{
a.ROOM_TYPE_NAME,
a.CONFIG_BIN,
a.App_Cfg_For_L2,
a.App_Cfg_For_L4,
a.HOTEL_OLD_ID,
c.HOTEL_GROUP_NAME,
b.HOTEL_NAME_CN,
b.PROJECT_NUMBER,
a.Hex_Code_For_L2,
a.Hex_Code_For_L4,
a.APPTYPE,
a.Hex_Code_For_L2_MD5,
a.Hex_Code_For_L4_MD5,
a.App_Cfg_For_L2_MD5,
a.App_Cfg_For_L4_MD5,
a.CONFIG_BIN_MD5
}).FirstOrDefault();
if (selectdata != null)
{
//房型名称
RoomTypeName = selectdata.ROOM_TYPE_NAME;
//项目名称
hotelName = selectdata.HOTEL_NAME_CN;
//项目id
hotelId = selectdata.HOTEL_OLD_ID;
//升级文件
if (DataType == 2)
{
//发送类
SendFileLuncher send = new SendFileLuncher();
if (selectdata.CONFIG_BIN != null)
{
//校验MD5
if (MD5Verify.getMD5Hash(operation.BytesToStream(operation.GetFile("Config/" + selectdata.HOTEL_GROUP_NAME + @"/" + selectdata.PROJECT_NUMBER + "-" + selectdata.HOTEL_NAME_CN + @"/" + selectdata.CONFIG_BIN))) == selectdata.CONFIG_BIN_MD5)
{
var sety = operation.GetFile("Config/" + selectdata.HOTEL_GROUP_NAME + @"/" + selectdata.PROJECT_NUMBER + "-" + selectdata.HOTEL_NAME_CN + @"/" + selectdata.CONFIG_BIN);
var btys= operation.ByteArrayToHexStr(sety);
var ssety= HexFile.Crc16(sety,4, sety.Length);
byte[] suz= new byte[10000];
var ssety2 = HexFile.NetCRC16_Data(sety, sety.Length, 4);
HexFile.StrToHex(suz ,sety, 100);
//找到文件头
if ((sety[0] == 0xCC) && (sety[1] == 0xC0))
{
int data_len = sety[3];
data_len <<= 8;
data_len |= sety[2];
if (data_len <= 1024) //文件长度超出范围,不处理
{
byte[] vaslen = new byte[data_len];
int crc_val = 0;
int temp_crc = 0;
Array.Copy(sety, vaslen, data_len);
crc_val = sety[5];
crc_val <<= 8;
crc_val |= sety[4];
temp_crc = HexFile.NetCRC16_Data(vaslen, data_len, 4);
if (temp_crc == crc_val)
{
/*数据校验成功*/
if (vaslen[10] == 0x01)
{
var zunsons = vaslen.Skip(157).Take(64).ToArray();
var seyu = operation.ByteArrayToHexStr(zunsons);
var setysssy = operation.UnHexs(seyu);
setysssy = setysssy.Replace("\0",null);
setysssy = setysssy.Replace("_","-");
ModelName = setysssy;
data = Convert.ToBase64String(sety);
FileName.Add(selectdata.CONFIG_BIN);
send.md5 = GetMd5FromString(data);
send.Filenumber = ++coun;
send.data = data;
send.filename = selectdata.CONFIG_BIN;
datalist.Add(send);
Status = true;
}
}
else
{
MrrMsg = "文件数据CRC校验失败,请检查文件是否正确";
}
}
}
else
{
MrrMsg = "配置文件头错误,请检查文件是否正确";
}
}
else
{
MrrMsg = "固件APP文件校验失败请检查网络或联系管理员";
}
}
else
{
MrrMsg = "“获取文件”失败所选房型没上传固件APP文件请检查网络或联系管理员";
}
}
//配置文件
else if (DataType == 1)
{
//判断是代码烧录还是工具烧录
if (selectdata.APPTYPE != "")
{
if (selectdata.APPTYPE == "App_Cfg")
{
if (string.IsNullOrEmpty(selectdata.App_Cfg_For_L2) && string.IsNullOrEmpty(selectdata.App_Cfg_For_L4))
{
MrrMsg = "“获取文件”失败所选房型没上传固件APP或配置文件请检查网络或联系管理员";
}
if (!string.IsNullOrEmpty(selectdata.App_Cfg_For_L2))
{
if (MD5Verify.getMD5Hash(operation.BytesToStream(operation.GetFile("Firmware/" + selectdata.App_Cfg_For_L2))) == selectdata.App_Cfg_For_L2_MD5)
{
if (MD5Verify.getMD5Hash(operation.BytesToStream(operation.GetFile("Config/" + selectdata.HOTEL_GROUP_NAME + @"/" + selectdata.PROJECT_NUMBER + "-" + selectdata.HOTEL_NAME_CN + @"/" + selectdata.CONFIG_BIN))) == selectdata.CONFIG_BIN_MD5)
{
var sety = operation.GetFile("Config/" + selectdata.HOTEL_GROUP_NAME + @"/" + selectdata.PROJECT_NUMBER + "-" + selectdata.HOTEL_NAME_CN + @"/" + selectdata.CONFIG_BIN);
var btys = operation.ByteArrayToHexStr(sety);
var ssety = HexFile.Crc16(sety, 4, sety.Length);
byte[] suz = new byte[10000];
var ssety2 = HexFile.NetCRC16_Data(sety, sety.Length, 4);
HexFile.StrToHex(suz, sety, 100);
//找到文件头
if ((sety[0] == 0xCC) && (sety[1] == 0xC0))
{
int data_len = sety[3];
data_len <<= 8;
data_len |= sety[2];
if (data_len <= 1024) //文件长度超出范围,不处理
{
byte[] vaslen = new byte[data_len];
int crc_val = 0;
int temp_crc = 0;
Array.Copy(sety, vaslen, data_len);
crc_val = sety[5];
crc_val <<= 8;
crc_val |= sety[4];
temp_crc = HexFile.NetCRC16_Data(vaslen, data_len, 4);
if (temp_crc == crc_val)
{
/*数据校验成功*/
if (vaslen[10] == 0x01)
{
var zunsons = vaslen.Skip(157).Take(64).ToArray();
var seyu = operation.ByteArrayToHexStr(zunsons);
var setysssy = operation.UnHexs(seyu);
setysssy = setysssy.Replace("\0", null);
setysssy = setysssy.Replace("_", "-");
ModelName = setysssy;
}
}
else
{
MrrMsg = "文件数据CRC校验失败,请检查文件是否正确";
}
}
}
else
{
MrrMsg = "获取机型错误,请检查文件是否正确";
}
}
else
{
MrrMsg = "获取机型失败";
}
FileName.Add(selectdata.App_Cfg_For_L2);
data = Convert.ToBase64String(hexFile.DealHexFile(operation.BytesToStream(operation.GetFile("Firmware/" + selectdata.App_Cfg_For_L2))));
SendFileLuncher send = new SendFileLuncher();
send.LuncherVer = "Launcher_C1F_V02";
if (selectdata.App_Cfg_For_L2.Substring(selectdata.App_Cfg_For_L2.Length - 4, 4) == ".hex")
{
send.filename = selectdata.App_Cfg_For_L2.Replace(".hex", ".bin");
}
else
{
send.filename = selectdata.App_Cfg_For_L2;
}
send.HexStart = hexFile.Get_HexStart_C1();
send.Filenumber = ++coun;
send.md5 = GetMd5FromString(data);
send.data = data;
datalist.Add(send);
Status = true;
}
else
{
MrrMsg = "配置文件校验失败,请检查网络或联系管理员 ";
}
}
if (!string.IsNullOrEmpty(selectdata.App_Cfg_For_L4))
{
if (MD5Verify.getMD5Hash(operation.BytesToStream(operation.GetFile("Firmware/" + selectdata.App_Cfg_For_L4))) == selectdata.App_Cfg_For_L4_MD5)
{
if (MD5Verify.getMD5Hash(operation.BytesToStream(operation.GetFile("Config/" + selectdata.HOTEL_GROUP_NAME + @"/" + selectdata.PROJECT_NUMBER + "-" + selectdata.HOTEL_NAME_CN + @"/" + selectdata.CONFIG_BIN))) == selectdata.CONFIG_BIN_MD5)
{
var sety = operation.GetFile("Config/" + selectdata.HOTEL_GROUP_NAME + @"/" + selectdata.PROJECT_NUMBER + "-" + selectdata.HOTEL_NAME_CN + @"/" + selectdata.CONFIG_BIN);
var btys = operation.ByteArrayToHexStr(sety);
var ssety = HexFile.Crc16(sety, 4, sety.Length);
byte[] suz = new byte[10000];
var ssety2 = HexFile.NetCRC16_Data(sety, sety.Length, 4);
HexFile.StrToHex(suz, sety, 100);
//找到文件头
if ((sety[0] == 0xCC) && (sety[1] == 0xC0))
{
int data_len = sety[3];
data_len <<= 8;
data_len |= sety[2];
if (data_len <= 1024) //文件长度超出范围,不处理
{
byte[] vaslen = new byte[data_len];
int crc_val = 0;
int temp_crc = 0;
Array.Copy(sety, vaslen, data_len);
crc_val = sety[5];
crc_val <<= 8;
crc_val |= sety[4];
temp_crc = HexFile.NetCRC16_Data(vaslen, data_len, 4);
if (temp_crc == crc_val)
{
/*数据校验成功*/
if (vaslen[10] == 0x01)
{
var zunsons = vaslen.Skip(157).Take(64).ToArray();
var seyu = operation.ByteArrayToHexStr(zunsons);
var setysssy = operation.UnHexs(seyu);
setysssy = setysssy.Replace("\0", null);
setysssy = setysssy.Replace("_", "-");
ModelName = setysssy;
}
}
else
{
MrrMsg = "文件数据CRC校验失败,请检查文件是否正确";
}
}
}
else
{
MrrMsg = "获取机型错误,请检查文件是否正确";
}
}
else
{
MrrMsg = "获取机型失败";
}
FileName.Add(selectdata.App_Cfg_For_L4);
data = Convert.ToBase64String(hexFile.DealHexFile(operation.BytesToStream(operation.GetFile("Firmware/" + selectdata.App_Cfg_For_L4))));
SendFileLuncher send = new SendFileLuncher();
send.LuncherVer = "Launcher_C1F_V04";
if (selectdata.App_Cfg_For_L4.Substring(selectdata.App_Cfg_For_L4.Length - 4, 4) == ".hex")
{
send.filename = selectdata.App_Cfg_For_L4.Replace(".hex", ".bin");
}
else
{
send.filename = selectdata.App_Cfg_For_L4;
}
send.HexStart = hexFile.Get_HexStart_C1();
send.Filenumber = ++coun;
send.data = data;
send.md5 = GetMd5FromString(data);
datalist.Add(send);
Status = true;
}
else
{
MrrMsg = "配置文件校验失败,请检查网络或联系管理员";
}
}
}
else if (selectdata.APPTYPE == "Hex_Code")
{
if (string.IsNullOrEmpty(selectdata.Hex_Code_For_L2) && string.IsNullOrEmpty(selectdata.Hex_Code_For_L4))
{
MrrMsg = "获取文件”失败所选房型没上传固件APP或配置文件请检查网络或联系管理员";
}
else
{
if (!string.IsNullOrEmpty(selectdata.Hex_Code_For_L2))
{
if (MD5Verify.getMD5Hash(operation.BytesToStream(operation.GetFile("Firmware/" + selectdata.Hex_Code_For_L2))) == selectdata.Hex_Code_For_L2_MD5)
{
FileName.Add(selectdata.Hex_Code_For_L2);
data = Convert.ToBase64String(hexFile.DealHexFile(operation.BytesToStream(operation.GetFile("Firmware/" + selectdata.Hex_Code_For_L2))));
ModelName = hexFile.GetHexInfo();
SendFileLuncher send = new SendFileLuncher();
send.LuncherVer = "Launcher_C1F_V02";
if (selectdata.Hex_Code_For_L2.Substring(selectdata.Hex_Code_For_L2.Length - 4, 4) == ".hex")
{
send.filename = selectdata.Hex_Code_For_L2.Replace(".hex", ".bin");
}
else
{
send.filename = selectdata.Hex_Code_For_L2;
}
send.HexStart = hexFile.Get_HexStart_C1();
send.Filenumber = ++coun;
send.data = data;
send.md5 = GetMd5FromString(data);
datalist.Add(send);
Status = true;
}
else
{
MrrMsg = "配置文件校验失败,请检查网络或联系管理员";
}
}
if (!string.IsNullOrEmpty(selectdata.Hex_Code_For_L4))
{
if (MD5Verify.getMD5Hash(operation.BytesToStream(operation.GetFile("Firmware/" + selectdata.Hex_Code_For_L4))) == selectdata.Hex_Code_For_L4_MD5)
{
FileName.Add(selectdata.Hex_Code_For_L4);
data = Convert.ToBase64String(hexFile.DealHexFile(operation.BytesToStream(operation.GetFile("Firmware/" + selectdata.Hex_Code_For_L4))));
ModelName = hexFile.GetHexInfo();
SendFileLuncher send = new SendFileLuncher();
send.LuncherVer = "Launcher_C1F_V04";
if (selectdata.Hex_Code_For_L4.Substring(selectdata.Hex_Code_For_L4.Length - 4, 4) == ".hex")
{
send.filename = selectdata.Hex_Code_For_L4.Replace(".hex", ".bin");
}
else
{
send.filename = selectdata.Hex_Code_For_L4;
}
send.Filenumber = ++coun;
send.HexStart = hexFile.Get_HexStart_C1();
send.data = data;
send.md5 = GetMd5FromString(data);
datalist.Add(send);
Status = true;
}
else
{
MrrMsg = "配置文件校验失败,请检查网络或联系管理员";
}
}
}
}
}
else
{
MrrMsg = "无烧录模式,";
}
}
FileCount = datalist.Count;
string sum = "";
//写入日志
eqlog.CreationTime = DateTime.Now;
eqlog.Succeed = Status;
foreach (var item in FileName)
{
sum +=item+"/";
}
eqlog.Content = "房间类型id是:" + RoomTypeid + ",升级类型是:" + DataType + ",luncher版本是:" + LuncherVer + ",升级文件名:" + sum + ",机型是:" + ModelName;
_db.TBL_EQUIPMENTISSUELOGs.AddRange(eqlog);
_db.SaveChanges();
}
else
{
return Json(new
{
RoomTypeid,
RoomTypeName,
hotelId,
hotelName,
Status = false,
ModelName,
//FileName,
FileCount,
datalist,
MrrMsg = "未找到对应的房型,请检查网络或联系管理员"
});
}
}
//if (!string.IsNullOrEmpty(FileName))
//{
// if (FileName.Substring(FileName.Length - 4, 4) == ".hex")
// {
// FileName = FileName.Replace(".hex", ".bin");
// }
//}
}
catch (Exception ex)
{
return Json(new
{
RoomTypeid,
RoomTypeName,
hotelId,
hotelName,
Status =false,
ModelName,
//FileName,
FileCount,
datalist,
MrrMsg = ex.Message
});
}
return Json(new
{
RoomTypeid,
RoomTypeName,
hotelId,
hotelName,
Status,
ModelName,
//FileName,
FileCount,
datalist,
MrrMsg
});
}
/// <summary>
/// 获取文件名
/// </summary>
/// <param name="RoomTypeid"></param>
/// <param name="DataType"></param>
/// <returns></returns>
[HttpPost]
[Route("OTApi/GainFileName")]
public IActionResult GainFileName(int RoomTypeid,int DataType)
{
FTPOperation operation = new FTPOperation();
HexFile hexFile = new HexFile();
// Luncher版本
string LuncherVer = "";
//数据主题
string data = "";
//状态
bool Status = false;
//最后获取的文件
List<string> FileName = new List<string> ();
//错误信息
string MrrMsg = null;
//机型
string ModelName = "";
//Hex起初地址
string HexStart = "";
//总数据
List<SendFileLuncher> datalist = new List<SendFileLuncher>();
//房型名称
string RoomTypeName = "";
//项目id
int hotelId=0;
//项目名称
string hotelName = "";
//文件数量
int FileCount = 0;
int coun = 0;
//写入日志
TBL_EQUIPMENTISSUELOG eqlog = new TBL_EQUIPMENTISSUELOG();
try
{
if (RoomTypeid != 0)
{
//获取对应的房间类型表的中的字段
var selectdata = (
from a in _db.TBL_ROOM_TYPE_LISTS
join b in _db.TBL_HOTEL_BASIC_INFOS on a.HOTEL_OLD_ID equals b.IDOLD
join c in _db.TBL_HOTEL_GROUP_INFOS on b.HOTEL_OLD_GROUP equals c.HOTEL_GROUP_OLD_ID
where a.ROOM_TYPE_OLD_ID == RoomTypeid
select new
{
a.ROOM_TYPE_NAME,
a.CONFIG_BIN,
a.App_Cfg_For_L2,
a.App_Cfg_For_L4,
a.HOTEL_OLD_ID,
c.HOTEL_GROUP_NAME,
b.HOTEL_NAME_CN,
b.PROJECT_NUMBER,
a.Hex_Code_For_L2,
a.Hex_Code_For_L4,
a.APPTYPE,
a.Hex_Code_For_L2_MD5,
a.Hex_Code_For_L4_MD5,
a.App_Cfg_For_L2_MD5,
a.App_Cfg_For_L4_MD5,
a.CONFIG_BIN_MD5
}).FirstOrDefault();
if (selectdata != null)
{
//房型名称
RoomTypeName = selectdata.ROOM_TYPE_NAME;
//项目名称
hotelName = selectdata.HOTEL_NAME_CN;
//项目id
hotelId = selectdata.HOTEL_OLD_ID;
//升级文件
if (DataType == 2)
{
//发送类
SendFileLuncher send = new SendFileLuncher();
if (selectdata.CONFIG_BIN != null)
{
//校验MD5
if (MD5Verify.getMD5Hash(operation.BytesToStream(operation.GetFile("Config/" + selectdata.HOTEL_GROUP_NAME + @"/" + selectdata.PROJECT_NUMBER + "-" + selectdata.HOTEL_NAME_CN + @"/" + selectdata.CONFIG_BIN))) == selectdata.CONFIG_BIN_MD5)
{
var sety = operation.GetFile("Config/" + selectdata.HOTEL_GROUP_NAME + @"/" + selectdata.PROJECT_NUMBER + "-" + selectdata.HOTEL_NAME_CN + @"/" + selectdata.CONFIG_BIN);
var btys= operation.ByteArrayToHexStr(sety);
var ssety= HexFile.Crc16(sety,4, sety.Length);
byte[] suz= new byte[10000];
var ssety2 = HexFile.NetCRC16_Data(sety, sety.Length, 4);
HexFile.StrToHex(suz ,sety, 100);
//找到文件头
if ((sety[0] == 0xCC) && (sety[1] == 0xC0))
{
int data_len = sety[3];
data_len <<= 8;
data_len |= sety[2];
if (data_len <= 1024) //文件长度超出范围,不处理
{
byte[] vaslen = new byte[data_len];
int crc_val = 0;
int temp_crc = 0;
Array.Copy(sety, vaslen, data_len);
crc_val = sety[5];
crc_val <<= 8;
crc_val |= sety[4];
temp_crc = HexFile.NetCRC16_Data(vaslen, data_len, 4);
if (temp_crc == crc_val)
{
/*数据校验成功*/
if (vaslen[10] == 0x01)
{
var zunsons = vaslen.Skip(157).Take(64).ToArray();
var seyu = operation.ByteArrayToHexStr(zunsons);
var setysssy = operation.UnHexs(seyu);
setysssy = setysssy.Replace("\0",null);
setysssy = setysssy.Replace("_","-");
ModelName = setysssy;
//data = Convert.ToBase64String(sety);
FileName.Add(selectdata.CONFIG_BIN);
//send.md5 = GetMd5FromString(data);
send.Filenumber = ++coun;
send.filename = selectdata.CONFIG_BIN;
datalist.Add(send);
Status = true;
}
}
else
{
MrrMsg = "文件数据CRC校验失败,请检查文件是否正确";
}
}
}
else
{
MrrMsg = "配置文件头错误,请检查文件是否正确";
}
}
else
{
MrrMsg = "固件APP文件校验失败请检查网络或联系管理员";
}
}
else
{
MrrMsg = "“获取文件”失败所选房型没上传固件APP文件请检查网络或联系管理员";
}
}
//配置文件
else if (DataType == 1)
{
//判断是代码烧录还是工具烧录
if (selectdata.APPTYPE != "")
{
if (selectdata.APPTYPE == "App_Cfg")
{
if (string.IsNullOrEmpty(selectdata.App_Cfg_For_L2) && string.IsNullOrEmpty(selectdata.App_Cfg_For_L4))
{
MrrMsg = "“获取文件”失败所选房型没上传固件APP或配置文件请检查网络或联系管理员";
}
if (!string.IsNullOrEmpty(selectdata.App_Cfg_For_L2))
{
if (MD5Verify.getMD5Hash(operation.BytesToStream(operation.GetFile("Firmware/" + selectdata.App_Cfg_For_L2))) == selectdata.App_Cfg_For_L2_MD5)
{
if (MD5Verify.getMD5Hash(operation.BytesToStream(operation.GetFile("Config/" + selectdata.HOTEL_GROUP_NAME + @"/" + selectdata.PROJECT_NUMBER + "-" + selectdata.HOTEL_NAME_CN + @"/" + selectdata.CONFIG_BIN))) == selectdata.CONFIG_BIN_MD5)
{
var sety = operation.GetFile("Config/" + selectdata.HOTEL_GROUP_NAME + @"/" + selectdata.PROJECT_NUMBER + "-" + selectdata.HOTEL_NAME_CN + @"/" + selectdata.CONFIG_BIN);
var btys = operation.ByteArrayToHexStr(sety);
var ssety = HexFile.Crc16(sety, 4, sety.Length);
byte[] suz = new byte[10000];
var ssety2 = HexFile.NetCRC16_Data(sety, sety.Length, 4);
HexFile.StrToHex(suz, sety, 100);
//找到文件头
if ((sety[0] == 0xCC) && (sety[1] == 0xC0))
{
int data_len = sety[3];
data_len <<= 8;
data_len |= sety[2];
if (data_len <= 1024) //文件长度超出范围,不处理
{
byte[] vaslen = new byte[data_len];
int crc_val = 0;
int temp_crc = 0;
Array.Copy(sety, vaslen, data_len);
crc_val = sety[5];
crc_val <<= 8;
crc_val |= sety[4];
temp_crc = HexFile.NetCRC16_Data(vaslen, data_len, 4);
if (temp_crc == crc_val)
{
/*数据校验成功*/
if (vaslen[10] == 0x01)
{
var zunsons = vaslen.Skip(157).Take(64).ToArray();
var seyu = operation.ByteArrayToHexStr(zunsons);
var setysssy = operation.UnHexs(seyu);
setysssy = setysssy.Replace("\0", null);
setysssy = setysssy.Replace("_", "-");
ModelName = setysssy;
}
}
else
{
MrrMsg = "文件数据CRC校验失败,请检查文件是否正确";
}
}
}
else
{
MrrMsg = "获取机型错误,请检查文件是否正确";
}
}
else
{
MrrMsg = "获取机型失败";
}
FileName.Add(selectdata.App_Cfg_For_L2);
//data = Convert.ToBase64String(hexFile.DealHexFile(operation.BytesToStream(operation.GetFile("Firmware/" + selectdata.App_Cfg_For_L2))));
SendFileLuncher send = new SendFileLuncher();
send.LuncherVer = "Launcher_C1F_V02";
if (selectdata.App_Cfg_For_L2.Substring(selectdata.App_Cfg_For_L2.Length - 4, 4) == ".hex")
{
send.filename = selectdata.App_Cfg_For_L2.Replace(".hex", ".bin");
}
else
{
send.filename = selectdata.App_Cfg_For_L2;
}
send.HexStart = hexFile.Get_HexStart_C1();
send.Filenumber = ++coun;
//send.md5 = GetMd5FromString(data);
datalist.Add(send);
Status = true;
}
else
{
MrrMsg = "配置文件校验失败,请检查网络或联系管理员 ";
}
}
if (!string.IsNullOrEmpty(selectdata.App_Cfg_For_L4))
{
if (MD5Verify.getMD5Hash(operation.BytesToStream(operation.GetFile("Firmware/" + selectdata.App_Cfg_For_L4))) == selectdata.App_Cfg_For_L4_MD5)
{
if (MD5Verify.getMD5Hash(operation.BytesToStream(operation.GetFile("Config/" + selectdata.HOTEL_GROUP_NAME + @"/" + selectdata.PROJECT_NUMBER + "-" + selectdata.HOTEL_NAME_CN + @"/" + selectdata.CONFIG_BIN))) == selectdata.CONFIG_BIN_MD5)
{
var sety = operation.GetFile("Config/" + selectdata.HOTEL_GROUP_NAME + @"/" + selectdata.PROJECT_NUMBER + "-" + selectdata.HOTEL_NAME_CN + @"/" + selectdata.CONFIG_BIN);
var btys = operation.ByteArrayToHexStr(sety);
var ssety = HexFile.Crc16(sety, 4, sety.Length);
byte[] suz = new byte[10000];
var ssety2 = HexFile.NetCRC16_Data(sety, sety.Length, 4);
HexFile.StrToHex(suz, sety, 100);
//找到文件头
if ((sety[0] == 0xCC) && (sety[1] == 0xC0))
{
int data_len = sety[3];
data_len <<= 8;
data_len |= sety[2];
if (data_len <= 1024) //文件长度超出范围,不处理
{
byte[] vaslen = new byte[data_len];
int crc_val = 0;
int temp_crc = 0;
Array.Copy(sety, vaslen, data_len);
crc_val = sety[5];
crc_val <<= 8;
crc_val |= sety[4];
temp_crc = HexFile.NetCRC16_Data(vaslen, data_len, 4);
if (temp_crc == crc_val)
{
/*数据校验成功*/
if (vaslen[10] == 0x01)
{
var zunsons = vaslen.Skip(157).Take(64).ToArray();
var seyu = operation.ByteArrayToHexStr(zunsons);
var setysssy = operation.UnHexs(seyu);
setysssy = setysssy.Replace("\0", null);
setysssy = setysssy.Replace("_", "-");
ModelName = setysssy;
}
}
else
{
MrrMsg = "文件数据CRC校验失败,请检查文件是否正确";
}
}
}
else
{
MrrMsg = "获取机型错误,请检查文件是否正确";
}
}
else
{
MrrMsg = "获取机型失败";
}
FileName.Add(selectdata.App_Cfg_For_L4);
//data = Convert.ToBase64String(hexFile.DealHexFile(operation.BytesToStream(operation.GetFile("Firmware/" + selectdata.App_Cfg_For_L4))));
SendFileLuncher send = new SendFileLuncher();
send.LuncherVer = "Launcher_C1F_V04";
if (selectdata.App_Cfg_For_L4.Substring(selectdata.App_Cfg_For_L4.Length - 4, 4) == ".hex")
{
send.filename = selectdata.App_Cfg_For_L4.Replace(".hex", ".bin");
}
else
{
send.filename = selectdata.App_Cfg_For_L4;
}
send.HexStart = hexFile.Get_HexStart_C1();
send.Filenumber = ++coun;
//send.md5 = GetMd5FromString(data);
datalist.Add(send);
Status = true;
}
else
{
MrrMsg = "配置文件校验失败,请检查网络或联系管理员";
}
}
}
else if (selectdata.APPTYPE == "Hex_Code")
{
if (string.IsNullOrEmpty(selectdata.Hex_Code_For_L2) && string.IsNullOrEmpty(selectdata.Hex_Code_For_L4))
{
MrrMsg = "获取文件”失败所选房型没上传固件APP或配置文件请检查网络或联系管理员";
}
else
{
if (!string.IsNullOrEmpty(selectdata.Hex_Code_For_L2))
{
if (MD5Verify.getMD5Hash(operation.BytesToStream(operation.GetFile("Firmware/" + selectdata.Hex_Code_For_L2))) == selectdata.Hex_Code_For_L2_MD5)
{
FileName.Add(selectdata.Hex_Code_For_L2);
//data = Convert.ToBase64String(hexFile.DealHexFile(operation.BytesToStream(operation.GetFile("Firmware/" + selectdata.Hex_Code_For_L2))));
ModelName = hexFile.GetHexInfo();
SendFileLuncher send = new SendFileLuncher();
send.LuncherVer = "Launcher_C1F_V02";
if (selectdata.Hex_Code_For_L2.Substring(selectdata.Hex_Code_For_L2.Length - 4, 4) == ".hex")
{
send.filename = selectdata.Hex_Code_For_L2.Replace(".hex", ".bin");
}
else
{
send.filename = selectdata.Hex_Code_For_L2;
}
send.HexStart = hexFile.Get_HexStart_C1();
send.Filenumber = ++coun;
//send.md5 = GetMd5FromString(data);
datalist.Add(send);
Status = true;
}
else
{
MrrMsg = "配置文件校验失败,请检查网络或联系管理员";
}
}
if (!string.IsNullOrEmpty(selectdata.Hex_Code_For_L4))
{
if (MD5Verify.getMD5Hash(operation.BytesToStream(operation.GetFile("Firmware/" + selectdata.Hex_Code_For_L4))) == selectdata.Hex_Code_For_L4_MD5)
{
FileName.Add(selectdata.Hex_Code_For_L4);
//data = Convert.ToBase64String(hexFile.DealHexFile(operation.BytesToStream(operation.GetFile("Firmware/" + selectdata.Hex_Code_For_L4))));
ModelName = hexFile.GetHexInfo();
SendFileLuncher send = new SendFileLuncher();
send.LuncherVer = "Launcher_C1F_V04";
if (selectdata.Hex_Code_For_L4.Substring(selectdata.Hex_Code_For_L4.Length - 4, 4) == ".hex")
{
send.filename = selectdata.Hex_Code_For_L4.Replace(".hex", ".bin");
}
else
{
send.filename = selectdata.Hex_Code_For_L4;
}
send.Filenumber = ++coun;
send.HexStart = hexFile.Get_HexStart_C1();
//send.md5 = GetMd5FromString(data);
datalist.Add(send);
Status = true;
}
else
{
MrrMsg = "配置文件校验失败,请检查网络或联系管理员";
}
}
}
}
}
else
{
MrrMsg = "无烧录模式,";
}
}
FileCount = datalist.Count;
string sum = "";
//写入日志
eqlog.CreationTime = DateTime.Now;
eqlog.Succeed = Status;
foreach (var item in FileName)
{
sum +=item+"/";
}
eqlog.Content = "房间类型id是:" + RoomTypeid + ",升级类型是:" + DataType + ",luncher版本是:" + LuncherVer + ",升级文件名:" + sum + ",机型是:" + ModelName;
_db.TBL_EQUIPMENTISSUELOGs.AddRange(eqlog);
_db.SaveChanges();
}
else
{
return Json(new
{
RoomTypeid,
RoomTypeName,
hotelId,
hotelName,
Status = false,
ModelName,
FileCount,
datalist,
MrrMsg = "未找到对应的房型,请检查网络或联系管理员"
});
}
}
}
catch (Exception ex)
{
return Json(new
{
RoomTypeid,
RoomTypeName,
hotelId,
hotelName,
Status =false,
ModelName,
FileCount,
datalist,
MrrMsg = ex.Message
});
}
return Json(new
{
RoomTypeid,
RoomTypeName,
hotelId,
hotelName,
Status,
ModelName,
FileCount,
datalist,
MrrMsg
});
}
#endregion
/// <summary>
/// 生成字符串的MD5码
/// </summary>
/// <param name="sInput"></param>
/// <returns></returns>
public static string GetMd5FromString(string sInput)
{
var lstData = Encoding.GetEncoding("utf-8").GetBytes(sInput);
var lstHash = new MD5CryptoServiceProvider().ComputeHash(lstData);
var result = new StringBuilder(32);
for (int i = 0; i < lstHash.Length; i++)
{
result.Append(lstHash[i].ToString("x2").ToUpper());
}
return result.ToString();
}
#region
[HttpPost]
[Route("OTApi/GainFile")]
public IActionResult GainFile1(int RoomTypeid, int DataType, string LuncherVer)
{
if (string.IsNullOrEmpty(LuncherVer))
{
LuncherVer = "L02";
}
FTPOperation operation = new FTPOperation();
HexFile hexFile = new HexFile();
//数据主题
string data = "";
//状态
bool Status = false;
//最后获取的文件
string FileName = "";
//错误信息
string MrrMsg = null;
//机型
string ModelName = "";
//Hex起初地址
string HexStart = "";
//
//写入日志
TBL_EQUIPMENTISSUELOG eqlog = new TBL_EQUIPMENTISSUELOG();
try
{
if (RoomTypeid != 0)
{
//获取对应的房间类型表的中的字段
var selectdata = (
from a in _db.TBL_ROOM_TYPE_LISTS
join b in _db.TBL_HOTEL_BASIC_INFOS on a.HOTEL_OLD_ID equals b.IDOLD
join c in _db.TBL_HOTEL_GROUP_INFOS on b.HOTEL_OLD_GROUP equals c.HOTEL_GROUP_OLD_ID
where a.ROOM_TYPE_OLD_ID == RoomTypeid
select new
{
a.CONFIG_BIN,
a.App_Cfg_For_L2,
a.App_Cfg_For_L4,
a.HOTEL_OLD_ID,
c.HOTEL_GROUP_NAME,
b.HOTEL_NAME_CN,
b.PROJECT_NUMBER,
a.Hex_Code_For_L2,
a.Hex_Code_For_L4,
a.APPTYPE,
a.Hex_Code_For_L2_MD5,
a.Hex_Code_For_L4_MD5,
a.App_Cfg_For_L2_MD5,
a.App_Cfg_For_L4_MD5,
a.CONFIG_BIN_MD5
}).FirstOrDefault();
//升级文件
if (DataType == 2)
{
if (selectdata.CONFIG_BIN != null)
{
//校验MD5
if (MD5Verify.getMD5Hash(operation.BytesToStream(operation.GetFile("Config/" + selectdata.HOTEL_GROUP_NAME + @"/" + selectdata.PROJECT_NUMBER + "-" + selectdata.HOTEL_NAME_CN + @"/" + selectdata.CONFIG_BIN))) == selectdata.CONFIG_BIN_MD5)
{
var sety = operation.GetFile("Config/" + selectdata.HOTEL_GROUP_NAME + @"/" + selectdata.PROJECT_NUMBER + "-" + selectdata.HOTEL_NAME_CN + @"/" + selectdata.CONFIG_BIN);
data = Convert.ToBase64String(sety);
FileName = selectdata.CONFIG_BIN;
Status = true;
}
else
{
MrrMsg = "配置dat文件校验失败";
}
}
else
{
MrrMsg = "无配置文件";
}
}
//配置文件
else if (DataType == 1)
{
string lum;
if (!string.IsNullOrEmpty(LuncherVer))
{
lum = LuncherVer.Substring(0, 1) + LuncherVer.Substring(LuncherVer.Length - 2, 2);
if (lum == "L02" || lum == "L04")
{
//判断是代码烧录还是工具烧录
if (selectdata.APPTYPE != "")
{
if (selectdata.APPTYPE == "App_Cfg")
{
switch (lum)
{
case "L02":
if (!string.IsNullOrEmpty(selectdata.App_Cfg_For_L2))
{
if (MD5Verify.getMD5Hash(operation.BytesToStream(operation.GetFile("Firmware/" + selectdata.App_Cfg_For_L2))) == selectdata.App_Cfg_For_L2_MD5)
{
FileName = selectdata.App_Cfg_For_L2;
data = Convert.ToBase64String(hexFile.DealHexFile(operation.BytesToStream(operation.GetFile("Firmware/" + selectdata.App_Cfg_For_L2))));
ModelName = hexFile.GetHexInfo();
HexStart = hexFile.Get_HexStart_C1();
Status = true;
}
else
{
MrrMsg = "配置App_Cfg_L2文件校验失败";
}
}
else
{
MrrMsg = "无App_Cfg_L2文件";
}
break;
case "L04":
if (!string.IsNullOrEmpty(selectdata.App_Cfg_For_L4))
{
if (MD5Verify.getMD5Hash(operation.BytesToStream(operation.GetFile("Firmware/" + selectdata.App_Cfg_For_L4))) == selectdata.App_Cfg_For_L4_MD5)
{
FileName = selectdata.App_Cfg_For_L4;
data = Convert.ToBase64String(hexFile.DealHexFile(operation.BytesToStream(operation.GetFile("Firmware/" + selectdata.App_Cfg_For_L4))));
ModelName = hexFile.GetHexInfo();
HexStart = hexFile.Get_HexStart_C1();
Status = true;
}
else
{
MrrMsg = "配置App_Cfg_L4文件校验失败";
}
}
else
{
MrrMsg = "无App_Cfg_L4文件";
}
break;
}
}
else if (selectdata.APPTYPE == "Hex_Code")
{
switch (lum)
{
case "L02":
if (!string.IsNullOrEmpty(selectdata.Hex_Code_For_L2))
{
if (MD5Verify.getMD5Hash(operation.BytesToStream(operation.GetFile("Firmware/" + selectdata.Hex_Code_For_L2))) == selectdata.Hex_Code_For_L2_MD5)
{
FileName = selectdata.Hex_Code_For_L2;
data = Convert.ToBase64String(hexFile.DealHexFile(operation.BytesToStream(operation.GetFile("Firmware/" + selectdata.Hex_Code_For_L2))));
ModelName = hexFile.GetHexInfo();
HexStart = hexFile.Get_HexStart_C1();
Status = true;
}
else
{
MrrMsg = "配置Hex_Code_For_L2文件校验失败";
}
}
else
{
MrrMsg = "无Hex_Code_For_L2文件";
}
break;
case "L04":
if (!string.IsNullOrEmpty(selectdata.Hex_Code_For_L4))
{
if (MD5Verify.getMD5Hash(operation.BytesToStream(operation.GetFile("Firmware/" + selectdata.Hex_Code_For_L4))) == selectdata.Hex_Code_For_L4_MD5)
{
FileName = selectdata.Hex_Code_For_L4;
data = Convert.ToBase64String(hexFile.DealHexFile(operation.BytesToStream(operation.GetFile("Firmware/" + selectdata.Hex_Code_For_L4))));
ModelName = hexFile.GetHexInfo();
HexStart = hexFile.Get_HexStart_C1();
Status = true;
}
else
{
MrrMsg = "配置Hex_Code_For_L4文件校验失败";
}
}
else
{
MrrMsg = "无Hex_Code_For_L4文件";
}
break;
}
}
}
else
{
MrrMsg = "无烧录模式";
}
}
else
{
MrrMsg = "luncher未找到对应的升级文件";
}
}
}
}
//写入日志
eqlog.CreationTime = DateTime.Now;
eqlog.Succeed = Status;
eqlog.Content = "房间类型id是:" + RoomTypeid + ",升级类型是:" + DataType + ",luncher版本是:" + LuncherVer + ",升级文件名:" + FileName + ",机型是:" + ModelName;
_db.TBL_EQUIPMENTISSUELOGs.AddRange(eqlog);
_db.SaveChanges();
if (!string.IsNullOrEmpty(FileName))
{
if (FileName.Substring(FileName.Length - 4, 4) == ".hex")
{
FileName = FileName.Replace(".hex", ".bin");
}
}
}
catch (Exception ex)
{
if (!string.IsNullOrEmpty(FileName))
{
if (FileName.Substring(FileName.Length - 4, 4) == ".hex")
{
FileName = FileName.Replace(".hex", ".bin");
}
}
return Json(new
{
data,
Status = false,
ModelName,
HexStart,
FileName,
MrrMsg = ex.Message
});
}
return Json(new
{
data,
Status,
ModelName,
HexStart,
FileName,
MrrMsg
});
}
#endregion
#region
/// <summary>
/// 同步选住的数据
/// </summary>
/// <returns></returns>
///
[HttpPost]
[Route("OTApi/RoomChange")]
public IActionResult RoomChange(string projectCode,string roomNumber,string roomLayout,string projectName)
{
var db = new DbHelperSQL(DbHelperSQL.DBSel.BLV_RCU_DB);
if (!string.IsNullOrEmpty(projectCode)&& !string.IsNullOrEmpty(roomNumber)&& !string.IsNullOrEmpty(roomLayout)&&!string.IsNullOrEmpty(projectName))
{
var selectdata = (
from a in _db.TBL_HOTEL_BASIC_INFOS where a.HOTEL_NAME_CN == projectName
select new
{
a.HOTEL_ID
}).FirstOrDefault();
var roomdata = (
from a in _db.TBL_ROOM_TYPE_LISTS
where a.ROOM_TYPE_NAME == roomNumber
select new
{
a.ROOM_TYPE_ID
}).FirstOrDefault();
if (selectdata == null)
{
if (db.ExecuteSql($"INSERT INTO tbl_hotel_basic_info(PROJECT_NUMBER, HOTEL_NAME_CN, KEY_ID, IsApprove, HOTEL_GROUP, VALID_STATUS,`STATUS`, SORT, IDOLD, IsDel, HOTEL_OLD_GROUP, BRANDID) VALUES('{projectCode}', '{projectName}', 0, 1, 0, 0, 2, 0, 0, 0, 0, 2); ") != -1)
{
}
}
}
else
{
return Json(new
{
retmsg="参数不可为空",
retcode="404"
});
}
return Json("");
}
#endregion
}
}