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;
}
}
}
}