Files
zszq-trs/YLErpDAL/Modules/DataProviderModule/TradeRightProvider.cs
T
2024-05-09 14:06:26 +08:00

81 lines
2.7 KiB
C#

using BaseOUDAL;
using YLErp.BLL;
namespace YLErp.Modules.DataProviderModule
{
/// <summary>
/// 交易权限服务
/// </summary>
public class TradeRightProvider
{
/// <summary>
/// 获取用户授信权限
/// </summary>
public static List<int> GetClientVarietyIds(int clientId)
{
var allVarietyIds = DataCacheProvider.GetVarietyDataSource().AsQueryable().Select(v => v.id).ToList();
//如果不用没有要限制交易品种
if (!PS.Config.ClientElement.CanSelectCreditVariety)
{
return allVarietyIds;
}
var credits = DbContextFactory.GetYLDbContext().credit.Where(c => c.ClientId == clientId)
.Select(n => new { n.LimitVariety, n.IsFeelingWhiteList, n.VarietyId }).ToList();
if (credits.Any(c => !c.LimitVariety))
{
return allVarietyIds;
}
var varietyids = new List<int>();
foreach (var c in credits)
{
var VarietyIdsInt = DataConvert.ConvertCommaValuesToInt32Array(c.VarietyId);
if (c.IsFeelingWhiteList)
{
varietyids.AddRange(VarietyIdsInt);
}
else
{
varietyids.AddRange(allVarietyIds.Except(VarietyIdsInt));
}
}
return varietyids.Distinct().ToList();
}
/// <summary>
/// 获取客户授信
/// </summary>
public static List<CreditTable> GetClientCredits(int clientId)
{
var curDate = valuedateBLL.ValueDate;
var predicate = PredicateBuilder.Create<CreditTable>(c =>
c.ClientId == clientId && c.ProcessStatus == "已审批"
&& (!c.CreditStartDate.HasValue || c.CreditStartDate <= curDate)
&& (!c.CreditDeadLine.HasValue || c.CreditDeadLine >= curDate)
&& c.Type == CreditTable.ClientType);
return DbContextFactory.GetYLDbContext().credit.Where(predicate).ToList();
}
public static IEnumerable<int> GetUserVarietyIds(int userId)
{
return UserBLL.GetUserVarietyIds(userId);
}
/// <summary>
/// 获取交易权限配置
/// </summary>
public static IEnumerable<CreditTable> GetRoleCredits(IEnumerable<int> roleIds)
{
var predicate = PredicateBuilder.Create<CreditTable>(c => c.Type == CreditTable.RoleType && c.RoleId != null && roleIds.Contains(c.RoleId.Value));
return DbContextFactory.GetYLDbContext().credit.Where(predicate).ToArray();
}
}
}