using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using Central.Control.Domain; using MES.Production.Service.IService; using Ant.Service.Common; using Ant.Service.Common.Enums; using ChangFa.Machinery.WebPage.Controllers; namespace ChangFa.Machinery.WebPage.Areas.SysManage.Controllers { public class RoleController : BaseController { #region 声明容器 /// /// 角色 /// private IRoleManage RoleManage { get; set; } /// /// 用户角色 /// private IUserRoleManage UserRoleManage { get; set; } /// /// 角色权限 /// private IRolePermissionManage RolePermissionManage { get; set; } #endregion /// /// 加载主页 /// /// [UserAuthorizeAttribute(ModuleAlias = "Role", OperaAction = "View")] public ActionResult Index() { try { #region 处理查询参数 #endregion #region 加载列表 var result = BindList(); ViewBag.Search = base.keywords; #endregion return View(result); } catch (Exception e) { WriteLog(enumOperator.Select, "加载角色列表:", e); throw e.InnerException; } } /// /// 绑定页面需要的属性 /// private PageInfo BindList() { //基础数据 var query = this.RoleManage.LoadAll(null); if (!string.IsNullOrEmpty(keywords)) { query = query.Where(p => p.ROLENAME.Contains(keywords)); } query = query.OrderByDescending(p => p.CREATEDATE); var result = this.RoleManage.Query(query, base.page, base.pagesize); var list = result.List.Select(p => new { //以下是视图需要展示的内容,加动态可循环 p.CREATEDATE, p.ROLENAME, p.ROLEDESC, USERNAME = p.CREATEPERID, p.ID, ISCUSTOM = p.ISCUSTOM == 0 ? "是" : "否" }).ToList(); return new PageInfo(result.Index, result.PageSize, result.Count, JsonConverter.JsonClass(list)); } /// /// 加载详情 /// /// [HttpGet] [UserAuthorizeAttribute(ModuleAlias = "Role", OperaAction = "Detail")] public ActionResult Detail(int? id) { var _entity = this.RoleManage.Get(p => p.ID == id) ?? new SYS_ROLE(); return View(_entity); } /// /// 保存角色 /// [UserAuthorizeAttribute(ModuleAlias = "Role", OperaAction = "Add,Edit")] public ActionResult Save(SYS_ROLE entity) { bool isEdit = false; var json = new JsonHelper() { Msg = "保存成功", ReUrl = "/Sys/Role/Index", Status = "n" }; try { if (entity != null) { //判断角色名是否汉字 if (System.Text.RegularExpressions.Regex.IsMatch(entity.ROLENAME.Trim(), "^[\u4e00-\u9fa5]+$")) { if (entity.ROLENAME.Length > 36) { json.Msg = "角色名称最多只能能包含36个汉字"; return Json(json); } //获取不是HTML绑定的标签 entity.ISCUSTOM = string.IsNullOrEmpty(Request.Form["iscustom"]) ? 1 : 0; //添加 if (entity.ID <= 0) { entity.CREATEDATE = DateTime.Now; entity.CREATEPERID = this.CurrentUser.Name; entity.UPDATEDATE = DateTime.Now; entity.UPDATEUSER = this.CurrentUser.Name; } else //修改 { SYS_ROLE _entity = this.RoleManage.Get(p => p.ID == entity.ID); entity.CREATEDATE = _entity.CREATEDATE; entity.CREATEPERID = _entity.CREATEPERID; entity.UPDATEDATE = DateTime.Now; entity.UPDATEUSER = this.CurrentUser.Name; isEdit = true; } //判断角色是否重名 if (!this.RoleManage.IsExist(p => p.ROLENAME == entity.ROLENAME && p.ID != entity.ID)) { if (RoleManage.SaveOrUpdate(entity, isEdit)) { json.Status = "y"; } else { json.Msg = "保存失败"; } } else { json.Msg = "角色名" + entity.ROLENAME + "已被使用,请修改角色名称再提交"; } } else { json.Msg = "角色名称只能包含汉字"; } } else { json.Msg = "未找到需要保存的角色信息"; } if (isEdit) { WriteLog(enumOperator.Edit, "修改用户角色,结果:" + json.Msg, enumLog4net.INFO); } else { WriteLog(enumOperator.Add, "添加用户角色,结果:" + json.Msg, enumLog4net.INFO); } } catch(Exception e) { json.Msg = "保存用户角色发生内部错误!"; WriteLog(enumOperator.None, "保存用户角色:", e); } return Json(json); } /// /// 删除角色 /// [UserAuthorizeAttribute(ModuleAlias = "Role", OperaAction = "Remove")] public ActionResult Delete(string idList) { var json = new JsonHelper() { Msg = "删除角色完毕", Status = "n" }; var id = idList.Trim(',').Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries).Select(p => int.Parse(p)).ToList(); if (id.Contains(ClsDic.DicRole["超级管理员"])) { json.Msg = "删除失败,不能删除系统固有角色!"; WriteLog(enumOperator.Remove, "删除用户角色:" + json.Msg, enumLog4net.ERROR); return Json(json); } if (this.UserRoleManage.IsExist(p => id.Contains(p.FK_ROLEID))) { json.Msg = "删除失败,不能删除系统中正在使用的角色!"; WriteLog(enumOperator.Remove, "删除用户角色:" + json.Msg, enumLog4net.ERROR); return Json(json); } try { //1、删除角色权限 RolePermissionManage.Delete(p => id.Contains(p.ROLEID)); //2、删除角色 RoleManage.Delete(p => id.Contains(p.ID)); json.Status = "y"; WriteLog(enumOperator.Remove, "删除用户角色:" + json.Msg, enumLog4net.WARN); } catch (Exception e) { json.Msg = "删除用户角色发生内部错误!"; WriteLog(enumOperator.Remove, "删除用户角色:", e); } return Json(json); } #region 帮助方法及其他控制器调用 /// /// 获取用户分配的角色 /// [UserAuthorizeAttribute(ModuleAlias = "Role", OperaAction = "Allocation")] public ActionResult RoleCall(int? id) { try { if (id != null && id > 0) { ViewData["userId"] = id; //获取当前用户设置过的角色信息 var userrole = this.UserRoleManage.LoadAll(p => p.FK_USERID == id).Select(p => p.FK_ROLEID).ToList(); string roleId = userrole.Aggregate(string.Empty, (current, t) => current + (t + ",")).TrimEnd(','); ViewData["roleId"] = roleId; } base.pagesize = 1000; return View(BindList()); } catch (Exception e) { WriteLog(enumOperator.Select, "获取用户分配的角色:", e); throw e.InnerException; } } /// /// 设置用户角色 /// [UserAuthorizeAttribute(ModuleAlias = "Role", OperaAction = "Allocation")] public ActionResult UserRole() { JsonHelper json = new JsonHelper() { Msg = "设置用户角色成功", Status = "n" }; string userId = Request.Form["userId"]; string roleId = Request.Form["roleId"]; if (string.IsNullOrEmpty(userId)) { json.Msg = "未找到要分配角色用户"; return Json(json); } roleId = roleId.TrimEnd(','); try { //设置用户角色 this.UserRoleManage.SetUserRole(int.Parse(userId), roleId); json.Status = "y"; WriteLog(enumOperator.Allocation, "设置用户角色:" + json.Msg, enumLog4net.INFO); } catch (Exception e) { json.Msg = "设置失败,错误:" + e.Message; WriteLog(enumOperator.Allocation, "设置用户角色:", e); } return Json(json); } #endregion } }