163 lines
6.8 KiB
C#
163 lines
6.8 KiB
C#
using CRM.Core.Model.Entity;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.Linq;
|
||
using WX.CRM.Common;
|
||
|
||
namespace CRM.Core.BLL.Base
|
||
{
|
||
public class BAS_INNERUSERROLE_BL
|
||
{
|
||
#region 用户角色列表信息
|
||
public List<BAS_INNERUSERROLE_Extend> GetList(string eId, string uName, string roleId)
|
||
{
|
||
using (var db = new zxdContext())
|
||
{
|
||
var queryData = db.BAS_INNERUSER.AsQueryable();//
|
||
if (!string.IsNullOrWhiteSpace(eId))
|
||
{
|
||
decimal ieId = Convert.ToInt32(eId);
|
||
queryData = queryData.Where(m => m.EID.Equals(ieId));
|
||
}
|
||
if (!string.IsNullOrWhiteSpace(uName))
|
||
{
|
||
queryData = queryData.Where(m => m.UNAME.Contains(uName));
|
||
}
|
||
if (!string.IsNullOrWhiteSpace(roleId) && roleId != "0")
|
||
{
|
||
string[] roleIdStr = roleId.Split(',');
|
||
decimal[] roleIds = new decimal[roleIdStr.Length];
|
||
for (int i = 0; i < roleIdStr.Length; i++)
|
||
{
|
||
roleIds[i] = Convert.ToDecimal(roleIdStr[i]);
|
||
}
|
||
queryData = queryData.Where(m => (from a in db.BAS_INNERUSERROLE where roleIds.Contains(a.ROLEID) select a.INNERUSERID).Contains(m.PKID));
|
||
|
||
}
|
||
queryData = queryData.OrderByDescending(m => m.CTIME);
|
||
|
||
List<BAS_INNERUSERROLE_Extend> list = (from a in queryData
|
||
select new BAS_INNERUSERROLE_Extend()
|
||
{
|
||
EID = a.EID,
|
||
PKID = a.PKID,
|
||
UNAME = a.UNAME,
|
||
ROLEIDS = "",
|
||
ROLESNAMES = ""
|
||
|
||
}).ToList();
|
||
var roleList = db.BAS_ROLE.ToList();
|
||
foreach (var item in list)
|
||
{
|
||
decimal pkid = item.PKID;
|
||
var roleids = (from a in db.BAS_INNERUSERROLE where a.INNERUSERID.Equals(pkid) 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;
|
||
}
|
||
}
|
||
#endregion
|
||
/// <summary>
|
||
/// 保存员工角色
|
||
/// </summary>
|
||
/// <param name="user">当前操作人员</param>
|
||
/// <param name="roleIds">角色的ID集合(","隔开)</param>
|
||
/// <param name="pkids">员工ID集合(","隔开)</param>
|
||
/// <returns></returns>
|
||
/// <summary>
|
||
/// 保存员工角色
|
||
/// </summary>
|
||
/// <param name="user">当前操作人员</param>
|
||
/// <param name="roleIds">角色的ID集合(","隔开)</param>
|
||
/// <param name="eids">员工eID集合(","隔开)</param>
|
||
/// <returns></returns>
|
||
public bool Save(ref ValidationErrors errors, int user, string roleIds, string eids)
|
||
{
|
||
try
|
||
{
|
||
using (var db = new zxdContext())
|
||
{
|
||
string[] roleIdStr = roleIds.Split(',');
|
||
string[] pkIdStr = eids.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 = db.BAS_INNERUSERROLE.FirstOrDefault(m => m.ROLEID == roleid && m.INNERUSERID.Equals(pkid));
|
||
if (entry == null)
|
||
{
|
||
BAS_INNERUSERROLE model = new BAS_INNERUSERROLE();
|
||
model.ROLEID = roleIdArry[n];
|
||
model.INNERUSERID = pkIdArry[i];
|
||
model.CTIME = DateTime.Now;
|
||
model.CREATEUSER = user;
|
||
db.BAS_INNERUSERROLE.Add(model);
|
||
}
|
||
}
|
||
}
|
||
//删除 取消的数据
|
||
foreach (BAS_INNERUSERROLE entry in (from a in db.BAS_INNERUSERROLE
|
||
where pkIdArry.Contains(a.INNERUSERID)
|
||
where !roleIdArry.Contains(a.ROLEID)
|
||
select a
|
||
))
|
||
{
|
||
db.BAS_INNERUSERROLE.Remove(entry);
|
||
};
|
||
db.SaveChanges();
|
||
return true;
|
||
}
|
||
|
||
}
|
||
catch (Exception ex) { errors.Add(ex.Message); return false; }
|
||
}
|
||
public List<BAS_INNERUSERROLE> GetInneruserRoleByUserId(int userId)
|
||
{
|
||
using (var db = new zxdContext())
|
||
{
|
||
return db.BAS_INNERUSERROLE.Where(p => p.INNERUSERID.Equals(userId)).ToList();
|
||
}
|
||
}
|
||
}
|
||
|
||
public class BAS_INNERUSERROLE_Extend
|
||
{
|
||
/// <summary>
|
||
/// 员工ID
|
||
/// </summary>
|
||
public decimal PKID { get; set; }
|
||
/// <summary>
|
||
/// 员工工号
|
||
/// </summary>
|
||
public decimal EID { get; set; }
|
||
/// <summary>
|
||
/// 员工名称
|
||
/// </summary>
|
||
public string UNAME { get; set; }
|
||
/// <summary>
|
||
/// 角色名称
|
||
/// </summary>
|
||
public string ROLESNAMES { get; set; }
|
||
/// <summary>
|
||
/// 角色ID
|
||
/// </summary>
|
||
public string ROLEIDS { get; set; }
|
||
}
|
||
}
|