Ejemplo n.º 1
0
        /// <summary>
        /// 获取优惠券 任务列表
        /// </summary>
        /// <param name="request"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public async ValueTask <List <PromotionTaskModel> > GetPromotionTaskListAsync(GetPromotionTaskListRequest request, CancellationToken cancellationToken)
        {
            var entities = await promotionTaskRepository.GetPromotionTaskListAsync(request, cancellationToken).ConfigureAwait(false);

            var result = ObjectMapper.ConvertTo <PromotionTaskEntity, PromotionTaskModel>(entities).ToList();

            return(result);
        }
Ejemplo n.º 2
0
        public async ValueTask <List <PromotionTaskModel> > GetPromotionTaskListCacheAsync(GetPromotionTaskListRequest request, CancellationToken cancellationToken)
        {
            List <PromotionTaskModel> data = new List <PromotionTaskModel>();

            using (var client = cacheHelper.CreateCacheClient(GlobalConstant.RedisClient))
            {
                var result = await client.GetOrSetAsync(
                    GlobalConstant.RedisKeyForPromotionTaskList,
                    async() => (await GetPromotionTaskListAsync(request, cancellationToken).ConfigureAwait(false)),
                    GlobalConstant.RedisTTLForPromotionTaskList).ConfigureAwait(false);

                if (result.Success)
                {
                    data = result.Value;
                }
                else
                {
                    data = await GetPromotionTaskListAsync(request, cancellationToken).ConfigureAwait(false);
                }
            }
            return(data);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 获取优惠券 任务列表 - 缓存
        /// </summary>
        /// <param name="request"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public async ValueTask <List <PromotionTaskModel> > GetPromotionTaskListMemoryCacheAsync(GetPromotionTaskListRequest request, CancellationToken cancellationToken)
        {
            var result = await tuhuMemoryCache.GetOrSetWithLockAsync(GlobalConstant.RedisKeyForPromotionTaskList,
                                                                     async() => await GetPromotionTaskListCacheAsync(request, cancellationToken).ConfigureAwait(false), TimeSpan.FromMinutes(5)).ConfigureAwait(false);

            return(result);
        }