从山证v2.3.0拷贝
This commit is contained in:
@@ -0,0 +1,216 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user