Пример #1
0
        /// <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"
            });
        }
Пример #2
0
        /// <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>());
            }
        }
Пример #3
0
        /// <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>());
            }
        }