示例#1
0
        /// <summary>
        /// 获取众筹
        /// </summary>
        /// <param name="id">众筹Id</param>
        public Jinher.AMP.BTP.Deploy.CrowdfundingDTO GetCrowdfundingExt(System.Guid id)
        {
            Jinher.AMP.BTP.Deploy.CrowdfundingDTO crowdfundingDTO = new CrowdfundingDTO();
            try
            {
                if (id == null)
                {
                    crowdfundingDTO = null;
                }
                else
                {
                    var query = Crowdfunding.ObjectSet().Where(c => c.Id == id).FirstOrDefault();
                    if (query != null)
                    {
                        crowdfundingDTO = query.ToEntityData();
                    }
                    else
                    {
                        crowdfundingDTO = null;
                    }
                }
            }
            catch (Exception ex)
            {
                LogHelper.Error(string.Format("获取众筹列表服务异常。id:{0}", id), ex);
                return(null);
            }


            return(crowdfundingDTO);
        }
示例#2
0
        /// <summary>
        /// 获取众筹列表
        /// </summary>
        /// <param name="appName">app名称</param>
        /// <param name="cfState">众筹状态(-1,不限)</param>
        /// <param name="pageIndex">页码</param>
        /// <param name="pageSize">每页数量</param>
        public GetCrowdfundingsDTO GetCrowdfundingsExt(string appName, int cfState, int pageIndex, int pageSize)
        {
            GetCrowdfundingsDTO getCrowdfundingsDTO = new GetCrowdfundingsDTO();

            if (pageIndex < 1 || pageSize < 1)
            {
                return(null);
            }
            try
            {
                var querys = (from query in Crowdfunding.ObjectSet()
                              join cnt in CrowdfundingCount.ObjectSet() on query.Id equals cnt.CrowdfundingId
                              where (string.IsNullOrEmpty(appName) ? true : (query.AppName.Contains(appName))) &&
                              (cfState == -1 ? true : (cfState == query.State))
                              select new CrowdfundingFullDTO
                {
                    Id = query.Id,
                    AppId = query.AppId,
                    AppName = query.AppName,
                    CurrentShareCount = cnt.CurrentShareCount,
                    Description = query.Description,
                    DividendPercent = query.DividendPercent,
                    PerShareMoney = query.PerShareMoney,
                    ShareCount = query.ShareCount,
                    Slogan = query.Slogan,
                    StartTime = query.StartTime,
                    State = query.State,
                    SubTime = query.SubTime,
                    TotalDividend = (decimal)cnt.TotalDividend / 1000
                }
                              ).OrderByDescending(q => q.SubTime);

                var list = querys.Skip(pageSize * (pageIndex - 1)).Take(pageSize).ToList();

                if (list != null && list.Count > 0)
                {
                    getCrowdfundingsDTO.List  = list;
                    getCrowdfundingsDTO.Total = querys.Count();
                }
                else
                {
                    getCrowdfundingsDTO.Total = 0;
                }

                return(getCrowdfundingsDTO);
            }
            catch (Exception ex)
            {
                LogHelper.Error(string.Format("获取众筹列表服务异常。appName:{0},cfState:{1},pageIndex:{2},pageSize:{3}", appName, cfState, pageIndex, pageSize), ex);
                return(null);
            }
        }
示例#3
0
        /// <summary>
        /// 更新众筹
        /// </summary>
        /// <param name="crowdfundingDTO">众筹实体</param>
        public ResultDTO UpdateCrowdfundingExt(Jinher.AMP.BTP.Deploy.CrowdfundingDTO crowdfundingDTO)
        {
            if (crowdfundingDTO == null)
            {
                return new ResultDTO {
                           ResultCode = 2, Message = "DTO is null"
                }
            }
            ;
            Crowdfunding crowdfunding = Crowdfunding.ObjectSet().FirstOrDefault(c => c.Id == crowdfundingDTO.Id);

            if (crowdfunding == null)
            {
                return new ResultDTO {
                           ResultCode = 2, Message = "BE is null"
                }
            }
            ;
            try
            {
                ContextSession contextSession = ContextFactory.CurrentThreadContext;

                crowdfunding.Slogan      = crowdfundingDTO.Slogan;
                crowdfunding.Description = crowdfundingDTO.Description;
                crowdfunding.EntityState = EntityState.Modified;
                contextSession.SaveObject(crowdfunding);
                contextSession.SaveChanges();
            }
            catch (Exception ex)
            {
                LogHelper.Error(string.Format("修改众筹服务异常。crowdfundingDTO:{0}", crowdfundingDTO), ex);
                return(new ResultDTO {
                    ResultCode = 1, Message = "Error"
                });
            }
            return(new ResultDTO {
                ResultCode = 0, Message = "Success"
            });
        }
