using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Hg.Core.Domain { internal class ProductDomain : IProductDomain { private readonly IBaseRepository _repository; private readonly IHttpClient _httpClient; private readonly IMapper _mapper; private readonly ICacheDomain _cacheDomain; private readonly IConfiguration _configuration; private readonly SystemConfig _systemConfig; private readonly IRedisManager _redisManager; public ProductDomain(IConfiguration configuration, IBaseRepository repository, IHttpClient httpClient, IMapper mapper, ICacheDomain cacheDomain, IRedisManager redisManager ) { _systemConfig = configuration.GetSection("SystemConfig").Get(); _configuration = configuration; _repository = repository; _httpClient = httpClient; _mapper = mapper; _cacheDomain = cacheDomain; _redisManager = redisManager; } public async Task> GetProductList() { if (!await _redisManager.ExistsAsync(CacheKeys.ProductList)) { var list = await _repository.GetRepository().QueryListAsync(); await _redisManager.SetAsync(CacheKeys.ProductList, list, TimeSpan.FromDays(1)); return list; } else { var data = await _redisManager.GetListAsync(CacheKeys.ProductList); return data; } } public async Task> GetSubProductListByProductId(int productId, int isValid, int? midprocutid) { var list = new List(); if (!await _redisManager.ExistsAsync(CacheKeys.SubProductList)) { list = await _repository.GetRepository().QueryListAsync(); await _redisManager.SetAsync(CacheKeys.SubProductList, list, TimeSpan.FromDays(1)); } else { list = await _redisManager.GetListAsync(CacheKeys.SubProductList); } list = list.If(productId > 0, x => x.Where(m => m.PRODUCTID == productId)) .If(isValid == 1, x => x.Where(m => m.ISVALID == isValid)) .If(midprocutid.HasValue, x => x.Where(m => m.MidProductId == midprocutid.Value)) .OrderBy(p => p.PRODUCTID).ToList(); return list; } } }