Beispiel #1
0
        /// <summary>
        /// 获取 未完成的拼团列表
        /// </summary>
        /// <param name="inputDTO"></param>
        /// <returns></returns>
        public Deploy.CustomDTO.ResultDTO <List <UnfinishedDiyGroupOutputDTO> > UnfinishedDiyGrouplistExt(UnfinishedDiyGroupInputDTO inputDTO)
        {
            var appId = inputDTO.AppId;
            var outsidePromotionId = inputDTO.OutsidePromoId;
            var maxTakeCount       = 10;

            var appinfos = ZPHSV.Instance.GetAppIdlist(new List <Guid>()
            {
                appId
            });
            var appids = appinfos.Select(t => t.AppId).ToList();

            appids.Add(appId);

            try
            {
                LogHelper.Debug(string.Format("查询到的未完成的拼团列表. Input:{0}", JsonHelper.JsonSerializer(inputDTO)));

                //计算未完成的拼团列表
                var query = from g in DiyGroup.ObjectSet()
                            join p in Promotion.ObjectSet() on g.PromotionId equals p.Id
                            join go in
                            (from o in DiyGroupOrder.ObjectSet()
                             where o.State == 1
                             group o by o.DiyGroupId into og
                             select new
                {
                    Key = og.Key,
                    MemberCount = og.Count()
                }) on g.Id equals go.Key
                            where
                            p.PromotionType == 3 &&
                            g.State == 1 &&
                            g.ExpireTime >= DateTime.Now &&
                            appids.Contains(g.AppId) &&
                            p.OutsideId == outsidePromotionId
                            select
                            new
                {
                    GroupId    = g.Id,
                    OwnerId    = g.SubId,
                    LackMember = (p.GroupMinVolume ?? 0) - go.MemberCount,
                    ExpireTime = g.ExpireTime
                };

                var list = query
                           .OrderByDescending(selector => selector.LackMember)
                           .ThenBy(selector => selector.ExpireTime)
                           .Take(maxTakeCount)
                           .ToList();

                //获取团长信息
                var cbcFacade    = new TPS.CBCSVFacade();
                var userNameFunc = new Func <Guid, string>(userId =>
                {
                    var user = cbcFacade.GetUserNameIconDTO(userId);
                    if (user != null)
                    {
                        return(user.Name);
                    }
                    return(string.Empty);
                });

                var userIconFunc = new Func <Guid, string>(userId =>
                {
                    var user = cbcFacade.GetUserNameIconDTO(userId);
                    if (user != null)
                    {
                        return(user.HeadIcon);
                    }
                    return(string.Empty);
                });

                var data = list.Select(selector => new UnfinishedDiyGroupOutputDTO()
                {
                    GroupId    = selector.GroupId,
                    LackMember = selector.LackMember,
                    ExpireTime = selector.ExpireTime,
                    OwnerIcon  = userIconFunc(selector.OwnerId),
                    OwnerName  = userNameFunc(selector.OwnerId)
                }).ToList();

                var result = new ResultDTO <List <UnfinishedDiyGroupOutputDTO> >()
                {
                    isSuccess  = true,
                    ResultCode = 0,
                    Data       = data
                };

                LogHelper.Debug(string.Format("查询到的未完成的拼团列表. Output:{0}", JsonHelper.JsonSerializer(result)));

                return(result);
            }
            catch (Exception ex)
            {
                LogHelper.Error(string.Format("查询未完成的拼团列表发生异常. {0}", ex.Message), ex);
                return(new ResultDTO <List <UnfinishedDiyGroupOutputDTO> >
                {
                    Data = new List <UnfinishedDiyGroupOutputDTO>()
                });
            }
        }
Beispiel #2
0
 /// <summary>
 /// 获取 未完成的拼团列表
 /// </summary>
 /// <param name="inputDTO"></param>
 /// <returns></returns>
 public ResultDTO <List <UnfinishedDiyGroupOutputDTO> > UnfinishedDiyGrouplist(UnfinishedDiyGroupInputDTO inputDTO)
 {
     base.Do();
     return(this.Command.UnfinishedDiyGrouplist(inputDTO));
 }