Files

1627 lines
83 KiB
C#
Raw Permalink Normal View History

2025-11-26 11:18:26 +08:00
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
}
}