81 lines
2.7 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|