using System; using System.Collections.Generic; using System.Linq; using System.Text; using Model; using Common; using Oracle.ManagedDataAccess.Client; using System.Data.Common; namespace Dao { /// /// 角色菜单权限操作 /// public class SysRoleMenuDao : IDisposable { public void Dispose() { } private static SysRoleMenuDao _instance; public static SysRoleMenuDao Instance { get { if (_instance == null) { _instance = new SysRoleMenuDao(); } return _instance; } } public List LoadInfoList(string roleId, int menuId, int pageSize, int PageIndex, out int recordcount) { List list = new List(); recordcount = 0; try { StringBuilder builder = new StringBuilder(); builder.Append("from SYS_ROLE_MENU where 1=1 "); if (!string.IsNullOrEmpty(roleId)) { builder.Append(" and ROLE_ID = '" + roleId + "'"); } if (menuId == -1) { builder.Append(" AND (MENU_ID != " + menuId + " OR MENU_ID IS NULL) "); } else { builder.Append(" AND MENU_ID = " + menuId + " "); } using (OracleDataReader reader = OracleHelper.ExecuteReader("select count(*) as count " + builder.ToString(), OracleHelper.Connection)) { while (reader.Read()) { recordcount = this.ReadCount(reader); } } using (OracleDataReader reader2 = OracleHelper.ExecuteReader(PubConstant.doOracleSql(PageIndex, pageSize, recordcount, "select * " + builder.ToString()).ToString() + " order by DICT_TYPE, DICT_SORT ", OracleHelper.Connection )) { while (reader2.Read()) { SysRoleMenu o = new SysRoleMenu(); if (this.ReadInfo(reader2, o)) { list.Add(o); } } } } catch (Exception exception) { LogHelper.Error(exception); return list; } return list; } //根据条件获取数据列表 public List getAllList(SysRoleMenu bean) { List list = new List(); try { StringBuilder builder = new StringBuilder(); builder.Append("from SYS_ROLE_MENU where 1=1 "); if (!string.IsNullOrEmpty(bean.RoleId)) { builder.Append(" and ROLE_ID = '" + bean.RoleId + "'"); } if (bean.MenuId == -1) { builder.Append(" AND (MENU_ID != " + bean.MenuId + " OR MENU_ID IS NULL) "); } else { builder.Append(" AND MENU_ID = " + bean.MenuId + " "); } using (OracleDataReader reader = OracleHelper.ExecuteReader("select * " + builder.ToString() + " ", OracleHelper.Connection)) { while (reader.Read()) { SysRoleMenu o = new SysRoleMenu(); if (this.ReadInfo(reader, o)) { list.Add(o); } } } } catch (Exception exception) { LogHelper.Error(exception); return list; } return list; } //添加信息 public bool Add(SysRoleMenu o) { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append("INSERT INTO SYS_ROLE_MENU ( ROLE_ID, MENU_ID ) "); stringBuilder.Append(" VALUES (:ROLE_ID, :MENU_ID ) "); string sql = stringBuilder.ToString(); return OracleHelper.ExecuteSql(sql, OracleHelper.Connection, new OracleParameter(":ROLE_ID", (object)o.RoleId), new OracleParameter(":MENU_ID", (object)o.MenuId) ) > 0; } //删除 public bool Delete(SysRoleMenu o) { return OracleHelper.ExecuteSql("delete from SYS_ROLE_MENU where ROLE_ID=:ROLE_ID AND MENU_ID=:MENU_ID", OracleHelper.Connection, new OracleParameter(":ROLE_ID", (object)o.RoleId), new OracleParameter(":MENU_ID", (object)o.MenuId)) > 0; } //获取信息 public SysRoleMenu Get(string roleId, int menuId) { SysRoleMenu o = new SysRoleMenu(); using (OracleDataReader reader = OracleHelper.ExecuteReader(string.Format("select * from SYS_ROLE_MENU where ROLE_ID=:ROLE_ID AND MENU_ID=:MENU_ID"), OracleHelper.Connection, new OracleParameter(":ROLE_ID", (object)roleId), new OracleParameter(":MENU_ID", (object)menuId) ) ) { if (((DbDataReader)reader).Read()) { this.ReadInfo(reader, o); return o; } } return o; } //获取角色权限列表 public Dictionary LoadRoleMenuList(string roleId) { StringBuilder builder = new StringBuilder(); builder.Append("SELECT sm.* FROM SYS_MENU sm "); builder.Append(" LEFT JOIN SYS_ROLE_MENU srm ON srm.MENU_ID = sm.MENU_ID "); builder.Append(" WHERE srm.ROLE_ID=:ROLE_ID "); Dictionary dictionary = new Dictionary(); using (OracleDataReader reader = OracleHelper.ExecuteReader(builder.ToString(), OracleHelper.Connection, new OracleParameter(":ROLE_ID", (object)roleId))) { while (reader != null && ((DbDataReader)reader).Read()) { OracleReaderWrapper oracleReaderWrapper = new OracleReaderWrapper(reader); string menuID = oracleReaderWrapper.GetString("MENU_ID", ""); string menuName = oracleReaderWrapper.GetString("MENU_NAME", ""); string remark = oracleReaderWrapper.GetString("REMARK", ""); string parentID = oracleReaderWrapper.GetString("PARENT_ID", ""); int menuLV = oracleReaderWrapper.GetInt("MENU_LV", 0); SysMenu sysMenu = new SysMenu(); sysMenu.MenuID = menuID; sysMenu.MenuName = menuName; sysMenu.Remark = remark; sysMenu.ParentID = parentID; sysMenu.MenuLV = menuLV; dictionary[menuID] = sysMenu; } } return dictionary; } //修改角色权限 public void UpdatePermission(string roleId, string[] menuIDArray) { List> list = new List>(); string key1 = " DELETE FROM SYS_ROLE_MENU WHERE ROLE_ID=:ROLE_ID "; OracleParameter[] oracleParameterArray1 = new OracleParameter[1] { new OracleParameter(":ROLE_ID", (object) roleId) }; list.Add(new KeyValuePair(key1, oracleParameterArray1)); OracleHelper.ExecuteSqlTran(list, OracleHelper.Connection); if (menuIDArray == null || menuIDArray.Length <= 0) return; string key2 = "INSERT INTO SYS_ROLE_MENU(ROLE_ID, MENU_ID) VALUES(:ROLE_ID,:MENU_ID)"; foreach (string menuId in menuIDArray) { OracleParameter[] oracleParameterArray2 = new OracleParameter[2] { new OracleParameter(":ROLE_ID", (object) roleId), new OracleParameter(":MENU_ID", (object) menuId) }; list.Add(new KeyValuePair(key2, oracleParameterArray2)); } OracleHelper.ExecuteSqlTran(list, OracleHelper.Connection); } //统计记录数 private int ReadCount(OracleDataReader reader) { OracleReaderWrapper wrapper = new OracleReaderWrapper(reader); return wrapper.GetInt("count", 0); } //数据封装 private bool ReadInfo(OracleDataReader reader, SysRoleMenu o) { OracleReaderWrapper oracleReaderWrapper = new OracleReaderWrapper(reader); o.RoleId = oracleReaderWrapper.GetString("ROLE_ID", ""); o.MenuId = oracleReaderWrapper.GetInt("MENU_ID", 1); return true; } } }