public static async Task <IEnumerable <ActivityPriceModel> > FetchActivityProductPrice(ActivityPriceRequest request) { var data = request.Items.Where(g => !string.IsNullOrWhiteSpace(g.PID)) .GroupBy(g => g.ActicityId) .Select(g => new ProductActivityType { ActivityId = g.Key, PIDs = g.Select(t => t.PID).ToList() }); var result = new List <ActivityPriceModel>(); if (data.Any()) { var types = ActivityManager.SelectActivityTypeByActivityIds(data.Select(g => g.ActivityId).ToList()).Where(g => g != null); foreach (var item in data) { var type = types.FirstOrDefault(g => g.ActivityId == item.ActivityId); //拼团 if (type == null && await GroupBuyingManager.CheckProductGroupId(item.ActivityId)) { type = new ActivityTypeModel { ActivityId = item.ActivityId, Type = 7 }; } if (type == null) { continue; } if (type.Type == 1) { var dat = await DalBargain.SelectProductActivityPrice(item.ActivityId, item.PIDs); if (dat == null || dat.Count() != item.PIDs.Count) { return(null); } result.AddRange(dat); } else if (type.Type == 9) { if (request.UserId == Guid.Empty) { break; } var userId = request.UserId; foreach (var pid in item.PIDs) { result.Add(await DalBargain.FetchBargainPrice(pid, userId)); } } else if (type.Type == 7) { // 拼团 if (request.UserId == Guid.Empty) { break; } foreach (var pid in item.PIDs) { if (request.GroupId == Guid.Empty) { var priceInfo = await DalFlashSale.FetchGroupBuyingPrtoductPrice(item.ActivityId, pid, Logger); if (await DalFlashSale.CheckFreeCouponInfo(item.ActivityId, request.UserId)) { priceInfo.ActivityPrice = 0; Logger.Info($"GroupBuyingFreeCoupon==>{request.UserId:D}/{item.ActivityId:D}/{pid}==>符合团长免单==>活动价为0"); } result.Add(priceInfo); } else { var dat = await DalFlashSale.FetchGroupBuyingPrice(pid, request.UserId, request.GroupId, Logger); if (dat.Code == 0) { return(null); } result.Add(dat); } } } } } return(result); }
public async Task <OperationResult <IEnumerable <ActivityPriceModel> > > FetchActivityProductPriceAsync(ActivityPriceRequest request) { if (request.Items.Count < 1) { return(OperationResult.FromError <IEnumerable <ActivityPriceModel> >(ErrorCode.ParameterError, "参数不正确")); } var result = await FlashSaleCreateOrderManager.FetchActivityProductPrice(request); if (result == null) { return(OperationResult.FromError <IEnumerable <ActivityPriceModel> >(ErrorCode.ParameterError, "该商品未找到活动价")); } return(OperationResult.FromResult(result)); }