132 lines
5.5 KiB
C#
132 lines
5.5 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
using Mini.Model.Entity;
|
|
using Mini.Model;
|
|
using Mini.Common;
|
|
using Air.Model.AirAdminViewModel;
|
|
|
|
namespace Mini.Services.Bas
|
|
{
|
|
|
|
public class BasInnerUserRoleService : IBasInnerUserRoleService
|
|
{
|
|
private readonly IAdminRepository<Bas_InnerUser> _basInnerUserRepository;
|
|
private readonly IAdminRepository<Bas_InnerUserRole> _basInnerUserRoleRepository;
|
|
private readonly IAdminRepository<Bas_Role> _basRoleRepository;
|
|
public BasInnerUserRoleService(IAdminRepository<Bas_InnerUserRole> basInnerUserRoleRepository, IAdminRepository<Bas_InnerUser> basInnerUserRepository, IAdminRepository<Bas_Role> basRoleRepository)
|
|
{
|
|
this._basInnerUserRoleRepository = basInnerUserRoleRepository;
|
|
this._basInnerUserRepository = basInnerUserRepository;
|
|
this._basRoleRepository = basRoleRepository;
|
|
}
|
|
public BasInnerUserRoleService()
|
|
{
|
|
//this._basInnerUserRoleRepository = new EfAdminRepository<Bas_InnerUserRole>();
|
|
//this._basInnerUserRepository = basInnerUserRepository;
|
|
//this._basRoleRepository = basRoleRepository;
|
|
}
|
|
|
|
public IList<Bas_InnerUserRole> GetBasInnerUserRoleByUserId(int userId)
|
|
{
|
|
if (userId == 0)
|
|
return null;
|
|
return _basInnerUserRoleRepository.GetList(p => p.InnerUserId == userId).ToList();
|
|
}
|
|
|
|
public IList<Bas_InnerUserRoleModel> GetList(ref Pager pager, int? eId, string uName, string roleId)
|
|
{
|
|
var queryData = _basInnerUserRepository.Table;
|
|
if (eId.HasValue)
|
|
{
|
|
queryData = queryData.Where(m => m.eid == eId.Value);
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(uName))
|
|
{
|
|
queryData = queryData.Where(m => m.uname.Contains(uName));
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(roleId) && roleId != "0")
|
|
{
|
|
string[] roleIdStr = roleId.Split(',');
|
|
int[] roleIds = new int[roleIdStr.Length];
|
|
for (int i = 0; i < roleIdStr.Length; i++)
|
|
{
|
|
roleIds[i] = Convert.ToInt32(roleIdStr[i]);
|
|
}
|
|
queryData = queryData.Where(m => (from a in _basInnerUserRoleRepository.Table where roleIds.Contains(a.RoleId) select a.InnerUserId).Contains(m.uid));
|
|
|
|
}
|
|
queryData = queryData.OrderBy(m => m.uid);
|
|
PagerUtil.SetPager<Bas_InnerUser>(ref queryData, ref pager);//分页
|
|
var list = (from a in queryData
|
|
select new Bas_InnerUserRoleModel
|
|
{
|
|
Eid = a.eid,
|
|
Uid = a.uid,
|
|
UName = a.uname,
|
|
RoleIds = string.Empty,
|
|
RolesNames = string.Empty
|
|
|
|
}).ToList();
|
|
var roleList = _basRoleRepository.Table.ToList();
|
|
foreach (var item in list)
|
|
{
|
|
var uid = item.Uid;
|
|
var roleids = (from a in _basInnerUserRoleRepository.Table where a.InnerUserId.Equals(uid) select a.RoleId).ToList();
|
|
foreach (var role in roleList.Where(m => roleids.Contains(m.RoleId)))//赋值
|
|
{
|
|
item.RoleIds += role.RoleId + ",";
|
|
item.RolesNames += "[" + role.RName + "] ";
|
|
}
|
|
if (item.RoleIds != null && item.RoleIds.Length > 0)
|
|
item.RoleIds = item.RoleIds.Substring(0, item.RoleIds.Length - 1);
|
|
}
|
|
return list;
|
|
}
|
|
|
|
public void Save(int user, string roleIds, string pkids)
|
|
{
|
|
string[] roleIdStr = roleIds.Split(',');
|
|
string[] pkIdStr = pkids.Split(',');
|
|
int[] roleIdArry = new int[roleIdStr.Length];
|
|
int[] pkIdArry = new int[pkIdStr.Length];
|
|
for (int i = 0; i < pkIdStr.Length; i++)
|
|
{
|
|
if (pkIdStr[i] == "" || pkIdStr[i] == "0")
|
|
continue;
|
|
pkIdArry[i] = Convert.ToInt32(pkIdStr[i]);
|
|
int pkid = pkIdArry[i];
|
|
for (int n = 0; n < roleIdStr.Length; n++)
|
|
{
|
|
if (roleIdStr[n] == "" || roleIdStr[n] == "0")
|
|
continue;
|
|
roleIdArry[n] = Convert.ToInt32(roleIdStr[n]);
|
|
int roleid = roleIdArry[n];
|
|
var entry = _basInnerUserRoleRepository.Get(m => m.RoleId.Equals(roleid) && m.InnerUserId.Equals(pkid));
|
|
if (entry == null)
|
|
{
|
|
var model = new Bas_InnerUserRole();
|
|
model.RoleId = roleIdArry[n];
|
|
model.InnerUserId = pkIdArry[i];
|
|
model.CTime = DateTime.Now;
|
|
model.CreateUser = user;
|
|
_basInnerUserRoleRepository.Add(model);
|
|
}
|
|
}
|
|
}
|
|
//删除 取消的数据
|
|
foreach (var entry in (from a in _basInnerUserRoleRepository.GetList()
|
|
where pkIdArry.Contains(a.InnerUserId)
|
|
where !roleIdArry.Contains(a.RoleId)
|
|
select a
|
|
).ToList())
|
|
{
|
|
_basInnerUserRoleRepository.Delete(entry);
|
|
};
|
|
}
|
|
}
|
|
}
|