using BaseOUDAL; using System.Collections.Generic; using YLErp.Modules.SystemModule; namespace YLErp.Modules.ClientModule { /// /// 客户元数据服务 /// public class ClientMetaService : ClientBaseService { public ClientMetaService(OptUserInfo userInfo) : base(userInfo) { } public ClientMetaService(ClientBaseService baseService) : base(baseService) { } public ClientMetaService(BaseService baseService) : base(baseService) { } /// /// 获取元数据 /// public Dictionary 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); } /// /// 获取元数据 /// 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; } /// /// 获取元数据多个客户 /// public Dictionary GetMeta(List 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); } /// /// 添加或更新元数据 /// public List AddMeta(int clientId, string metaKey, string metaValue, bool saveChanges = true) { if (metaKey is null) { throw new ArgumentNullException(nameof(metaKey)); } List list = new List(); 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; } /// /// 添加或更新元数据 /// 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(); } } /// /// 添加或更新元数据 /// public void AddMetas(IEnumerable 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(); } } /// /// 删除元数据 /// 不要调用该方法,哪怕客户已经被删除了,也不要删除客户元数据,证券业报送中需要报送客户删除的信息 /// public void DeleteMetas(IEnumerable 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 AddMeteLog(string metaKey, string oldMetaValue, string metaValue) { List list = new List(); 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; } } }