217 lines
7.0 KiB
C#
217 lines
7.0 KiB
C#
using BaseOUDAL;
|
|
using System.Collections.Generic;
|
|
using YLErp.Modules.SystemModule;
|
|
|
|
namespace YLErp.Modules.ClientModule
|
|
{
|
|
/// <summary>
|
|
/// 客户元数据服务
|
|
/// </summary>
|
|
public class ClientMetaService : ClientBaseService
|
|
{
|
|
|
|
public ClientMetaService(OptUserInfo userInfo) : base(userInfo)
|
|
{
|
|
}
|
|
|
|
public ClientMetaService(ClientBaseService baseService) : base(baseService)
|
|
{
|
|
}
|
|
|
|
public ClientMetaService(BaseService<ClientDBContext> baseService) : base(baseService)
|
|
{
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取元数据
|
|
/// </summary>
|
|
public Dictionary<string, string> GetMetaDic(int clientId)
|
|
{
|
|
return DbContext.ClientMeta.AsNoTracking().Where(t => t.ClientId == clientId)
|
|
.Select(n => new { n.MetaKey, n.MetaValue }).ToDictionary(n => n.MetaKey, n => n.MetaValue);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取元数据
|
|
/// </summary>
|
|
public string GetMeta(int clientId, string metaKey)
|
|
{
|
|
if (metaKey is null)
|
|
{
|
|
throw new ArgumentNullException(nameof(metaKey));
|
|
}
|
|
return DbContext.ClientMeta.AsNoTracking().FirstOrDefault(t => t.ClientId == clientId && t.MetaKey == metaKey)?.MetaValue;
|
|
}
|
|
/// <summary>
|
|
/// 获取元数据多个客户
|
|
/// </summary>
|
|
public Dictionary<int,string> GetMeta(List<int> clientIds, string metaKey)
|
|
{
|
|
if (metaKey is null)
|
|
{
|
|
throw new ArgumentNullException(nameof(metaKey));
|
|
}
|
|
return DbContext.ClientMeta.AsNoTracking().Where( t => clientIds.Contains( t.ClientId)&& t.MetaKey == metaKey).Select(n => new
|
|
{
|
|
n.ClientId,
|
|
n.MetaValue
|
|
}).ToDictionary(n => n.ClientId, n => n.MetaValue);
|
|
}
|
|
/// <summary>
|
|
/// 添加或更新元数据
|
|
/// </summary>
|
|
public List<string> AddMeta(int clientId, string metaKey, string metaValue, bool saveChanges = true)
|
|
{
|
|
if (metaKey is null)
|
|
{
|
|
throw new ArgumentNullException(nameof(metaKey));
|
|
}
|
|
|
|
List<string> list = new List<string>();
|
|
|
|
var dbClientMeta = DbContext.ClientMeta.FirstOrDefault(t => t.ClientId == clientId && t.MetaKey == metaKey);
|
|
|
|
if (dbClientMeta == null)
|
|
{
|
|
if (string.IsNullOrEmpty(metaValue))
|
|
{
|
|
return null;
|
|
}
|
|
DbContext.ClientMeta.Add(new ClientMeta
|
|
{
|
|
ClientId = clientId,
|
|
MetaKey = metaKey,
|
|
MetaValue = metaValue,
|
|
OptDate = DateTime.Now,
|
|
OptId = UserId,
|
|
OptName = UserName
|
|
});
|
|
|
|
var FormEditField = ClientEditConfigService.GetFormEditFieldByName(metaKey);
|
|
list = AddMeteLog(metaKey, "“ ”", metaValue);
|
|
}
|
|
else
|
|
{
|
|
if (dbClientMeta.MetaValue != metaValue)
|
|
{
|
|
var oldMetaValue = dbClientMeta.MetaValue;
|
|
dbClientMeta.MetaValue = metaValue;
|
|
dbClientMeta.OptDate = DateTime.Now;
|
|
dbClientMeta.OptId = UserId;
|
|
dbClientMeta.OptName = UserName;
|
|
list = AddMeteLog(metaKey, oldMetaValue, metaValue);
|
|
}
|
|
}
|
|
if (saveChanges)
|
|
{
|
|
DbContext.SaveChanges();
|
|
}
|
|
return list;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 添加或更新元数据
|
|
/// </summary>
|
|
public void AddMeta(ClientMeta meta, bool saveChanges = true)
|
|
{
|
|
if (meta is null)
|
|
{
|
|
throw new ArgumentNullException(nameof(meta));
|
|
}
|
|
|
|
var dbClientMeta = DbContext.ClientMeta.FirstOrDefault(t => t.ClientId == meta.ClientId && t.MetaKey == meta.MetaKey);
|
|
if (dbClientMeta == null)
|
|
{
|
|
meta.OptDate = DateTime.Now;
|
|
meta.OptId = UserId;
|
|
meta.OptName = UserName;
|
|
DbContext.ClientMeta.Add(meta);
|
|
}
|
|
else
|
|
{
|
|
dbClientMeta.MetaValue = meta.MetaValue;
|
|
}
|
|
|
|
if (saveChanges)
|
|
{
|
|
DbContext.SaveChanges();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 添加或更新元数据
|
|
/// </summary>
|
|
public void AddMetas(IEnumerable<ClientMeta> clientMetas, bool saveChanges = true)
|
|
{
|
|
if (clientMetas == null || !clientMetas.Any())
|
|
{
|
|
return;
|
|
}
|
|
|
|
foreach (var meta in clientMetas)
|
|
{
|
|
var dbClientMeta = DbContext.ClientMeta.FirstOrDefault(t => t.ClientId == meta.ClientId && t.MetaKey == meta.MetaKey);
|
|
if (dbClientMeta == null)
|
|
{
|
|
meta.OptDate = DateTime.Now;
|
|
meta.OptId = UserId;
|
|
meta.OptName = UserName;
|
|
DbContext.ClientMeta.Add(meta);
|
|
}
|
|
else
|
|
{
|
|
dbClientMeta.MetaValue = meta.MetaValue;
|
|
}
|
|
}
|
|
if (saveChanges)
|
|
{
|
|
DbContext.SaveChanges();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 删除元数据
|
|
/// 不要调用该方法,哪怕客户已经被删除了,也不要删除客户元数据,证券业报送中需要报送客户删除的信息
|
|
/// </summary>
|
|
public void DeleteMetas(IEnumerable<ClientMeta> clientMetas, bool saveChanges = true)
|
|
{
|
|
if (clientMetas == null || !clientMetas.Any())
|
|
{
|
|
return;
|
|
}
|
|
|
|
foreach (var clientMeta in clientMetas)
|
|
{
|
|
var dbClientMeta = DbContext.ClientMeta.FirstOrDefault(t => t.ClientId == clientMeta.ClientId && t.MetaKey == clientMeta.MetaKey);
|
|
if (dbClientMeta != null)
|
|
{
|
|
DbContext.ClientMeta.Remove(dbClientMeta);
|
|
}
|
|
}
|
|
|
|
if (saveChanges)
|
|
{
|
|
DbContext.SaveChanges();
|
|
}
|
|
}
|
|
|
|
public List<string> AddMeteLog(string metaKey, string oldMetaValue, string metaValue)
|
|
{
|
|
List<string> list = new List<string>();
|
|
if (!string.IsNullOrEmpty(metaKey))
|
|
{
|
|
metaKey = "meta_" + metaKey;
|
|
var FormEditField = ClientEditConfigService.GetFormEditFieldByName(metaKey);
|
|
if (FormEditField != null)
|
|
{
|
|
list.Add(metaKey);
|
|
list.Add(FormEditField.label);
|
|
list.Add(oldMetaValue);
|
|
list.Add(metaValue);
|
|
}
|
|
}
|
|
return list;
|
|
}
|
|
}
|
|
}
|