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

263 lines
11 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 System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Domain;
using Service;
namespace WebSite.Controllers
{
public class SysUserGroupController : BaseController
{
private static log4net.ILog logger = log4net.LogManager.GetLogger(typeof(SysUserGroupController));
private const int AuthorityID = 56;
public ISysUserManager SysUserManager { get; set; }
public ISysRoleManager SysRoleManager { get; set; }
public IGroupManager GroupManager { get; set; }
public ISysHotelManager SysHotelManager { get; set; }
public ISysHotelGroupManager SysHotelGroupManager { get; set; }
#region Action
[Authorize]
public ActionResult Index()
{
//ViewData["Account"] = true;
switch (User.Identity.Name.ToLower())
{
case "admin":
case "blw":
ViewData["Account"] = true;
break;
default:
ViewData["Account"] = false;
break;
}
return View("SimonIndex");
}
[Authorize]
public ActionResult Edit(int? id)
{
if (id.HasValue)
{
return View(SysUserManager.Get(id));
}
var model = new SysUsers { ID = 0, Account = "", Role = null, Group = null, ActiveIndicator = true, Sort = 1, Remark = "" };
return View(model);
}
public ActionResult ChangePassword(int id)
{
ViewData["ID"] = id;
return View();
}
[Authorize]
[HttpPost]
public ActionResult ChangePassword(int id, string password)
{
if (String.IsNullOrEmpty(password))
{
return Json(new { IsSuccess = false, Message = HttpContext.InnerLanguage("ThePasswordCanNotBeEmptyPleaseReEnter") });
}
SysUsers user = SysUserManager.Get(id);
if (user != null)
{
SysUserManager.Update(user, password);
SaveSystemLog(AuthorityID, HttpContext.InnerLanguage("ResetPassword"), user.Account);
}
return Json(new { IsSuccess = true, Message = HttpContext.InnerLanguage("PasswordResetSuccess") });
}
[Authorize]
public ActionResult LoadAllByPage(string order, string sort, int? groupId)//int page, int rows,
{
if (groupId.HasValue)
{
//long total = 0;
//IList<SysUsers> list = this.SysUserManager.LoadAllByPage(out total, page, rows, order, sort, 0, groupId, CurrentHotelID);
SysUsers curUser = this.SysUserManager.Get(User.Identity.Name);
IList<SysUsers> list = this.SysUserManager.LoadAll().Where(r => r.HotelID == 0 && !r.IsDeleted && r.SysHotelGroup.ID != curUser.SysHotelGroup.ID
&& (r.SysHotelGroup.ID == groupId || (r.SysHotelGroup.Parent != null && r.SysHotelGroup.Parent.ID == groupId)
|| (r.SysHotelGroup.Parent != null && r.SysHotelGroup.Parent.Parent != null && r.SysHotelGroup.Parent.Parent.ID == groupId))).ToList();
IList<object> result = new List<object>();
foreach (var user in list)
{
result.Add(new
{
ID = user.ID,
Account = user.Account,
RoleID = user.Role != null ? user.Role.ID.ToString() : "",
RoleName = user.Role != null ? user.Role.Name : "",
GroupID = user.Group != null ? user.Group.ID.ToString() : "",
GroupName = GroupManager.BuildGroupName(user.Group),
SysHotelGroupName = SysHotelGroupManager.BuildGroupName(user.SysHotelGroup),
ActiveIndicator = user.ActiveIndicator,
Sort = user.Sort,
Remark = user.Remark,
CreatedBy = user.CreatedBy,
CreatedDate = user.CreatedDate,
ModifiedBy = user.ModifiedBy,
ModifiedDate = user.ModifiedDate,
HotelID = user.HotelID,
Password2 = user.Password2
});
}
return Json(new { total = result.Count, rows = result });
}
else
{
return Json(new { total = 0, rows = new List<object>() });
}
}
[Authorize]
public ActionResult AuthorityHotel(int id)
{
return View(new SysUsers { ID = id });
}
[Authorize]
public ActionResult LoadAuthorityHotel(int userID)
{
var user = SysUserManager.Get(userID);
switch (user.Account.ToLower())
{
case "admin":
case "leo":
case "blw":
user.Hotels = SysHotelManager.LoadAll();
break;
}
var groupTree = SysHotelGroupManager.CreateGroupTreeWithHotel(user.SysHotelGroup, user.Hotels);
IList<object> result = new List<object>();
result.Add(new { id = 1, text = HttpContext.InnerLanguage("Hotel"), iconCls = "tree-node-no-icon", children = groupTree, attributes = new { isHotel = false } });
return Json(result, JsonRequestBehavior.AllowGet);
}
/// <summary>
/// 保存授权酒店
/// </summary>
/// <param name="userID"></param>
/// <param name="hotelID"></param>
/// <returns></returns>
[Authorize]
public ActionResult SaveAuthorityHotel(int userID, string hotelIDs)
{
var user = SysUserManager.Get(userID);
user.Hotels.Clear();
IList<int> ids = Newtonsoft.Json.JsonConvert.DeserializeObject<IList<int>>(hotelIDs);
foreach (int id in ids)
{
user.Hotels.Add(SysHotelManager.Get(id));
}
SysUserManager.SaveOrUpdate(user);
return Json(new { IsSuccess = true, Message = HttpContext.InnerLanguage("SaveSuccess") });
}
[Authorize]
public ActionResult Save(string jsonData)
{
var user = Newtonsoft.Json.JsonConvert.DeserializeObject<SysUsers>(jsonData);
try
{
//var curUser = SysUserManager.Get(User.Identity.Name);
//if (user.SysHotelGroup.ID == curUser.SysHotelGroup.ID)
//{
// return Json(new { IsSuccess = false, Message = HttpContext.InnerLanguage("Flag") });
//}
var existUser = SysUserManager.Get(user.Account);
IList<SysHotel> hotels = new List<SysHotel>();
var visitHotel = SysHotelManager.LoadAll().Where(r => r.SysHotelGroup.ID == user.SysHotelGroup.ID ||
(r.SysHotelGroup.Parent != null && r.SysHotelGroup.Parent.ID == user.SysHotelGroup.ID) ||
(r.SysHotelGroup.Parent != null && r.SysHotelGroup.Parent.Parent != null && r.SysHotelGroup.Parent.Parent.ID == user.SysHotelGroup.ID)).FirstOrDefault();
if (visitHotel == null)
{
return Json(new { IsSuccess = false, Message = "该用户默认访问酒店不能为空" });
}
hotels.Add(visitHotel);
if (user.ID == 0)
{
if (null != existUser)
{
return Json(new { IsSuccess = false, Message = HttpContext.InnerLanguage("Account") + "【" + user.Account + "】" + HttpContext.InnerLanguage("AlreadyExist") });
}
user.Name = user.Account;
user.CreatedBy = user.ModifiedBy = this.User.Identity.Name;
user.CreatedDate = user.ModifiedDate = DateTime.Now;
user.Hotels = hotels;
user.Group = GroupManager.LoadAll().Where(r => r.HotelID == visitHotel.ID).FirstOrDefault();
user.HotelID = 0;//0表示组角色跟酒店无关
SysUserManager.Save(user);
SaveSystemLog(AuthorityID, HttpContext.InnerLanguage("New"), user.Account);
}
else
{
var currentUser = SysUserManager.Get(user.ID);
if (existUser != null && existUser.ID != currentUser.ID)
{
return Json(new { IsSuccess = false, Message = HttpContext.InnerLanguage("Account") + "【" + user.Account + "】" + HttpContext.InnerLanguage("AlreadyExist") });
}
currentUser.Account = user.Account;
currentUser.Role = user.Role;
//currentUser.Group = user.Group;
currentUser.SysHotelGroup = user.SysHotelGroup;
currentUser.ActiveIndicator = user.ActiveIndicator;
currentUser.Sort = user.Sort;
currentUser.Remark = user.Remark;
currentUser.ModifiedBy = User.Identity.Name;
currentUser.ModifiedDate = DateTime.Now;
//currentUser.HotelID = CurrentHotelID;
SysUserManager.Update(currentUser);
SaveSystemLog(AuthorityID, HttpContext.InnerLanguage("Edit"), user.Account);
}
return Json(new { IsSuccess = true, Message = HttpContext.InnerLanguage("SaveSuccess") });
}
catch (Exception ex)
{
logger.Error(ex);
return Json(new { IsSuccess = false, Message = HttpContext.InnerLanguage("SaveFailedBecause") + ex.Message });
}
}
[Authorize]
public ActionResult Delete(IList<int> idList, IList<string> nameList)
{
//SysUserManager.Delete(idList.Cast<object>().ToList());
foreach (int id in idList)
{
SysUsers user = SysUserManager.Get(id);
user.IsDeleted = true;
SysUserManager.Update(user);
}
SaveSystemLog(AuthorityID, HttpContext.InnerLanguage("Delete"), string.Join(",", nameList));
return Json(new { IsSuccess = true, Message = HttpContext.InnerLanguage("DeleteSuccess") });
}
private IList<SysHotel> GetHotels(IList<int> hotelIDs)
{
IList<SysHotel> hotels = new List<SysHotel>();
if (hotelIDs != null)
{
foreach (int hotelID in hotelIDs)
{
var hotel = SysHotelManager.Get(hotelID);
if (hotel != null && !hotels.Contains(hotel))
{
hotels.Add(hotel);
}
}
}
return hotels;
}
#endregion
}
}