Mini.Crm/Mini.Services/Bas/BasInnerUserRoleService.cs

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