using System; using System.Collections.Generic; using System.Linq; using System.Text; using CY.IDAL; using System.Data.SqlClient; using System.Data; using CY.Model; using System.Transactions; namespace CY.SQLDAL { public class Sys_Permissions_RoleDAL : ISys_Permissions_RoleDAL { private Database _dataBase = null; public Sys_Permissions_RoleDAL() { _dataBase = new Database(); } /// /// 新增 /// /// /// public bool InserModel(Infrastructure.Domain.IAggregateRoot model) { Model.Sys_Permissions_Role trueModel = model as Model.Sys_Permissions_Role; if (trueModel == null) { return false; } IList sqlParms = new List() { new SqlParameter(){Direction=ParameterDirection.ReturnValue,SqlDbType = SqlDbType.Int}, new SqlParameter("@RoleName",trueModel.RoleName), new SqlParameter("@IsUsed",trueModel.IsUsed), new SqlParameter("@LastUpdateTime",trueModel.LastUpdateTime), new SqlParameter("@Operator",trueModel.Operator), new SqlParameter("@Remark",trueModel.Remark) , new SqlParameter("@IsDefaultBuyer",trueModel.IsDefaultBuyer) , new SqlParameter("@IsDefaultFirm",trueModel.IsDefaultFirm) , new SqlParameter("@IsDefaultShop",trueModel.IsDefaultShop) }; try { _dataBase.Query("sp_Sys_Permissions_Role_Insert", CommandType.StoredProcedure, sqlParms.ToArray()); trueModel.Keyid = CY.Infrastructure.Common.MyConvert.ConvertToInt32(sqlParms[0].Value); } catch (Exception ex) { throw ex; } return true; } /// /// 修改 /// /// /// public bool UpdateModel(Infrastructure.Domain.IAggregateRoot model) { Model.Sys_Permissions_Role trueModel = model as Model.Sys_Permissions_Role; if (trueModel == null) { return false; } IList sqlParms = new List() { new SqlParameter("@Keyid",trueModel.Keyid), new SqlParameter("@RoleName",trueModel.RoleName), new SqlParameter("@IsUsed",trueModel.IsUsed), new SqlParameter("@LastUpdateTime",trueModel.LastUpdateTime), new SqlParameter("@Operator",trueModel.Operator), new SqlParameter("@Remark",trueModel.Remark) , new SqlParameter("@IsDefaultBuyer",trueModel.IsDefaultBuyer) , new SqlParameter("@IsDefaultFirm",trueModel.IsDefaultFirm) , new SqlParameter("@IsDefaultShop",trueModel.IsDefaultShop) }; try { _dataBase.Query("sp_Sys_Permissions_Role_Update", CommandType.StoredProcedure, sqlParms.ToArray()); } catch (Exception ex) { throw ex; } return true; } /// /// 删除 /// /// /// public bool DeleteModel(Infrastructure.Domain.IAggregateRoot model) { Model.Sys_Permissions_Role trueModel = model as Model.Sys_Permissions_Role; if (trueModel == null) { return false; } IList sqlParms = new List() { new SqlParameter("@Keyid",trueModel.Keyid) }; try { _dataBase.Query("sp_Sys_Permissions_Role_DeleteRow", CommandType.StoredProcedure, sqlParms.ToArray()); } catch (Exception ex) { throw ex; } return true; } /// /// 删除角色以及角色的权限 /// /// /// public bool DeleteRole(Infrastructure.Domain.IAggregateRoot model) { Sys_Permissions_RoleMenuRelationDAL dal_Sys_Permissions_RoleMenuRelationDAL = new Sys_Permissions_RoleMenuRelationDAL(_dataBase); Model.Sys_Permissions_Role trueModel = model as Model.Sys_Permissions_Role; if (trueModel == null) { return false; } try { using (TransactionScope transactionscope = new TransactionScope()) { DeleteModel(model); List m_Sys_Permissions_RoleMenuRelationList = dal_Sys_Permissions_RoleMenuRelationDAL.SelectListByRoleId(trueModel.Keyid) as List; foreach (var item in m_Sys_Permissions_RoleMenuRelationList) { dal_Sys_Permissions_RoleMenuRelationDAL.DeleteModel(item); } transactionscope.Complete(); } } catch (Exception ex) { throw ex; } return true; } /// /// 分页查询 /// /// /// /// public IEnumerable SelectModelPage(Infrastructure.Query.Query query, Infrastructure.Query.Pagination pagination) { throw new NotImplementedException(); } /// /// 单个查询 /// /// /// public IEnumerable SelectAllModel(Infrastructure.Query.Query query) { throw new NotImplementedException(); } /// ///查询全部角色 /// /// public IEnumerable SelectList() { IList result = _dataBase.SelectModel("*", "Sys_Permissions_Role", " 1=1 ") as IList;//执行查询 Remark = 'admin' return result;//返回结果 } /// /// 根据编号查询单个角色 /// /// /// public Sys_Permissions_Role SelectModel(int? Keyid) { if (Keyid == null || Keyid <= 0) return null; IList result = _dataBase.SelectModel("*", "Sys_Permissions_Role", string.Format(" Keyid='{0}' ", Keyid)) as IList;//执行查询 if (result != null && result.Count > 0) { return result[0]; } else { return null;//返回结果 } } /// /// 编辑角色权限 /// /// /// public bool EditMenusRole(int? Roleid, Dictionary MenusJionRole) { try { using (TransactionScope transactionscope = new TransactionScope()) { Sys_Permissions_RoleMenuRelationDAL dal_Sys_Permissions_RoleMenuRelationDAL = new Sys_Permissions_RoleMenuRelationDAL(); List m_Sys_Permissions_RoleMenuRelationList = dal_Sys_Permissions_RoleMenuRelationDAL.SelectListByRoleId(Roleid) as List; foreach (var item in m_Sys_Permissions_RoleMenuRelationList) { dal_Sys_Permissions_RoleMenuRelationDAL.DeleteModel(item); } foreach (var itemMenuAll in MenusJionRole) { string Menu = itemMenuAll.Key; string Role = itemMenuAll.Value; string[] MenuArry = Menu.Split('-'); string MenusOne = MenuArry[0]; string MenusTwo = MenuArry[1]; string MenusThree = MenuArry[2]; Sys_Permissions_RoleMenuRelation m_Sys_Permissions_RoleMenuRelation = new Sys_Permissions_RoleMenuRelation(); m_Sys_Permissions_RoleMenuRelation.MenuIdOne = Convert.ToInt32(MenusOne); m_Sys_Permissions_RoleMenuRelation.MenuIdTwo = Convert.ToInt32(MenusTwo); m_Sys_Permissions_RoleMenuRelation.MenuIdThree = Convert.ToInt32(MenusThree); m_Sys_Permissions_RoleMenuRelation.RoleId = Roleid; m_Sys_Permissions_RoleMenuRelation.FuncId =","+ Role.ToString().Trim(',')+","; dal_Sys_Permissions_RoleMenuRelationDAL.InserModel(m_Sys_Permissions_RoleMenuRelation); } transactionscope.Complete(); } return true; } catch (Exception ex) { throw ex; } } /// /// 编辑会员权限 /// /// /// /// /// public bool EditMenusRole(int? Roleid, Dictionary MenusJionRole, Guid MemberId) { try { bool isSuccess = true; using (TransactionScope transactionscope = new TransactionScope()) { Sys_Permissions_RoleMenuRelationDAL dal_Sys_Permissions_RoleMenuRelationDAL = new Sys_Permissions_RoleMenuRelationDAL(_dataBase); Sys_Permissions_UserRoleRelationDAL dal_Sys_Permissions_UserRoleRelationDAL = new Sys_Permissions_UserRoleRelationDAL(_dataBase); Sys_Permissions_Role m_Sys_Permissions_Role = SelectModel(Roleid); if (m_Sys_Permissions_Role == null || m_Sys_Permissions_Role.RoleName != MemberId.ToString()) { m_Sys_Permissions_Role = new Sys_Permissions_Role(); m_Sys_Permissions_Role.RoleName = MemberId.ToString(); m_Sys_Permissions_Role.Remark = "member"; m_Sys_Permissions_Role.LastUpdateTime = DateTime.Now; m_Sys_Permissions_Role.IsUsed = true; m_Sys_Permissions_Role.IsDefaultShop = false; m_Sys_Permissions_Role.IsDefaultFirm = false; m_Sys_Permissions_Role.IsDefaultBuyer = false; m_Sys_Permissions_Role.Operator = ""; if (isSuccess) isSuccess = InserModel(m_Sys_Permissions_Role); } Sys_Permissions_UserRoleRelation m_Sys_Permissions_UserRoleRelation = dal_Sys_Permissions_UserRoleRelationDAL.SelectModel(MemberId); if (m_Sys_Permissions_UserRoleRelation == null) { m_Sys_Permissions_UserRoleRelation = new Sys_Permissions_UserRoleRelation(); m_Sys_Permissions_UserRoleRelation.RoleId = m_Sys_Permissions_Role.Keyid; m_Sys_Permissions_UserRoleRelation.MemberId = MemberId; if (isSuccess) isSuccess = dal_Sys_Permissions_UserRoleRelationDAL.InserModel(m_Sys_Permissions_UserRoleRelation); } else { m_Sys_Permissions_UserRoleRelation.RoleId = m_Sys_Permissions_Role.Keyid; if (isSuccess) isSuccess = dal_Sys_Permissions_UserRoleRelationDAL.UpdateModel(m_Sys_Permissions_UserRoleRelation); List m_Sys_Permissions_RoleMenuRelationList = dal_Sys_Permissions_RoleMenuRelationDAL.SelectListByRoleId(m_Sys_Permissions_Role.Keyid) as List; foreach (var item in m_Sys_Permissions_RoleMenuRelationList) { if (isSuccess) isSuccess = dal_Sys_Permissions_RoleMenuRelationDAL.DeleteModel(item); } } foreach (var itemMenuAll in MenusJionRole) { string Menu = itemMenuAll.Key; string Role = itemMenuAll.Value; string[] MenuArry = Menu.Split('-'); string MenusOne = MenuArry[0]; string MenusTwo = MenuArry[1]; string MenusThree = MenuArry[2]; Sys_Permissions_RoleMenuRelation m_Sys_Permissions_RoleMenuRelation = new Sys_Permissions_RoleMenuRelation(); m_Sys_Permissions_RoleMenuRelation.MenuIdOne = Convert.ToInt32(MenusOne); m_Sys_Permissions_RoleMenuRelation.MenuIdTwo = Convert.ToInt32(MenusTwo); m_Sys_Permissions_RoleMenuRelation.MenuIdThree = Convert.ToInt32(MenusThree); m_Sys_Permissions_RoleMenuRelation.RoleId = m_Sys_Permissions_Role.Keyid; m_Sys_Permissions_RoleMenuRelation.FuncId = "," + Role.ToString().Trim(',') + ","; if (isSuccess) isSuccess = dal_Sys_Permissions_RoleMenuRelationDAL.InserModel(m_Sys_Permissions_RoleMenuRelation); } if (isSuccess) transactionscope.Complete(); } return isSuccess; } catch (Exception ex) { throw ex; } } /// /// 根据上级菜单编号获取下级全部菜单 /// /// /// public List SelectNextMenusListByMenuId(int? MenuId) { string condition = " 1=1 and IsUsed='True' "; if (MenuId > 0) { condition += " and ParentId = '" + MenuId + "' "; } List result = _dataBase.SelectModel("*", " Sys_Permissions_Menu ", condition + " order by OrderCode Asc ") as IList as List;//执行查询 return result;//返回结果 } /// /// 根据角色获取一级菜单 /// /// 角色编号 /// public List MenusOneList(int? RoleId) { string condition = ""; if (RoleId > 0) { condition = "where RoleId = '" + RoleId + "'"; } List result = _dataBase.SelectModel("*", "Sys_Permissions_Menu", " Keyid in ( select MenuIdOne from Sys_Permissions_RoleMenuRelation " + condition + ") order by OrderCode Asc") as IList as List;//执行查询 return result;//返回结果 } /// /// 根据一级菜单获取二级菜单 /// /// 一级菜单 /// public List MenusTwoList(int? MenuIdOne, int? RoleId) { string condition = ""; if (RoleId > 0 && MenuIdOne > 0) { condition = "where MenuIdOne = '" + MenuIdOne + "' and RoleId ='" + RoleId + "'"; } List result = _dataBase.SelectModel("*", "Sys_Permissions_Menu", " Keyid in ( select MenuIdTwo from Sys_Permissions_RoleMenuRelation " + condition + ") order by OrderCode Asc") as IList as List;//执行查询 return result;//返回结果 } /// /// 根据二级菜单获取三级菜单 /// /// 二级菜单 /// public List MenusThreeList(int? MenuIdTwo, int? RoleId) { string condition = ""; if (RoleId > 0 && MenuIdTwo > 0) { condition = "where MenuIdTwo = '" + MenuIdTwo + "' and RoleId ='" + RoleId + "'"; } List result = _dataBase.SelectModel("*", "Sys_Permissions_Menu", " Keyid in ( select MenuIdThree from Sys_Permissions_RoleMenuRelation " + condition + ") order by OrderCode Asc") as IList as List;//执行查询 return result;//返回结果 } /// /// 设置默认厂商角色 /// /// 角色编号 /// public bool SetDefaulFirmRole(int? Keyid) { try { bool result = true; using (TransactionScope t_TransactionScope = new TransactionScope()) { if (result) { int GetReturnNum = _dataBase.ExecuteSql("UPDATE [dbo].[Sys_Permissions_Role] SET [IsDefaultFirm] = 'false'", null); if (GetReturnNum > 0) { result = true; } else { result = false; } if (result) { int GetReturnNum_o = _dataBase.ExecuteSql("UPDATE [dbo].[Sys_Permissions_Role] SET [IsDefaultFirm] = 'true' where Keyid='" + Keyid + "' ", null); if (GetReturnNum_o == 1) { result = true; } else { result = false; } if (result) { t_TransactionScope.Complete(); } } } } return result; } catch (Exception ex) { throw ex; } } /// /// 设置默认网店角色 /// /// 角色编号 /// public bool SetDefaulShopRole(int? Keyid) { try { bool result = true; using (TransactionScope t_TransactionScope = new TransactionScope()) { if (result) { int GetReturnNum = _dataBase.ExecuteSql("UPDATE [dbo].[Sys_Permissions_Role] SET [IsDefaultShop] = 'false'", null); if (GetReturnNum > 0) { result = true; } else { result = false; } if (result) { int GetReturnNum_o = _dataBase.ExecuteSql("UPDATE [dbo].[Sys_Permissions_Role] SET [IsDefaultShop] = 'true' where Keyid='" + Keyid + "' ", null); if (GetReturnNum_o == 1) { result = true; } else { result = false; } if (result) { t_TransactionScope.Complete(); } } } } return result; } catch (Exception ex) { throw ex; } } /// /// 设置默认买家角色 /// /// 角色编号 /// public bool SetDefaulBuyerRole(int? Keyid) { try { bool result = true; using (TransactionScope t_TransactionScope = new TransactionScope()) { if (result) { int GetReturnNum = _dataBase.ExecuteSql("UPDATE [dbo].[Sys_Permissions_Role] SET [IsDefaultBuyer] = 'false'", null); if (GetReturnNum > 0) { result = true; } else { result = false; } if (result) { int GetReturnNum_o = _dataBase.ExecuteSql("UPDATE [dbo].[Sys_Permissions_Role] SET [IsDefaultBuyer] = 'true' where Keyid='" + Keyid + "' ", null); if (GetReturnNum_o == 1) { result = true; } else { result = false; } if (result) { t_TransactionScope.Complete(); } } } } return result; } catch (Exception ex) { throw ex; } } /// /// 根据会员类型获取默认角色 /// /// /// public Sys_Permissions_Role SelectModelByType(string membertype) { if (string.IsNullOrEmpty(membertype)) return null; string condition = " 1=1"; switch (membertype) { case "印刷厂商": condition += " and IsDefaultFirm = 'true' "; break; case "个人网店": condition += " and IsDefaultShop = 'true' "; break; case "买家会员": condition += " and IsDefaultBuyer = 'true' "; break; default: return null; } IList result = _dataBase.SelectModel("*", "Sys_Permissions_Role", condition) as IList;//执行查询 if (result != null && result.Count > 0) { return result[0]; } else { return null;//返回结果 } } /// /// 根据菜单编号获取不存在此菜单的角色 /// /// /// /// public IEnumerable HasRoleByMenuId(int? Menuid,string MemberTypes) { try { string newtypes = ""; if (!string.IsNullOrEmpty(MemberTypes)) { newtypes = "'" + MemberTypes.Replace(",", "','") + "'"; IList result = _dataBase.SelectModel(" m.* ", " dbo.Sys_Permissions_Role AS m LEFT JOIN dbo.Sys_Permissions_UserRoleRelation AS n ON m.Keyid =n.RoleId LEFT JOIN dbo.EC_MemberBasic AS l ON n.MemberId = l.MemberId ", " Keyid NOT IN ( SELECT RoleId FROM dbo.Sys_Permissions_RoleMenuRelation AS q LEFT JOIN (SELECT a.Keyid AS aKeyid,b.Keyid AS bKeyid,c.Keyid AS cKeyid FROM dbo.Sys_Permissions_Menu AS a LEFT JOIN dbo.Sys_Permissions_Menu AS b ON a.Keyid = b.ParentId LEFT JOIN dbo.Sys_Permissions_Menu AS c ON b.Keyid = c.ParentId ) AS p ON q.MenuIdOne = p.aKeyid AND q.MenuIdTwo = p.bKeyid AND q.MenuIdThree = p.cKeyid WHERE cKeyid ='" + Menuid.ToString() + "') AND MemberType IN (" + newtypes + ") ") as IList;//执行查询 return result;//返回结果 } else return null; } catch (Exception ex) { throw ex; } } /// /// 更新或添加用例时,自动关联到用户 /// /// /// /// public bool UpdateCaseToMember(int? MenuId,int? CaseId) { try { int? result = _dataBase.ExecuteSql("UPDATE Sys_Permissions_RoleMenuRelation SET FuncId = FuncId+'," + CaseId + ",' WHERE MenuIdThree ='" + MenuId + "' AND CHARINDEX('," + CaseId + ",',FuncId)=0"); return true; } catch (Exception ex) { throw ex; } } } }