58 lines
2.4 KiB
C#
58 lines
2.4 KiB
C#
using Syc.Basic.Web.WMS.Entitys;
|
|
using Syc.Basic.Web.WMS.IServices;
|
|
using Syc.Core.Tools;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using Volo.Abp.DependencyInjection;
|
|
using Volo.Abp.Domain.Repositories;
|
|
using Volo.Abp.Domain.Services;
|
|
|
|
namespace Syc.Basic.Web.ServicesImpl
|
|
{
|
|
public class DictionaryService : IDictionaryService, ITransientDependency
|
|
{
|
|
private readonly IRepository<DataDictionary> dictRepository;
|
|
|
|
public DictionaryService(IRepository<DataDictionary> dictRepository)
|
|
{
|
|
this.dictRepository = dictRepository;
|
|
}
|
|
|
|
public async Task<T> GetAsync<T>(string dictCode, string key)
|
|
{
|
|
var dict = (await dictRepository.WithDetailsAsync(e => e.DictionaryItems)).FirstOrDefault(e => e.Key == dictCode && e.Status);
|
|
if(dict is null) return default(T);
|
|
var item = dict.DictionaryItems.FirstOrDefault(e => e.Key == key);
|
|
if(item is null) return default(T);
|
|
return Newtonsoft.Json.JsonConvert.DeserializeObject<T>(item.Value);
|
|
}
|
|
|
|
public async Task<DataDictionary> GetDictAsync(string dictCode)
|
|
{
|
|
var dict = await dictRepository.WithDetailsAsync(e => e.DictionaryItems);
|
|
return dict.FirstOrDefault(e => e.Key == dictCode);
|
|
}
|
|
|
|
public async Task<IEnumerable<T>> GetAsync<T>(string dictCode)
|
|
{
|
|
var dict = (await dictRepository.WithDetailsAsync(e => e.DictionaryItems)).FirstOrDefault(e => e.Key == dictCode && e.Status);
|
|
if (dict is null) return default;
|
|
return dict.DictionaryItems.Select(e => Newtonsoft.Json.JsonConvert.DeserializeObject<T>(e.Value)).ToList();
|
|
}
|
|
|
|
public async Task<Dictionary<string, T>> GetToKVAsync<T>(string dictCode)
|
|
{
|
|
var dict = (await dictRepository.WithDetailsAsync(e => e.DictionaryItems)).FirstOrDefault(e => e.Key == dictCode && e.Status);
|
|
if (dict is null) return default;
|
|
return dict.DictionaryItems
|
|
.Select(e => new KeyValuePair<string,T>(e.Key, Newtonsoft.Json.JsonConvert.DeserializeObject<T>(e.Value)))
|
|
.ToDictionary(e => e.Key,e => e.Value);
|
|
}
|
|
|
|
public Task<Dictionary<string, object>> GetToKVAsync(string dictCode) => GetToKVAsync<object>(dictCode);
|
|
}
|
|
}
|