示例#4
0
        /// <summary>
        /// 获取商品列表(平台获取平台商品、店铺获取店铺商品)
        /// </summary>
        /// <param name="search"></param>
        /// <returns></returns>
        public Jinher.AMP.BTP.Deploy.CustomDTO.ComdtyListResultCDTO GetCommodityListV2Ext(CommodityListSearchDTO search)
        {
            Jinher.AMP.BTP.Deploy.CustomDTO.ComdtyListResultCDTO comdtyListResultCDTO = new Jinher.AMP.BTP.Deploy.CustomDTO.ComdtyListResultCDTO();
            try
            {
                if (search == null || search.PageSize <= 0 || search.PageIndex <= 0)
                {
                    comdtyListResultCDTO.isSuccess   = false;
                    comdtyListResultCDTO.Code        = 1;
                    comdtyListResultCDTO.Message     = "参数不能为空";
                    comdtyListResultCDTO.realCount   = 0;
                    comdtyListResultCDTO.comdtyList  = null;
                    comdtyListResultCDTO.appInfoList = null;
                    return(comdtyListResultCDTO);
                }
                if (!search.AppId.HasValue || search.AppId == Guid.Empty)
                {
                    comdtyListResultCDTO.isSuccess   = false;
                    comdtyListResultCDTO.Code        = 1;
                    comdtyListResultCDTO.Message     = "参数不能为空";
                    comdtyListResultCDTO.realCount   = 0;
                    comdtyListResultCDTO.comdtyList  = null;
                    comdtyListResultCDTO.appInfoList = null;
                    return(comdtyListResultCDTO);
                }

                DateTime now = DateTime.Now;

                var appId = search.AppId.Value;

                IQueryable <Commodity> ocommodityList;
                //用于存储临加入真实价格后的Commodity信息
                IQueryable <TempCommodity> tempOcommodityList;
                //根据是否平台区分
                bool isPavilion = Jinher.AMP.BTP.TPS.ZPHSV.Instance.IsAppPavilion(search.AppId.Value);
                if (isPavilion)
                {
                    tempOcommodityList = (from cs in CommodityCategory.ObjectSet()
                                          join cate in Category.ObjectSet() on cs.CategoryId equals cate.Id
                                          join c in Commodity.ObjectSet() on cs.CommodityId equals c.Id
                                          join pro in
                                          (
                                              from query in TodayPromotion.ObjectSet()
                                              where
                                              (query.PromotionType != 3 &&
                                               (query.StartTime <= now || query.PresellStartTime <= now) &&
                                               query.EndTime > now)
                                              select query
                                          ) on c.Id equals pro.CommodityId
                                          into todayPros
                                          from promotion in todayPros.DefaultIfEmpty()
                                          where cs.AppId == appId && c.IsDel == false && c.State == 0 && c.CommodityType == 0 && !cate.IsDel
                                          orderby c.Salesvolume descending, c.SubTime descending
                                          select new TempCommodity
                    {
                        Com = c,
                        newPrice = (promotion.Id == null) ? c.Price : (promotion.DiscountPrice > 0 ? promotion.DiscountPrice : c.Price * promotion.Intensity / 10)
                    });
                }
                else
                {
                    tempOcommodityList = (from c in Commodity.ObjectSet()
                                          join pro in
                                          (
                                              from query in TodayPromotion.ObjectSet()
                                              where (query.PromotionType != 3 && (query.StartTime <= now || query.PresellStartTime <= now) && query.EndTime > now)
                                              select query
                                          ) on c.Id equals pro.CommodityId
                                          into todayPros
                                          from promotion in todayPros.DefaultIfEmpty()

                                          where c.AppId == appId && c.IsDel == false && c.State == 0 && c.CommodityType == 0
                                          select new TempCommodity
                    {
                        Com = c,
                        newPrice = (promotion.Id == null) ? c.Price : (promotion.DiscountPrice > 0 ? promotion.DiscountPrice : c.Price * promotion.Intensity / 10)
                    });
                }

                if (search.MinPrice.HasValue && search.MinPrice != 0)
                {
                    tempOcommodityList = tempOcommodityList.Where(c => c.newPrice >= search.MinPrice);
                }
                if (search.MaxPrice.HasValue && search.MaxPrice != 0)
                {
                    tempOcommodityList = tempOcommodityList.Where(c => c.newPrice <= search.MaxPrice);
                }

                ocommodityList = tempOcommodityList.Select(c => c.Com).Distinct();


                if (search.IsHasStock)
                {
                    ocommodityList = ocommodityList.Where(c => c.Stock > 0);
                }

                if (!ProvinceCityHelper.IsTheWholeCountry(search.areaCode))
                {
                    var province = ProvinceCityHelper.GetProvinceByAreaCode(search.areaCode);
                    var city     = ProvinceCityHelper.GetCityByAreaCode(search.areaCode);
                    if (province != null && city != null)
                    {
                        if (province.AreaCode == city.AreaCode)
                        {
                            ocommodityList = ocommodityList.Where(c => c.SaleAreas == null || c.SaleAreas == "" || c.SaleAreas == ProvinceCityHelper.CountryCode || c.SaleAreas.Contains(province.AreaCode));
                        }
                        else
                        {
                            ocommodityList = ocommodityList.Where(c => c.SaleAreas == null || c.SaleAreas == "" || c.SaleAreas == ProvinceCityHelper.CountryCode || c.SaleAreas.Contains(province.AreaCode) || c.SaleAreas.Contains(city.AreaCode));
                        }
                    }
                }
                var commoditiesQuery         = from c in ocommodityList select c;
                List <Commodity> commodities = null;
                List <Jinher.AMP.BTP.Deploy.CustomDTO.CommodityListCDTO> commodityList = null;

                comdtyListResultCDTO.realCount = commoditiesQuery.Count();
                if (isPavilion)
                {
                    commodities = (from c in commoditiesQuery
                                   orderby c.Salesvolume descending, c.SubTime descending
                                   select c).Skip((search.PageIndex - 1) * search.PageSize).Take(search.PageSize).ToList();
                }
                else
                {
                    commodities = (from c in commoditiesQuery
                                   orderby c.SortValue
                                   select c).Skip((search.PageIndex - 1) * search.PageSize).Take(search.PageSize).ToList();
                }

                //commodities = commoditiesQuery.Skip((search.PageIndex - 1) * search.PageSize).Take(search.PageSize).ToList();


                if (!commodities.Any())
                {
                    return(comdtyListResultCDTO);
                }

                commodityList = commodities.Select(c => new Jinher.AMP.BTP.Deploy.CustomDTO.CommodityListCDTO
                {
                    Id               = c.Id,
                    Pic              = c.PicturesPath,
                    Price            = c.Price,
                    State            = c.State,
                    Stock            = c.Stock,
                    Name             = c.Name,
                    MarketPrice      = c.MarketPrice,
                    AppId            = c.AppId,
                    IsEnableSelfTake = c.IsEnableSelfTake,
                    ComAttribute     = c.ComAttribute,
                    ComAttrType      = (c.ComAttribute == "[]" || c.ComAttribute == null) ? 1 : 3
                }).ToList();

                var appList = commodities.Select(c => c.AppId).Distinct().ToList();

                #region 众筹
                if (CustomConfig.CrowdfundingFlag)
                {
                    var crowdFundingApps = Crowdfunding.ObjectSet().Where(c => c.StartTime < now && c.State == 0 && appList.Contains(c.AppId)).Select(c => c.AppId).ToList();
                    if (crowdFundingApps.Any())
                    {
                        for (int i = 0; i < commodityList.Count; i++)
                        {
                            if (crowdFundingApps.Any(c => c == commodityList[i].AppId))
                            {
                                commodityList[i].IsActiveCrowdfunding = true;
                            }
                        }
                    }
                }
                #endregion

                var commodityIds = commodityList.Select(c => c.Id).Distinct().ToList();
                var comStockList = CommodityStock.ObjectSet()
                                   .Where(c => commodityIds.Contains(c.CommodityId))
                                   .Select(
                    c =>
                    new Deploy.CommodityStockDTO
                {
                    Id          = c.Id,
                    CommodityId = c.CommodityId,
                    Price       = c.Price,
                    MarketPrice = c.MarketPrice
                })
                                   .ToList();
                var todayPromotions = TodayPromotion.GetCurrentPromotionsWithPresell(commodityIds);

                foreach (var commodity in commodityList)
                {
                    commodity.IsMultAttribute = Commodity.CheckComMultAttribute(commodity.ComAttribute);
                    List <Deploy.CommodityStockDTO> comStocks = comStockList.Where(c => c.CommodityId == commodity.Id).ToList();

                    var todayPromotion = todayPromotions.FirstOrDefault(c => c.CommodityId == commodity.Id && c.PromotionType != 3);

                    if (todayPromotion != null)
                    {
                        commodity.LimitBuyEach         = todayPromotion.LimitBuyEach ?? -1;
                        commodity.LimitBuyTotal        = todayPromotion.LimitBuyTotal ?? -1;
                        commodity.SurplusLimitBuyTotal = todayPromotion.SurplusLimitBuyTotal ?? 0;
                        commodity.PromotionType        = todayPromotion.PromotionType;
                        if (todayPromotion.DiscountPrice > -1)
                        {
                            commodity.DiscountPrice = Convert.ToDecimal(todayPromotion.DiscountPrice);
                            commodity.Intensity     = 10;
                        }
                        else
                        {
                            commodity.DiscountPrice = -1;
                            commodity.Intensity     = todayPromotion.Intensity;
                        }
                    }
                    else
                    {
                        commodity.DiscountPrice        = -1;
                        commodity.Intensity            = 10;
                        commodity.LimitBuyEach         = -1;
                        commodity.LimitBuyTotal        = -1;
                        commodity.SurplusLimitBuyTotal = -1;
                        commodity.PromotionType        = 9999;
                    }
                    buildShowPrice(commodity, comStocks, todayPromotion);
                }

                try
                {
                    var apps = APPSV.GetAppListByIds(appList);
                    if (apps != null && apps.Any())
                    {
                        comdtyListResultCDTO.appInfoList = new List <ComdtyAppInfoCDTO>();
                        foreach (var appInfo in apps)
                        {
                            comdtyListResultCDTO.appInfoList.Add(new ComdtyAppInfoCDTO
                            {
                                appId   = appInfo.AppId,
                                appName = appInfo.AppName,
                                icon    = appInfo.AppIcon
                            });
                        }

                        foreach (var commodityListCdto in commodityList)
                        {
                            var appInfo = apps.FirstOrDefault(c => c.AppId == commodityListCdto.AppId);
                            if (appInfo != null)
                            {
                                commodityListCdto.AppName = appInfo.AppName;
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    LogHelper.Error(string.Format("AppSetSV.GetCommodityListExt,获取app名称错误。appId:{0}", appId), ex);
                }

                comdtyListResultCDTO.comdtyList = commodityList;
            }
            catch (Exception ex)
            {
                LogHelper.Error(string.Format("商品列表查询错误,CommoditySV.GetCommodityListV2Ext。search:{0}", JsonHelper.JsonSerializer(search)), ex);
                comdtyListResultCDTO.isSuccess   = false;
                comdtyListResultCDTO.Code        = -1;
                comdtyListResultCDTO.Message     = "Error";
                comdtyListResultCDTO.realCount   = 0;
                comdtyListResultCDTO.comdtyList  = null;
                comdtyListResultCDTO.appInfoList = null;
                return(comdtyListResultCDTO);
            }
            comdtyListResultCDTO.isSuccess = true;
            comdtyListResultCDTO.Code      = 0;
            comdtyListResultCDTO.Message   = "Success";
            return(comdtyListResultCDTO);
        }
示例#5
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>());
            }
        }
