You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

399 lines
17 KiB

using FactorySystemCommon;
using FactorySystemModel.SqlSugarModel;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using FactorySystemModel.EnumModel;
namespace FactorySystemBll
{
public class UserBll
{
/// <summary>
/// 获取配置信息
/// </summary>
public object GetBasicList(int type)
{
return AppSettingsHelper.GetSqlSugar().Queryable<TBasicCode>().Where(s => s.FType == type && s.FState == 1).ToList();
}
/// <summary>
/// 获取角色集合
/// </summary>
/// <returns></returns>
public object GetRoleList()
{
return AppSettingsHelper.GetSqlSugar().Queryable<TRole>().Where(s => s.FDeleted != (int)Constant.DeleteCode.).ToList();
}
/// <summary>
/// 获取权限配置集合
/// </summary>
/// <param name="userid"></param>
/// <returns></returns>
public List<FPower> GetPower(string userid)
{
return AppSettingsHelper.GetSqlSugar().Queryable<FPower>().Where("FUserID="+ userid).ToList();
}
/// <summary>
/// 获取菜单权限
/// </summary>
public object GetMenuList(int userId, string roleIds, bool returnAll = false)
{
int delete = (int)Constant.DeleteCode.;
SqlSugarClient db = AppSettingsHelper.GetSqlSugar();
List<string> roles = new List<string>();
if (string.IsNullOrEmpty(roleIds))
{
TUser userInfo = db.Queryable<TUser>().Where(s => s.FID == userId && s.FDeleted != delete).First();
roleIds = userInfo.FRoleID.ToString();
}
roles = roleIds.Split(',').ToList();
List<TFunction> menuList = db.Queryable<TFunction>().Where(s => s.FDeleted != delete).ToList();
List<int> hasIds = db.Queryable<TRole, TRole_Right>((a, b) => new JoinQueryInfos(JoinType.Left, a.FID == b.FRoleID))
.Where((a, b) => a.FDeleted != delete && b.FType == (int)Constant.RoleType. && roles.Contains(a.FID.ToString()))
.Select((a, b) => b.FFunctionID).GroupBy("b.FFunctionID").ToList();
if (returnAll)
{
return menuList.Select(s => new
{
s.FID,
s.FIcon,
s.FParentID,
s.FName,
s.FLevel,
s.FLocation,
s.FOrder,
s.FRemark,
FIsChose = hasIds.IndexOf(s.FID) != -1
}).ToList();
}
else
{
return menuList.Where(s => hasIds.IndexOf(s.FID) != -1).Select(s => new
{
s.FID,
s.FIcon,
s.FParentID,
s.FName,
s.FLevel,
s.FLocation,
s.FOrder,
s.FRemark,
}).ToList();
}
}
/// <summary>
/// 获取其他权限
/// </summary>
public object GetBasicRoleList(object roleIds, int roleType, string viewType, int userId, bool returnAll)
{
int roleType2 = -1;
if (roleType == 36) roleType2 = (int)Constant.RoleType.;
else if (roleType == 39) roleType2 = (int)Constant.RoleType.;
else if (roleType == 40) roleType2 = (int)Constant.RoleType.;
else if (roleType == 44) roleType2 = (int)Constant.RoleType.;
// 20230328 新增
// 前端新增传84用于合并40和44
else if (roleType == 84) roleType2 = (int)Constant.RoleType.;
if (roleType2 <= 0) return null;
SqlSugarClient db = AppSettingsHelper.GetSqlSugar();
List<string> roles = new List<string>();
if (null == roleIds || string.IsNullOrEmpty(roleIds.ToString()))
{
TUser userInfo = db.Queryable<TUser>().Where(s => s.FID == userId && s.FDeleted != (int)Constant.DeleteCode.).First();
roleIds = userInfo.FRoleID;
}
roles = roleIds.ToString().Trim(',').Split(',').ToList();
/**
* 20230328
*
*
* roleType == 84TBasicCodeFType = 4044
* roleType == 84TRole_RightFType = 45
* **/
List<TBasicCode> resultList = null;
List<int> hasIds = null;
dynamic result = null;
if (roleType == 84)
{
resultList = db.Queryable<TBasicCode>().Where(s => (s.FType == 44 && s.FState == 1)).OrderBy(s => s.FOrder).ToList();
hasIds = db.Queryable<TRole, TRole_Right>((a, b) => new JoinQueryInfos(JoinType.Left, a.FID == b.FRoleID))
.Where((a, b) => a.FDeleted != (int)Constant.DeleteCode. && b.FType == 5 && roles.Contains(a.FID.ToString()))
.Select((a, b) => b.FFunctionID).ToList();
if (!string.IsNullOrEmpty(viewType)) resultList = resultList.Where(s => s.F1.Equals(viewType)).ToList();
if (returnAll)
{
result = resultList.Select(s => new
{
s.FID,
s.FType,
s.FCode,
s.FName,
s.FRemark,
FIsChose = hasIds.IndexOf(int.Parse(s.FCode)) != -1,
s.F1,
s.F2
}).OrderBy(s => int.Parse(s.FCode)).ToList();
}
else
{
result = resultList.Where(s => hasIds.IndexOf(int.Parse(s.FCode)) != -1).Select(s => new
{
s.FID,
s.FType,
s.FCode,
s.FName,
s.FRemark,
s.F1,
s.F2
}).OrderBy(s => int.Parse(s.FCode)).ToList();
}
resultList = db.Queryable<TBasicCode>().Where(s => (s.FType == 40 && s.FState == 1)).OrderBy(s => s.FOrder).ToList();
hasIds = db.Queryable<TRole, TRole_Right>((a, b) => new JoinQueryInfos(JoinType.Left, a.FID == b.FRoleID))
.Where((a, b) => a.FDeleted != (int)Constant.DeleteCode. && b.FType == 4 && roles.Contains(a.FID.ToString()))
.Select((a, b) => b.FFunctionID).ToList();
if (!string.IsNullOrEmpty(viewType)) resultList = resultList.Where(s => s.F1.Equals(viewType)).ToList();
if (returnAll)
{
result.AddRange(
resultList.Select(s => new
{
s.FID,
s.FType,
s.FCode,
s.FName,
s.FRemark,
FIsChose = hasIds.IndexOf(int.Parse(s.FCode)) != -1,
s.F1,
s.F2
}).OrderBy(s => int.Parse(s.FCode)).ToList()
);
}
else
{
result.AddRange(
resultList.Where(s => hasIds.IndexOf(int.Parse(s.FCode)) != -1).Select(s => new
{
s.FID,
s.FType,
s.FCode,
s.FName,
s.FRemark,
s.F1,
s.F2
}).OrderBy(s => int.Parse(s.FCode)).ToList()
);
}
}
else
{
resultList = db.Queryable<TBasicCode>().Where(s => s.FType == roleType && s.FState == 1).OrderBy(s => s.FOrder).ToList();
hasIds = db.Queryable<TRole, TRole_Right>((a, b) => new JoinQueryInfos(JoinType.Left, a.FID == b.FRoleID))
.Where((a, b) => a.FDeleted != (int)Constant.DeleteCode. && b.FType == roleType2 && roles.Contains(a.FID.ToString()))
.Select((a, b) => b.FFunctionID).ToList();
if (!string.IsNullOrEmpty(viewType)) resultList = resultList.Where(s => s.F1.Equals(viewType)).ToList();
if (returnAll)
{
result = resultList.Select(s => new
{
s.FID,
s.FCode,
s.FName,
s.FRemark,
FIsChose = hasIds.IndexOf(int.Parse(s.FCode)) != -1,
s.F1,
s.F2
}).OrderBy(s => int.Parse(s.FCode)).ToList();
}
else
{
result = resultList.Where(s => hasIds.IndexOf(int.Parse(s.FCode)) != -1).Select(s => new
{
s.FID,
s.FCode,
s.FName,
s.FRemark,
s.F1,
s.F2
}).OrderBy(s => int.Parse(s.FCode)).ToList();
}
}
return result;
// 20230328 需求修改注释
// List<TBasicCode> resultList = db.Queryable<TBasicCode>().Where(s => s.FType == roleType && s.FState == 1).OrderBy(s => s.FOrder).ToList();
// List<int> hasIds = db.Queryable<TRole, TRole_Right>((a, b) => new JoinQueryInfos(JoinType.Left, a.FID == b.FRoleID))
// .Where((a, b) => a.FDeleted != (int)Constant.DeleteCode.已删除 && b.FType == roleType2 && roles.Contains(a.FID.ToString()))
// .Select((a, b) => b.FFunctionID).ToList();
//视图类型
//if (!string.IsNullOrEmpty(viewType)) resultList = resultList.Where(s => s.F1.Equals(viewType)).ToList();
//if (returnAll)
//{
// var a = resultList.Select(s => new
// {
// s.FID,
// s.FCode,
// s.FName,
// s.FRemark,
// FIsChose = hasIds.IndexOf(int.Parse(s.FCode)) != -1,
// s.F1,
// s.F2
// }).OrderBy(s => int.Parse(s.FCode)).ToList();
// return a;
//}
//else
//{
// return resultList.Where(s => hasIds.IndexOf(int.Parse(s.FCode)) != -1).Select(s => new
// {
// s.FID,
// s.FCode,
// s.FName,
// s.FRemark,
// s.F1,
// s.F2
// }).OrderBy(s => int.Parse(s.FCode)).ToList();
//}
}
/// <summary>
/// 保存菜单集合
/// </summary>
public int SaveRolePower(string userId, int roleId, List<string> menuIds, List<string> viewIds, List<string> termIds, List<string> editIds, List<string> editIds2)
{
int result = 1;
SqlSugarClient db = AppSettingsHelper.GetSqlSugar();
db.BeginTran();
try
{
if (menuIds != null)
{
result += db.Deleteable<TRole_Right>().Where(s => s.FRoleID == roleId && s.FType == (int)Constant.RoleType.
&& !menuIds.Contains(s.FFunctionID.ToString())).ExecuteCommand();
}
if (viewIds != null)
{
result += db.Deleteable<TRole_Right>().Where(s => s.FRoleID == roleId && s.FType == (int)Constant.RoleType.
&& !viewIds.Contains(s.FFunctionID.ToString())).ExecuteCommand();
}
if (termIds != null)
{
result += db.Deleteable<TRole_Right>().Where(s => s.FRoleID == roleId && s.FType == (int)Constant.RoleType.
&& !termIds.Contains(s.FFunctionID.ToString())).ExecuteCommand();
}
if (editIds != null)
{
result += db.Deleteable<TRole_Right>().Where(s => s.FRoleID == roleId && s.FType == (int)Constant.RoleType.
&& !editIds.Contains(s.FFunctionID.ToString())).ExecuteCommand();
}
if (editIds2 != null)
{
result += db.Deleteable<TRole_Right>().Where(s => s.FRoleID == roleId && s.FType == (int)Constant.RoleType.
&& !editIds.Contains(s.FFunctionID.ToString())).ExecuteCommand();
}
List<TRole_Right> inList = new List<TRole_Right>();
List<TRole_Right> hasRoles = db.Queryable<TRole_Right>().Where(s => s.FRoleID == roleId).ToList();
if (menuIds != null)
{
inList.AddRange(CheckPowerIds(hasRoles, menuIds, (int)Constant.RoleType., userId, roleId));
}
if (viewIds != null)
{
inList.AddRange(CheckPowerIds(hasRoles, viewIds, (int)Constant.RoleType., userId, roleId));
}
if (termIds != null)
{
inList.AddRange(CheckPowerIds(hasRoles, termIds, (int)Constant.RoleType., userId, roleId));
}
if (editIds != null)
{
inList.AddRange(CheckPowerIds(hasRoles, editIds, (int)Constant.RoleType., userId, roleId));
}
if (editIds2 != null)
{
inList.AddRange(CheckPowerIds(hasRoles, editIds2, (int)Constant.RoleType., userId, roleId));
}
if (inList.Count() > 0) result += db.Insertable(inList).ExecuteCommand();
db.CommitTran();
}
catch (Exception)
{
db.RollbackTran();
}
return result;
}
public int CreateFPower(List<FPower> list)
{
int result = 0;
if (list.Count() > 0)
{
SqlSugarClient db = AppSettingsHelper.GetSqlSugar();
FPower power = list.LastOrDefault();
db.Deleteable<FPower>().Where(s => s.FUserID == power.FUserID).ExecuteCommand();
result = db.Insertable(list).ExecuteCommand();
}
return result;
}
public List<FPower> GetFPowerList()
{
return AppSettingsHelper.GetSqlSugar().Queryable<FPower>().ToList();
}
/// <summary>
/// 获取首页信息
/// </summary>
public object GetHomeTopCount(int userId)
{
SqlSugarClient db = AppSettingsHelper.GetSqlSugar();
List<int> topCount = new List<int>();
topCount.Add(db.Queryable<TFS_Task>().Where(s => s.FState < 2).Where(string.Format("','+FUserID+',' like '%,{0},%'", userId)).Count());
topCount.Add(db.Queryable<TFS_Task>().Where(string.Format("','+FUserID+',' like '%,{0},%'", userId))
.Where(string.Format("convert(varchar(10),FAddDate,23)='{0}'", DateTime.Now.ToString("yyyy-MM-dd"))).Count());
topCount.Add(db.Queryable<TFS_FTeamwork>().Count());
topCount.Add(db.Queryable<TFS_FTeamwork>().Where(string.Format(@"FID in(select distinct FTeamID from TFS_FTeamProcess
where ','+FChargeID+',' like '%,{0},%' union select distinct FTeamID from TFS_Task where ','+FUserID+',' like '%,{0},%')",
userId)).Count());
return topCount;
}
#region 内部方法
private List<TRole_Right> CheckPowerIds(List<TRole_Right> hasRoles, List<string> inIds, int roleType, string userId, int roleId)
{
List<int> ids = hasRoles.Where(ss => ss.FType == roleType).Select(sss => sss.FFunctionID).ToList();
if (ids.Count() > 0) inIds = inIds.Where(s => !ids.Contains(int.Parse(s))).ToList();
if (inIds.Count() > 0)
{
return inIds.Select(s => new TRole_Right()
{
FFunctionID = int.Parse(s),
FOperate = userId,
FType = roleType,
FRoleID = roleId,
}).ToList();
}
return new List<TRole_Right>();
}
#endregion
}
}