using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Web.Mvc; using QMFrameWork.Data; using QMFrameWork.Common.Serialization; using QMFrameWork.WebUI.Attribute; using QMAPP.Web.Models.Sys; using QMAPP.Entity.Sys; using QMAPP.Common.Web.Util; using QMAPP.Common.Web.Controllers; using QMFrameWork.WebUI.DataSource; using System.Data; namespace QMAPP.Web.Controllers { /// /// 角色管理控制器 /// [SessionState(System.Web.SessionState.SessionStateBehavior.ReadOnly)] public class RoleController : QController { #region 列表载入 /// /// 加载角色列表 /// /// 结果 [HandleException] public ActionResult RoleList() { RoleModel seachModel = new RoleModel(); TryGetSelectBuffer(out seachModel); seachModel.rownumbers = false; seachModel.url = "/Role/GetList"; return View("RoleList", seachModel); } /// /// 获取角色信息列表 /// /// 是否回调 /// 角色信息列表 [HandleException] public ActionResult GetList(bool? callBack) { List Roles = new List(); RoleModel seachModel = null; DataPage page = new DataPage(); Role condition = null; try { //获取查询对象 seachModel = GetModel(); #region 获取缓存值 if (callBack != null) { TryGetSelectBuffer(out seachModel); } else { //保存搜索条件 SetSelectBuffer(seachModel); } #endregion //获取前台分页控件的分页大小 page = this.GetDataPage(seachModel); condition = CopyToModel(seachModel); QMAPP.ServicesAgent.ServiceAgent agent = this.GetServiceAgent(); page = agent.InvokeServiceFunction("RoleManageBLL_GetList", condition, page); DateGridResult result = new DateGridResult(); result.Total = page.RecordCount; result.Rows = JsonConvertHelper.GetDeserialize>(page.Result.ToString()); return Content(result.GetJsonSource()); } catch (Exception ex) { throw ex; } } #endregion #region 编辑 #region 编辑载入 /// /// 编辑载入 /// /// 处理结果 [HandleException] public ActionResult RoleEdit() { RoleModel model = new RoleModel(); string RoleID = Request.Params["RoleID"]; Role role = new Role(); try { if (string.IsNullOrEmpty(RoleID) == false) { //获取原数据 role.RoleID = RoleID; QMAPP.ServicesAgent.ServiceAgent agent = this.GetServiceAgent(); role = agent.InvokeServiceFunction("RoleManageBLL_Get", role); model = CopyToModel(role); model.isEdit = "true"; } return View(model); } catch (Exception ex) { throw ex; } } #endregion #region 权限信息树 /// /// 权限信息树 /// /// 处理结果 public ActionResult GetTreePowers() { List list = new List(); List powers = null; PowerUtil pu = new PowerUtil(); pu.OwnPowers = new List(); string roleID = Request.Params["roleID"]; string powerFile = null; string systemID = Request.QueryString["SystemID"]; try { //获取系统权限信息 if (systemID == null) systemID = "Main"; powerFile = MvcApplication.PhysicsRootPath + @"App_Data\" + systemID + "Power.xml"; powers = pu.GetAllPowerInfos(powerFile); if (string.IsNullOrEmpty(roleID) == false) { //获取角色信息 Role role = new Role(); role.RoleID = roleID; QMAPP.ServicesAgent.ServiceAgent agent = this.GetServiceAgent(); role = agent.InvokeServiceFunction("RoleManageBLL_Get", role); //role = roleBll.Get(role); foreach (RoleAuthority power in role.Powers) { pu.OwnPowers.Add(new PowerInfo { PowerID = power.AuthorityID }); } } foreach (PowerInfo info in powers) { TreeNodeResult node = new TreeNodeResult(); node.Tid = info.PowerID; node.Ttext = info.PowerDes; //循环已经存在的权限, //foreach (PowerInfo selected in pu.OwnPowers) //{ // //如果当前权限在选中范围内,结束循环,否者继续 // if (selected.PowerID == info.PowerID) // { // info.Selected = true; // break; // } // else // { // info.Selected = false; // } //} info.Selected = pu.OwnPowers.Exists(p => p.PowerID == info.PowerID); node.TChecked = info.Selected; //添加子权限 this.BuildChildItems(node, info.ChildPowers, pu, true); list.Add(node); } return Content(TreeNodeResult.GetResultJosnS(list.ToArray())); } catch (Exception ex) { throw ex; } } /// /// 创建子权限 /// /// 父节点 /// 子权限 /// 已经选中的权限列表 private void BuildChildItems(TreeNodeResult parentNode, List childPowers,PowerUtil pu ,bool option) { foreach (PowerInfo info in childPowers) { TreeNodeResult node = new TreeNodeResult(); node.Tid = info.PowerID; node.Ttext = info.PowerDes; //循环已经存在的权限, //如果是选择编辑的,那么判断是否选中了。 if (option) { //foreach (PowerInfo selected in pu.OwnPowers) //{ // //如果当前权限在选中范围内,结束循环,否者继续 // if (selected.PowerID == info.PowerID) // { // info.Selected = true; // break; // } // else // { // info.Selected = false; // } //} info.Selected = pu.OwnPowers.Exists(p => p.PowerID == info.PowerID); node.TChecked = info.Selected; } //如果为空,那么结束循环 if (info.ChildPowers != null) { //添加子权限 this.BuildChildItems(node, info.ChildPowers, pu, option); } parentNode.AddchildNode(node); } } #endregion #region 保存 /// /// 保存 /// /// /// 处理结果 [HttpPost] [HandleException] public ActionResult RoleSave(RoleModel saveModel) { Role role = null; string powerList = ""; try { role = CopyToModel(saveModel); //处理所选权限 string[] powers = null; powerList += string.IsNullOrEmpty(saveModel.SelectedPowers1) == false ? saveModel.SelectedPowers1 : ""; powerList += string.IsNullOrEmpty(saveModel.SelectedPowers2) == false ? ":"+saveModel.SelectedPowers2 : ""; powerList += string.IsNullOrEmpty(saveModel.SelectedPowers3) == false ? ":" + saveModel.SelectedPowers3 : ""; powerList += string.IsNullOrEmpty(saveModel.SelectedPowers4) == false ? ":" + saveModel.SelectedPowers4 : ""; powerList += string.IsNullOrEmpty(saveModel.SelectedPowers5) == false ? ":" + saveModel.SelectedPowers5 : ""; if (string.IsNullOrEmpty(powerList) == false) { powers = powerList.Split(":".ToArray()); role.Powers = new List(); foreach (string pw in powers) { if(string.IsNullOrEmpty(pw)==true) continue; bool isExists=role.Powers.Exists(p=>p.AuthorityID==pw); if (isExists == true) continue; role.Powers.Add(new RoleAuthority {AuthorityID=pw }); } } else { role.Powers = new List(); } QMAPP.ServicesAgent.ServiceAgent agent = this.GetServiceAgent(); if (string.IsNullOrEmpty(saveModel.isEdit) == true) { //新增 role.IsUpdate = false; } else { //修改 role.IsUpdate = true; } bool isExist = agent.InvokeServiceFunction("RoleManageBLL_ExistsRole", role); if (isExist) { SetMessage("当前保存的角色名称已经存在,请修改!"); return View("RoleEdit", saveModel); } if (string.IsNullOrEmpty(saveModel.isEdit) == true) { //新增 agent.InvokeServiceFunction("RoleManageBLL_Insert", role); } else { //修改 agent.InvokeServiceFunction("RoleManageBLL_Update", role); } return this.GetJsViewResult(string.Format("parent.List(1);parent.showTitle('{0}');parent.closeAppWindow1();" , AppResource.SaveMessge)); } catch (Exception ex) { throw ex; } } #endregion #endregion #region 删除 /// /// 删除角色信息 /// /// 结果 [HttpPost] [HandleException] public ActionResult RoleDelete() { string selectKey = Request.Form["selectKey"]; string[] arrayData = selectKey.Split(":".ToCharArray()); ArrayList list = new ArrayList(); try { for (int i = 0; i < arrayData.Length; i++) { list.Add(arrayData[i]); } QMAPP.ServicesAgent.ServiceAgent agent = this.GetServiceAgent(); agent.InvokeServiceFunction("RoleManageBLL_BatchDelete", list); SetMessage(AppResource.DeleteMessage); return RoleList(); } catch (Exception ex) { throw ex; } } #endregion #region 导出excel /// /// 导出excel /// /// 结果 [HttpPost] [HandleException] public ActionResult ExportExcel() { RoleModel seachModel = null; Role condition = null; DataTable exportDt = new DataTable(); QMAPP.ServicesAgent.ServiceAgent agent = this.GetServiceAgent(); PowerUtil pu = new PowerUtil(); string selectKey = Request.Form["selectKey"]; try { //获取查询对象 seachModel = GetModel(); condition = CopyToModel(seachModel); //获取数据 exportDt = agent.InvokeServiceFunction("RoleManageBLL_GetExportData", condition); if (selectKey != "") { DataView dv = new DataView(exportDt); string strWhere = ""; string[] list = selectKey.Split(":".ToCharArray()); foreach (string RoleID in list) { strWhere += " RoleID='" + RoleID + "' or"; } if (strWhere != "") { strWhere = strWhere.Remove((strWhere.Length - 2), 2); } dv.RowFilter = strWhere; exportDt = dv.ToTable(); } exportDt.Columns.Add("CREATEDATESHOW"); exportDt.Columns.Add("UPDATEDATESHOW"); foreach (DataRow dr in exportDt.Rows) { if (dr["CREATEDATE"] != null) { dr["CREATEDATESHOW"] = Convert.ToDateTime(dr["CREATEDATE"]).ToString("yyyy-MM-dd HH:mm:ss"); } if (dr["UPDATEDATE"] != null) { dr["UPDATEDATESHOW"] = Convert.ToDateTime(dr["UPDATEDATE"]).ToString("yyyy-MM-dd HH:mm:ss"); } } //导出 QMFrameWork.WebUI.Util.IEFileTool efTool = new QMFrameWork.WebUI.Util.IEFileTool(); return efTool.GetExcelFileResult("RoleList", "角色信息.xls", exportDt); } catch (Exception ex) { throw ex; } } #endregion } }