Files
Web_CRICS_Server_VS2010_Prod/WebSite/Controllers/MobileAppController.cs
2025-12-11 09:17:16 +08:00

519 lines
19 KiB
C#

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Service;
using Domain;
namespace WebSite.Controllers
{
public class MobileAppController : BaseController
{
private const int AUTHORITY_MobileApp = 33;
public IAppMenuManager AppMenuManager { get; set; }
public IAppHotelManager AppHotelManager { get; set; }
public IAlarmSettingManager AlarmSettingManager { get; set; }
public IRoomTypeModalManager RoomTypeModalManager { get; set; }
public IRoomTypeSceneManager RoomTypeSceneManager { get; set; }
public IAppRoomManager AppRoomManager { get; set; }
public ActionResult Index()
{
#if SIMON
return View("SimonIndex");
#else
return View();
#endif
}
#region
/// <summary>
///
/// </summary>
/// <param name="type">0app,1微信</param>
/// <returns></returns>
[Authorize]
public ActionResult LoadMenus(int type)
{
var list = this.AppMenuManager.LoadAll(type, CurrentHotelID);
return Json(new { total = list.Count, rows = list });
}
[Authorize]
public ActionResult LoadAppMenusByPage(int page, int rows, string order, string sort)
{
long total = 0;
var list = this.AppMenuManager.LoadAllByPage(out total, page, rows, order, sort).Where(r => r.Type == 0);
return Json(new { total = total, rows = list });
}
[Authorize]
public ActionResult SaveAppMenu(int id, string name, HttpPostedFileBase icon, int sort, bool activeIndicator)
{
try
{
var menu = AppMenuManager.Get(id);
if (menu == null)
{
throw new ApplicationException(HttpContext.InnerLanguage("InvalidMenu"));
}
if (String.IsNullOrWhiteSpace(name))
{
throw new ApplicationException(HttpContext.InnerLanguage("TheMenuNameCanNotBeEmpty"));
}
if (icon != null)
{
if (icon.ContentLength == 0)
{
throw new ApplicationException(HttpContext.InnerLanguage("InvalidMenuIcon"));
}
if (icon.ContentType != "image/png" &&
icon.ContentType != "image/jpeg" &&
icon.ContentType != "image/gif")
{
throw new ApplicationException(HttpContext.InnerLanguage("InvalidFormatMenuIconMenuIconFormatCanOnlyBe") + "png、jpg/jpeg、gif。");
}
string filePath = Server.MapPath("~/Uploads/AppIcons/");
if (!Directory.Exists(filePath))
{
Directory.CreateDirectory(filePath);
}
string fileName = Path.GetFileName(icon.FileName);
filePath += fileName;
if (System.IO.File.Exists(filePath))
{
throw new ApplicationException(HttpContext.InnerLanguage("IconFiles") + "【" + fileName + "】" + HttpContext.InnerLanguage("AlreadyExistsRenameAndThenUpload"));
}
icon.SaveAs(filePath);
menu.Icon = "Uploads/AppIcons/" + fileName;
}
menu.Name = name;
menu.Sort = sort;
menu.ActiveIndicator = activeIndicator;
AppMenuManager.Update(menu);
SaveSystemLog(AUTHORITY_MobileApp, HttpContext.InnerLanguage("EditMenu"), Language == Domain.Language.CN ? menu.Name : menu.EnglishName);
return Json(new { IsSuccess = true, Message = HttpContext.InnerLanguage("SaveSuccess") }, "text/html");
}
catch (Exception ex)
{
SaveSystemLog(AUTHORITY_MobileApp, HttpContext.InnerLanguage("EditMenu"), ex.Message, false);
return Json(new { IsSuccess = true, Message = HttpContext.InnerLanguage("SaveFailedBecause") + ex.Message }, "text/html");
}
}
[Authorize]
public ActionResult SaveWXMenu(int id, bool activeIndicator)
{
try
{
var menu = AppMenuManager.Get(id);
if (menu == null)
{
throw new ApplicationException(HttpContext.InnerLanguage("InvalidMenu"));
}
menu.ActiveIndicator = activeIndicator;
AppMenuManager.Update(menu);
SaveSystemLog(AUTHORITY_MobileApp, HttpContext.InnerLanguage("EditMenu"), Language == Domain.Language.CN ? menu.Name : menu.Name);
return Json(new { IsSuccess = true, Message = HttpContext.InnerLanguage("SaveSuccess") }, "text/html");
}
catch (Exception ex)
{
SaveSystemLog(AUTHORITY_MobileApp, HttpContext.InnerLanguage("EditMenu"), ex.Message, false);
return Json(new { IsSuccess = false, Message = HttpContext.InnerLanguage("SaveFailedBecause") + ex.Message }, "text/html");
}
}
#endregion
#region
[Authorize]
public ActionResult LoadAppHotel()
{
var result = new Dictionary<string, string>();
foreach (var item in AppHotelManager.LoadAll())
{
result.Add(item.Code, item.Value);
}
return Json(result, JsonRequestBehavior.AllowGet);
}
[Authorize]
public ActionResult SaveAppHotel(string jsonData)
{
try
{
var list = Newtonsoft.Json.JsonConvert.DeserializeObject<IDictionary<string, string>>(jsonData);
foreach (KeyValuePair<string, string> item in list)
{
var entity = AppHotelManager.Get(item.Key);
if (entity != null)
{
entity.Value = item.Value;
AppHotelManager.Update(entity);
}
}
SaveSystemLog(AUTHORITY_MobileApp, HttpContext.InnerLanguage("EditHotelIntroduce"), "");
return Json(new { IsSuccess = true, Message = HttpContext.InnerLanguage("SaveSuccess") });
}
catch (Exception ex)
{
SaveSystemLog(AUTHORITY_MobileApp, HttpContext.InnerLanguage("EditHotelIntroduce"), ex.Message, false);
return Json(new { IsSuccess = true, Message = HttpContext.InnerLanguage("SaveFailedBecause") + ex.Message });
}
}
#endregion
#region
[HttpPost]
[Authorize]
public ActionResult LoadServices()
{
var list = AlarmSettingManager.LoadAll('B').Where(r => r.HotelID == CurrentHotelID);
return Json(new { total = list.Count(), rows = list });
}
[HttpPost]
[Authorize]
public ActionResult SaveService(char type, string code, bool appApply)
{
try
{
var serviceSetting = AlarmSettingManager.Get(CurrentHotelID, type, code);
if (serviceSetting == null)
{
throw new ApplicationException(HttpContext.InnerLanguage("InvalidService"));
}
serviceSetting.AppApply = appApply;
AlarmSettingManager.Update(serviceSetting);
string logDetail = serviceSetting.AppApply ? HttpContext.InnerLanguage("Show") : HttpContext.InnerLanguage("Hide");
logDetail += "【" + (Language == Language.CN ? serviceSetting.Name : serviceSetting.EName) + "】";
SaveSystemLog(AUTHORITY_MobileApp, HttpContext.InnerLanguage("EditService"), logDetail);
return Json(new { IsSuccess = true, Message = HttpContext.InnerLanguage("SettingSuccess") });
}
catch (Exception ex)
{
SaveSystemLog(AUTHORITY_MobileApp, HttpContext.InnerLanguage("EditService"), ex.Message, false);
return Json(new { IsSuccess = false, Message = HttpContext.InnerLanguage("SetFailedbecause") + ex.Message });
}
}
#endregion
#region
[Authorize]
public ActionResult LoadLightsByPage(int page, int rows, string order, string sort, int roomTypeId)
{
long total = 0;
var list = RoomTypeModalManager.LoadAllByPage(out total, page, rows, order, sort, roomTypeId);
var result = list.Select(r => new { r.ID, r.Outlet, r.Name, Type = HttpContext.InnerLanguage(r.Type.ToString()), r.AppApply, r.EnglishName });
return Json(new { total = total, rows = result });
}
[HttpPost]
[Authorize]
public ActionResult SaveLight(int id, bool appApply)
{
try
{
var light = RoomTypeModalManager.Get(id);
if (light == null)
{
throw new ApplicationException(HttpContext.InnerLanguage("InvalidLight"));
}
light.AppApply = appApply;
RoomTypeModalManager.Update(light);
string logDetail = light.AppApply ? HttpContext.InnerLanguage("Show") : HttpContext.InnerLanguage("Hide");
logDetail += "【" + light.RoomType.Name + "】";
logDetail += "【" + (Language == Language.CN ? light.Name : light.EnglishName) + "】";
SaveSystemLog(AUTHORITY_MobileApp, HttpContext.InnerLanguage("EditLight"), logDetail);
return Json(new { IsSuccess = true, Message = HttpContext.InnerLanguage("SettingSuccess") });
}
catch (Exception ex)
{
SaveSystemLog(AUTHORITY_MobileApp, HttpContext.InnerLanguage("EditLight"), ex.Message, false);
return Json(new { IsSuccess = false, Message = HttpContext.InnerLanguage("SetFailedbecause") + ex.Message });
}
}
#endregion
#region
[Authorize]
public ActionResult LoadScenesByPage(int page, int rows, string order, string sort, int roomTypeId)
{
long total = 0;
var list = RoomTypeSceneManager.LoadAllByPage(out total, page, rows, order, sort, CurrentHotelID, roomTypeId);
var result = list.Select(r => new { r.ID, r.Name, r.AppApply, r.EnglishName, r.Icon });
return Json(new { total = total, rows = result });
}
public ActionResult SaveScene(int id, bool appApply)
{
try
{
var scene = RoomTypeSceneManager.Get(id);
if (scene == null)
{
throw new ApplicationException(HttpContext.InnerLanguage("InvalidScene"));
}
scene.AppApply = appApply;
RoomTypeSceneManager.Update(scene);
string logDetail = scene.AppApply ? HttpContext.InnerLanguage("Show") : HttpContext.InnerLanguage("Hide");
logDetail += "【" + scene.RoomType.Name + "】";
logDetail += "【" + (Language == Language.CN ? scene.Name : scene.EnglishName) + "】";
SaveSystemLog(AUTHORITY_MobileApp, HttpContext.InnerLanguage("EditScene"), logDetail);
return Json(new { IsSuccess = true, Message = HttpContext.InnerLanguage("SettingSuccess") });
}
catch (Exception ex)
{
SaveSystemLog(AUTHORITY_MobileApp, HttpContext.InnerLanguage("EditScene"), ex.Message, false);
return Json(new { IsSuccess = false, Message = HttpContext.InnerLanguage("SetFailedbecause") + ex.Message });
}
}
public ActionResult SaveEditScene(int id, string name, string engshilname, HttpPostedFileBase icon, bool appapply)
{
try
{
var scene = RoomTypeSceneManager.Get(id);
if (scene == null)
{
throw new ApplicationException(HttpContext.InnerLanguage("InvalidScene"));
}
if (icon != null)
{
if (icon.ContentLength == 0)
{
throw new ApplicationException(HttpContext.InnerLanguage("InvalidSceneIcon"));
}
if (icon.ContentType != "image/png" &&
icon.ContentType != "image/jpeg" &&
icon.ContentType != "image/gif")
{
throw new ApplicationException(HttpContext.InnerLanguage("InvalidSceneIconFormatSceneIconFormatCanOnlyBe") + "png、jpg/jpeg、gif。");
}
string filePath = Server.MapPath("~/Uploads/AppIcons/");
if (!Directory.Exists(filePath))
{
Directory.CreateDirectory(filePath);
}
string fileName = Path.GetFileName(icon.FileName);
filePath += fileName;
if (System.IO.File.Exists(filePath))
{
throw new ApplicationException(HttpContext.InnerLanguage("IconFiles") + "【" + fileName + "】" + HttpContext.InnerLanguage("AlreadyExistsRenameAndThenUpload"));
}
icon.SaveAs(filePath);
scene.Icon = "Uploads/AppIcons/" + fileName;
}
scene.AppApply = appapply;
RoomTypeSceneManager.Update(scene);
string logDetail = scene.AppApply ? HttpContext.InnerLanguage("Show") : HttpContext.InnerLanguage("Hide");
logDetail += "【" + scene.RoomType.Name + "】";
logDetail += "【" + (Language == Language.CN ? scene.Name : scene.EnglishName) + "】";
SaveSystemLog(AUTHORITY_MobileApp, HttpContext.InnerLanguage("EditScene"), logDetail);
return Json(new { IsSuccess = true, Message = HttpContext.InnerLanguage("SettingSuccess") }, "text/html");
}
catch (Exception ex)
{
SaveSystemLog(AUTHORITY_MobileApp, HttpContext.InnerLanguage("EditScene"), ex.Message, false);
return Json(new { IsSuccess = false, Message = HttpContext.InnerLanguage("SetFailedbecause") + ex.Message }, "text/html");
}
}
#endregion
#region PAD房号设置
[Authorize]
public ActionResult LoadAppRoomsByPage(int page, int rows, string order, string sort)
{
long total = 0;
var list = this.AppRoomManager.LoadAllByPage(out total, page, rows, order, sort);
return Json(new { total = total, rows = list });
}
[Authorize]
public ActionResult SaveAppRoom(int id, string mac, string roomNumber)
{
try
{
AppRoom existAppRoom = AppRoomManager.Get(id);
AppRoom appRoom = null;
if (id == 0)
{
if (!AppRoomManager.isExistMac(mac))
{
//新增
appRoom = new AppRoom();
appRoom.ID = id;
appRoom.MAC = mac;
appRoom.RoomNumber = roomNumber;
if (existAppRoom != null)
{
return Json(new { IsSuccess = false, Message = String.Format("【{0}】【{1}】" + HttpContext.InnerLanguage("PADRoomNumberSetupInformationAlreadyExists"), appRoom.MAC, appRoom.RoomNumber) });
}
AppRoomManager.Save(appRoom);
string logDetail = HttpContext.InnerLanguage("New") + "【" + appRoom.MAC + "," + appRoom.RoomNumber + "】";
SaveSystemLog(AUTHORITY_MobileApp, HttpContext.InnerLanguage("PADRoomNumberSetting"), logDetail);
}
else
{
return Json(new { IsSuccess = false, Message = String.Format("【{0}】" + HttpContext.InnerLanguage("AlreadyExist"), mac) });
}
}
else
{
//更新
if (existAppRoom != null && existAppRoom.ID != id)
{
return Json(new { IsSuccess = false, Message = String.Format("【{0}】【{1}】" + HttpContext.InnerLanguage("PADRoomNumberSetupInformationAlreadyExists"), appRoom.MAC, appRoom.RoomNumber) });
}
else
{
appRoom = existAppRoom;
}
appRoom.MAC = mac;
appRoom.RoomNumber = roomNumber;
AppRoomManager.Update(appRoom);
string logDetail = HttpContext.InnerLanguage("Edit") + "【" + appRoom.MAC + "," + appRoom.RoomNumber + "】";
SaveSystemLog(AUTHORITY_MobileApp, HttpContext.InnerLanguage("PADRoomNumberSetting"), logDetail);
}
return Json(new { IsSuccess = true, Message = HttpContext.InnerLanguage("SaveSuccess") });
}
catch (Exception ex)
{
return Json(new { IsSuccess = false, Message = HttpContext.InnerLanguage("SaveFailedBecause") + ex.Message });
}
}
[Authorize]
public ActionResult DeleteAppRoom(IList<int> idList)
{
try
{
IList<string> appRoomList = new List<string>();
foreach (int id in idList)
{
var appRoom = AppRoomManager.Get(id);
if (appRoom != null)
{
AppRoomManager.Delete(appRoom.ID);
appRoomList.Add("【" + appRoom.MAC + "," + appRoom.RoomNumber + "】");
}
}
string logDetail = HttpContext.InnerLanguage("Delete") + String.Join(",", appRoomList.ToArray());
SaveSystemLog(AUTHORITY_MobileApp, HttpContext.InnerLanguage("PADRoomNumberSetting"), logDetail);
return Json(new { IsSuccess = true, Message = HttpContext.InnerLanguage("DeleteSuccess") });
}
catch (Exception ex)
{
SaveSystemLog(AUTHORITY_MobileApp, HttpContext.InnerLanguage("PADRoomNumberSetting"), ex.Message, false);
return Json(new { IsSuccess = false, Message = HttpContext.InnerLanguage("DeleteFailedBecause") + ex.Message });
}
}
#endregion
}
}