示例#6
0
        /// <summary>
        /// 添加众筹
        /// </summary>
        /// <param name="crowdfundingDTO">众筹实体</param>
        public ResultDTO AddCrowdfundingExt(Jinher.AMP.BTP.Deploy.CrowdfundingDTO crowdfundingDTO)
        {
            if (crowdfundingDTO == null)
            {
                return new ResultDTO {
                           ResultCode = 2, Message = "入参不能为空"
                }
            }
            ;
            if (crowdfundingDTO.AppId == Guid.Empty)
            {
                return new ResultDTO {
                           ResultCode = 2, Message = "请正确填写应用"
                }
            }
            ;

            var dividendPercent = crowdfundingDTO.DividendPercent * crowdfundingDTO.ShareCount;

            if (dividendPercent > CustomConfig.CrowdfundingConfig.MaxDividend)
            {
                return new ResultDTO {
                           ResultCode = 2, Message = "您的订单成交额已不足抵扣分红,请重新设置!"
                }
            }
            ;

            if (crowdfundingDTO.StartTime < DateTime.Now)
            {
                return(new ResultDTO {
                    ResultCode = 2, Message = "众筹开始时间必须大于当前时间!"
                });
            }

            string message = "Success";

            try
            {
                var tmp = Crowdfunding.ObjectSet().FirstOrDefault(c => c.AppId == crowdfundingDTO.AppId);
                if (tmp != null)
                {
                    return new ResultDTO {
                               ResultCode = 3, Message = "该应用已经参加众筹活动,不能重复添加"
                    }
                }
                ;

                Dictionary <Guid, string> list = APPSV.GetAppNameListByIds(new List <Guid> {
                    crowdfundingDTO.AppId
                });

                if (list == null || !list.Any() || !list.ContainsKey(crowdfundingDTO.AppId) || list[crowdfundingDTO.AppId] != crowdfundingDTO.AppName.Trim())
                {
                    return new ResultDTO {
                               ResultCode = 2, Message = "应用Id与名称不符"
                    }
                }
                ;

                ContextSession contextSession = ContextFactory.CurrentThreadContext;

                //保存众筹
                Crowdfunding entity = Crowdfunding.CreateCrowdfunding();
                entity.AppName         = crowdfundingDTO.AppName;
                entity.AppId           = crowdfundingDTO.AppId;
                entity.PerShareMoney   = crowdfundingDTO.PerShareMoney;
                entity.DividendPercent = crowdfundingDTO.DividendPercent;
                entity.ShareCount      = crowdfundingDTO.ShareCount;
                entity.StartTime       = crowdfundingDTO.StartTime;
                entity.State           = 0;
                entity.Slogan          = crowdfundingDTO.Slogan;
                entity.Description     = crowdfundingDTO.Description;
                contextSession.SaveObject(entity);

                //保存众筹计数表
                CrowdfundingCount cnt = CrowdfundingCount.CreateCrowdfundingCount();
                cnt.AppId          = entity.AppId;
                cnt.CrowdfundingId = entity.Id;
                cnt.ShareCount     = entity.ShareCount;
                contextSession.SaveObject(cnt);

                contextSession.SaveChanges();
                if (dividendPercent > CustomConfig.CrowdfundingConfig.WarnDividend)
                {
                    message = string.Format("您的分红支出已超{0:P0},请注意收支平衡!", CustomConfig.CrowdfundingConfig.WarnDividend);
                }

                CrowdfundingMessageDTO Message = new CrowdfundingMessageDTO();
                Message.Now       = DateTime.Now;
                Message.StartTime = entity.StartTime;
                Message.State     = -1;
                AddMessage addMessage = new AddMessage();
                addMessage.SendMessage(entity.Id, entity.AppId, entity.StartTime, Message);
            }
            catch (Exception ex)
            {
                LogHelper.Error(string.Format("添加众筹服务异常。crowdfundingDTO:{0}", crowdfundingDTO), ex);
                return(new ResultDTO {
                    ResultCode = 1, Message = "Error"
                });
            }
            return(new ResultDTO {
                ResultCode = 0, Message = message
            });
        }
