using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using IStation.Entity;
using System.Data.SqlClient;
using SqlSugar;
using System.Threading.Tasks;
using System.Data;
namespace IStation.DAL
{
///
/// 角色权限表RoleMenuMapping
///
public partial class RoleMenuMapping : BaseDAL
{
///
///
///
public override ConnectionConfig ConnectionConfig
{
get { return ConfigHelper.DefaultConnectionConfig; }
}
///
/// 通过 RoleID 获取
///
public List GetByRoleID(long RoleID)
{
using (var db = new SqlSugarClient(ConnectionConfig))
{
return db.Queryable()
.Where(x => x.RoleID == RoleID).ToList();
}
}
///
/// 通过 RoleIds 获取
///
public List GetByRoleIds(List RoleIds)
{
if (RoleIds == null || RoleIds.Count() < 1)
return default;
using (var db = new SqlSugarClient(ConnectionConfig))
{
return db.Queryable()
.Where(x => RoleIds.Contains(x.RoleID)).ToList();
}
}
///
/// 通过 Auth 获取
///
public List GetByMenuID(long MenuID)
{
using (var db = new SqlSugarClient(ConnectionConfig))
{
return db.Queryable()
.Where(x => x.MenuID == MenuID).ToList();
}
}
///
/// 设置
///
public bool Set(List list)
{
if (list == null || list.Count() < 1)
return default;
using (var db = new SqlSugarClient(ConnectionConfig))
{
try
{
db.BeginTran();
foreach (var item in list)
{
var ds = db.Queryable()
.First(x => x.RoleID == item.RoleID && x.MenuID==item.MenuID);
if (ds != null)//已存在
{
if (!item.Selected)//未选择
{
var result = db.Deleteable()
.Where(x => x.RoleID == item.RoleID && x.MenuID == item.MenuID)
.ExecuteCommandHasChange();
if (!result)
{
db.RollbackTran();
return false;
}
}
else//已选择
{
if (item.AuthLevel != ds.AuthLevel)//权限等级发生改变
{
ds.AuthLevel = item.AuthLevel;
var result = db.Updateable(ds).ExecuteCommandHasChange();
if (!result)
{
db.RollbackTran();
return false;
}
}
}
}
else//不存在
{
if (item.Selected)//选择
{
var entity = new Entity.RoleMenuMapping();
entity.RoleID = item.RoleID;
entity.MenuID = item.MenuID;
entity.AuthLevel = item.AuthLevel;
var id=db.Insertable(entity).ExecuteReturnSnowflakeId();
if (id < 1)
{
db.RollbackTran();
return false;
}
}
else//未选择
{
}
}
}
db.CommitTran();
return true;
}
catch
{
db.RollbackTran();
throw;
}
}
}
}
}