/// <summary> /// 删除正品会收藏 /// </summary> /// <param name="search"></param> /// <returns></returns> public Jinher.AMP.BTP.Deploy.CustomDTO.ResultDTO DeleteCollectionsExt(SetCollectionSearchDTO search) { if (search == null || search.UserId == Guid.Empty || search.ColKeyList == null || !search.ColKeyList.Any()) { return new ResultDTO { ResultCode = -1, Message = "参数非法" } } ; try { ContextSession contextSession = ContextFactory.CurrentThreadContext; List <Commodity> needRefreshCacheCommodityList = new List <Commodity>(); var cols = SetCollection.ObjectSet() .Where(c => c.UserId == search.UserId && c.ColType == search.ColType && search.ColKeyList.Contains(c.ColKey) && c.ChannelId == search.ChannelId) .Distinct(); if (cols.Any()) { foreach (var collection in cols) { //删除收藏 collection.EntityState = System.Data.EntityState.Deleted; } //商品收藏,回退商品收藏数量 if (search.ColType == 1) { var comIds = cols.Select(c => c.ColKey).ToList(); var coms = Commodity.ObjectSet().Where(n => comIds.Contains(n.Id) && n.CommodityType == 0).ToList(); foreach (var commodity in coms) { commodity.TotalCollection -= 1; commodity.EntityState = EntityState.Modified; needRefreshCacheCommodityList.Add(commodity); } } contextSession.SaveChanges(); if (needRefreshCacheCommodityList.Any()) { needRefreshCacheCommodityList.ForEach(c => c.RefreshCache(EntityState.Modified)); } } } catch (Exception ex) { LogHelper.Error(string.Format("删除收藏服务异常。search:{0},", JsonHelper.JsonSerializer(search)), ex); return(new ResultDTO { ResultCode = 1, Message = "Error" }); } return(new ResultDTO { ResultCode = 0, Message = "Success" }); }
/// <summary> /// 根据用户ID查询收藏商品 /// </summary> /// <param name="search"></param> /// <returns></returns> public System.Collections.Generic.List <Jinher.AMP.BTP.Deploy.CustomDTO.AppSetAppDTO> GetCollectionAppsExt(SetCollectionSearchDTO search) { DateTime now = DateTime.Now; List <AppSetAppDTO> result = new List <AppSetAppDTO>(); if (search == null || search.UserId == Guid.Empty || search.ChannelId == Guid.Empty || search.PageIndex < 1 || search.PageSize < 1) { return(result); } try { var appIds = SetCollection.ObjectSet() .Where(c => c.ColType == 2 && c.UserId == search.UserId && c.ChannelId == search.ChannelId).OrderByDescending(c => c.SubTime) .Select(c => c.ColKey).Skip((search.PageIndex - 1) * search.PageSize) .Take(search.PageSize) .ToList(); if (appIds.Any()) { var applist = APPSV.GetAppListByIds(appIds); if (applist != null && applist.Any()) { foreach (var appIdNameIconDTO in applist) { result.Add(new AppSetAppDTO { AppId = appIdNameIconDTO.AppId, AppIcon = appIdNameIconDTO.AppIcon, AppName = appIdNameIconDTO.AppName, AppCreateOn = appIdNameIconDTO.CreateDate > DateTime.MinValue ? appIdNameIconDTO.CreateDate : new DateTime(1970, 1, 1) }); } } } return(result); } catch (Exception ex) { LogHelper.Error(string.Format("SetCollectionSV.GetCollectionAppsExt,获取收藏商品列表查询错误search:{0},", JsonHelper.JsonSerializer(search)), ex); return(new List <AppSetAppDTO>()); } }
/// <summary> /// 根据用户ID查询收藏商品 /// </summary> /// <param name="search"></param> /// <returns></returns> public System.Collections.Generic.List <Jinher.AMP.BTP.Deploy.CustomDTO.CommodityListCDTO> GetCollectionComsExt(SetCollectionSearchDTO search) { DateTime now = DateTime.Now; List <CommodityListCDTO> result = new List <CommodityListCDTO>(); try { if (search == null || search.UserId == Guid.Empty || search.ChannelId == Guid.Empty || search.PageIndex < 1 || search.PageSize < 1) { return(result); } var commodityList = (from setCollection in SetCollection.ObjectSet() join commodity in Commodity.ObjectSet() on setCollection.ColKey equals commodity.Id where setCollection.ColType == 1 && setCollection.UserId == search.UserId && commodity.IsDel == false && commodity.State == 0 && commodity.CommodityType == 0 && setCollection.ChannelId == search.ChannelId orderby setCollection.SubTime descending select new CommodityListCDTO { Id = commodity.Id, Pic = commodity.PicturesPath, Price = commodity.Price, State = commodity.State, Stock = commodity.Stock, Name = commodity.Name, MarketPrice = commodity.MarketPrice, AppId = commodity.AppId, ComAttrType = (commodity.ComAttribute == "[]" || commodity.ComAttribute == null) ? 1 : 3 }).Skip((search.PageIndex - 1) * search.PageSize) .Take(search.PageSize).ToList(); if (!commodityList.Any()) { return(result); } var appIds = commodityList.Select(c => c.AppId).Distinct().ToList(); #region 众筹 if (CustomConfig.CrowdfundingFlag) { var cfAppIds = Crowdfunding.ObjectSet().Where(c => appIds.Contains(c.AppId) && c.StartTime < now && c.State == 0).Select(m => m.AppId).ToList(); if (cfAppIds.Any()) { foreach (var commodityListCdto in commodityList) { if (cfAppIds.Any(c => c == commodityListCdto.AppId)) { commodityListCdto.IsActiveCrowdfunding = true; } } } } #endregion List <Guid> commodityIds = commodityList.Select(c => c.Id).ToList(); var promotionDic = (from p in PromotionItems.ObjectSet() join pro in Promotion.ObjectSet() on p.PromotionId equals pro.Id where commodityIds.Contains(p.CommodityId) && !pro.IsDel && pro.IsEnable && (pro.StartTime <= now || pro.PresellStartTime <= now) && pro.EndTime >= now select new { ComId = p.CommodityId, Intensity = (decimal)p.Intensity, DiscountPrice = (decimal)p.DiscountPrice, StartTime = pro.StartTime, EndTime = pro.EndTime, PresellStartTime = pro.PresellStartTime, PresellEndTime = "", LimitBuyEach = p.LimitBuyEach, LimitBuyTotal = p.LimitBuyTotal, SurplusLimitBuyTotal = p.SurplusLimitBuyTotal, PromotionType = pro.PromotionType } ).Distinct(); foreach (var commodity in commodityList) { var promotion = promotionDic.FirstOrDefault(c => c.ComId == commodity.Id); if (promotion != null) { commodity.LimitBuyEach = promotion.LimitBuyEach ?? -1; commodity.LimitBuyTotal = promotion.LimitBuyTotal ?? -1; commodity.SurplusLimitBuyTotal = promotion.SurplusLimitBuyTotal ?? 0; if (promotion.DiscountPrice > -1) { commodity.DiscountPrice = Convert.ToDecimal(promotion.DiscountPrice); commodity.Intensity = 10; continue; } commodity.DiscountPrice = -1; commodity.Intensity = promotion.Intensity; commodity.PromotionType = promotion.PromotionType; } else { commodity.DiscountPrice = -1; commodity.Intensity = 10; commodity.LimitBuyEach = -1; commodity.LimitBuyTotal = -1; commodity.SurplusLimitBuyTotal = -1; commodity.PromotionType = 9999; } } return(commodityList); } catch (Exception e) { LogHelper.Error("SetCollectionSV.GetCollectionComsExt,获取收藏商品列表查询错误" + e); return(new List <CommodityListCDTO>()); } }