示例#7
0
        /// <summary>
        /// 众筹股东订单列表
        /// </summary>
        /// <param name="crowdfundingId">众筹Id</param>
        /// <param name="userId">用户Id</param>
        /// <param name="pageIndex">页码</param>
        /// <param name="pageSize">每页数量</param>
        public CommodityOrderVMDTO GetUserCrowdfundingOrdersExt(System.Guid crowdfundingId, System.Guid userId, int pageIndex, int pageSize)
        {
            CommodityOrderVMDTO CommodityOrderVMDTO = new CommodityOrderVMDTO();

            try
            {
                var query = from data in CommodityOrder.ObjectSet()
                            join CrowdfundingData in Crowdfunding.ObjectSet()
                            on data.AppId equals CrowdfundingData.AppId
                            join data1 in OrderRefund.ObjectSet()
                            on data.Id equals data1.OrderId
                            into tempT
                            from tb3 in tempT.DefaultIfEmpty()
                            join cf in CfOrderDividend.ObjectSet()
                            on data.Id equals cf.CommodityOrderId into CfOrderDividends
                            from cfOrderDividend in CfOrderDividends.DefaultIfEmpty()
                            where
                            data.UserId == userId && data.IsCrowdfunding != 0 && data.State != 0 &&
                            CrowdfundingData.Id == crowdfundingId
                            &&
                            (tb3.RefundMoney == null ? 0 : tb3.RefundMoney) <
                            (data.IsModifiedPrice ? data.RealPrice : data.Price) &&
                            tb3.State != 2 && tb3.State != 3 && tb3.State != 4 && tb3.State != 13
                            select new CommodityOrderVM
                {
                    AppId              = data.AppId,
                    UserId             = data.UserId,
                    CommodityOrderId   = data.Id,
                    CurrentPrice       = data.RealPrice,
                    State              = data.State,
                    CommodityOrderCode = data.Code,
                    SubTime            = data.SubTime,
                    ReceiptUserName    = data.ReceiptUserName,
                    Payment            = data.Payment,
                    PaymentTime        = data.PaymentTime,
                    ShipmentsTime      = data.ShipmentsTime,
                    ConfirmTime        = data.ConfirmTime,
                    ModifiedOn         = data.ModifiedOn,
                    Price              = data.Price,
                    MessageToBuyer     = data.MessageToBuyer,
                    IsModifiedPrice    = data.IsModifiedPrice,
                    ReceiptPhone       = data.ReceiptPhone,
                    RefundTime         = data.RefundTime,
                    AgreementTime      = data.AgreementTime,
                    Freight            = data.Freight,
                    Commission         = data.Commission,
                    IsCrowdfunding     = true,
                    CfDividend         = cfOrderDividend.Gold
                };

                var result = query.OrderByDescending(q => q.SubTime).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();

                #region 查询订单商品信息(优化)

                //构建订单id数组
                List <Guid> commodityOrderIdList = new List <Guid>();
                for (int i = 0; i < result.Count; i++)
                {
                    commodityOrderIdList.Add(result[i].CommodityOrderId);
                }

                CommodityCategory cc = new CommodityCategory();

                //取出所有订单的所有商品
                var orderItems = (from data in OrderItem.ObjectSet()
                                  //join data1 in Commodity.ObjectSet() on data.CommodityId equals data1.Id
                                  where commodityOrderIdList.Contains(data.CommodityOrderId)
                                  select new
                {
                    CommodityOrderId = data.CommodityOrderId,
                    CommodityId = data.CommodityId,
                    CommodityIdName = data.Name,
                    PicturesPath = data.PicturesPath,
                    Price = data.CurrentPrice,                  //取订单商品列表中的价格
                    Number = data.Number,
                    CommodityAttributes = data.CommodityAttributes,
                    CategoryName = data.CategoryNames,
                    RealPrice = data.RealPrice
                }).ToList();

                List <OrderItemsVM> orderItemsVMList = (from data in orderItems
                                                        select new OrderItemsVM
                {
                    CommodityOrderId = data.CommodityOrderId,
                    CommodityId = data.CommodityId,
                    CommodityIdName = data.CommodityIdName,
                    PicturesPath = data.PicturesPath,
                    Price = data.Price,                                       //取订单商品列表中的价格
                    RealPrice = data.RealPrice,
                    Number = data.Number,
                    SizeAndColorId = data.CommodityAttributes,
                    CommodityCategorys =
                        data.CategoryName == null ? new List <string>() : data.CategoryName.Split(',').ToList()
                }).ToList();

                Collection collect = new Collection();

                //遍历订单
                foreach (CommodityOrderVM v in result)
                {
                    List <OrderItemsVM> orderItemslist = new List <OrderItemsVM>();
                    //遍历订单中的商品,获取每个商品对应的颜色、尺寸属性
                    foreach (OrderItemsVM model in orderItemsVMList)
                    {
                        if (model.CommodityOrderId == v.CommodityOrderId)
                        {
                            orderItemslist.Add(model);
                        }
                    }
                    v.OrderItems = orderItemslist;
                }

                #endregion


                if (result != null && result.Count > 0)
                {
                    CommodityOrderVMDTO.List  = result;
                    CommodityOrderVMDTO.Total = query.Count();
                }
                else
                {
                    CommodityOrderVMDTO.Total = 0;
                }

                return(CommodityOrderVMDTO);
            }
            catch (Exception ex)
            {
                LogHelper.Error(string.Format("获取众筹列表服务异常。crowdfundingId:{0},userId:{1},pageIndex:{2},pageSize:{3}", crowdfundingId, userId, pageIndex, pageSize), ex);
                return(null);
            }


            return(CommodityOrderVMDTO);
        }