Exemple #1
0
        /// <summary>
        /// 获取活动列表
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        public static QueryPageModel <FullDiscountActiveList> GetActives(FullDiscountActiveQuery query)
        {
            QueryPageModel <FullDiscountActiveList> result = new QueryPageModel <FullDiscountActiveList>();
            var datalist = _iFullDiscountService.GetActives(query);

            result.Total = datalist.Total;
            var actids = datalist.Models.Select(d => d.Id).ToList();
            var fdparg = _iFullDiscountService.GetActivesProductCountAggregate(actids);

            result.Models = new List <FullDiscountActiveList>();
            foreach (var item in datalist.Models)
            {
                FullDiscountActiveList _data = Mapper.Map <ActiveInfo, FullDiscountActiveList>(item);
                if (_data.IsAllProduct)
                {
                    _data.ProductCount = -1;
                }
                else
                {
                    var _parg = fdparg.FirstOrDefault(d => d.ActiveId == _data.Id);
                    if (_parg != null)
                    {
                        _data.ProductCount = _parg.ProductCount;
                    }
                }
                result.Models.Add(_data);
            }
            return(result);
        }
Exemple #2
0
        /// <summary>
        /// 根据诊所查询活动
        /// </summary>
        /// <param name="shopId"></param>
        /// <returns></returns>
        public static List <ActiveInfo> GetOngoingActiveByShopId(long shopId)
        {
            FullDiscountActiveQuery discountActiveQuery = new FullDiscountActiveQuery();

            discountActiveQuery.ShopId   = new long?(shopId);
            discountActiveQuery.PageSize = int.MaxValue;
            discountActiveQuery.Status   = new FullDiscountStatus?(FullDiscountStatus.Ongoing);
            FullDiscountActiveQuery query = discountActiveQuery;
            QueryPageModel <FullDiscountActiveList> queryPageModel = new QueryPageModel <FullDiscountActiveList>();

            return(FullDiscountApplication._iFullDiscountService.GetActives(query).Models);
        }
        /// <summary>
        /// 获取商家正在参加的满额减
        /// </summary>
        /// <param name="proId"></param>
        /// <param name="shopId"></param>
        /// <returns></returns>
        public static List <Entities.ActiveInfo> GetOngoingActiveByShopId(long shopId)
        {
            FullDiscountActiveQuery query = new FullDiscountActiveQuery()
            {
                ShopId   = shopId,
                PageNo   = 1,
                PageSize = int.MaxValue,
                Status   = FullDiscountStatus.Ongoing
            };
            QueryPageModel <FullDiscountActiveList> result = new QueryPageModel <FullDiscountActiveList>();
            var datalist = Service.GetActives(query);

            return(datalist.Models);
        }
Exemple #4
0
        public JsonResult PostActiveList(string activeName, FullDiscountStatus?status, DateTime?startTime, DateTime?endTime, int page, int rows)
        {
            if (startTime.HasValue)
            {
                startTime = startTime.Value.Date;
            }
            if (endTime.HasValue)
            {
                endTime = endTime.Value.AddDays(1).Date;
            }
            var query = new FullDiscountActiveQuery();

            query.ShopId     = CurShopId;
            query.ActiveName = activeName;
            query.Status     = status;
            query.StartTime  = startTime;
            query.EndTime    = endTime;
            query.PageNo     = page;
            query.PageSize   = rows;
            var data     = FullDiscountApplication.GetActives(query);
            var datalist = data.Models.ToList();

            return(Json(new { rows = datalist, total = data.Total }));
        }
        /// <summary>
        /// 获取活动列表
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        public QueryPageModel <ActiveInfo> GetActives(FullDiscountActiveQuery query)
        {
            QueryPageModel <ActiveInfo> result = new QueryPageModel <ActiveInfo>();
            var curtime = DateTime.Now;
            int total   = 0;

            if (query.Status != null)  //有状态不过UNION all
            {
                #region 普通排序走ef
                var _where = Context.ActiveInfo.GetDefaultPredicate(true);
                _where = _where.And(d => d.ActiveType == CurrentActiveType);
                if (query.StartTime.HasValue)
                {
                    var startTime = query.StartTime.Value.Date;
                    _where = _where.And(d => d.StartTime >= startTime);
                }
                if (query.EndTime.HasValue)
                {
                    DateTime EndTime = query.EndTime.Value.AddDays(1).Date;
                    _where = _where.And(d => d.StartTime <= EndTime);
                }
                if (query.ShopId.HasValue)
                {
                    _where = _where.And(d => d.ShopId == query.ShopId.Value);
                }
                if (!string.IsNullOrWhiteSpace(query.ActiveName))
                {
                    _where = _where.And(d => d.ActiveName.Contains(query.ActiveName));
                }
                switch (query.Status)
                {
                case FullDiscountStatus.Ending:
                    _where = _where.And(d => d.EndTime < curtime);
                    break;

                case FullDiscountStatus.Ongoing:
                    _where = _where.And(d => d.StartTime <= curtime && d.EndTime >= curtime);
                    break;

                case FullDiscountStatus.WillStart:
                    _where = _where.And(d => d.StartTime > curtime && d.EndTime > d.StartTime);
                    break;
                }
                var sql   = Context.ActiveInfo.Where(_where);
                var order = sql.GetOrderBy(d => d.OrderByDescending(o => o.StartTime));
                List <ActiveInfo> datalist = sql.GetPage(out total, query.PageNo, query.PageSize, order).ToList();
                result.Models = datalist;
                result.Total  = total;
                #endregion
            }
            else
            {
                string sqlbasestring = @"select * from (
                        SELECT *,1 as ordernum from Himall_Active where EndTime<NOW() {where}
                        UNION ALL
                        SELECT *,2 as ordernum from Himall_Active where StartTime>NOW() {where}
                        UNION ALL
                        SELECT *,3 as ordernum from Himall_Active where StartTime<=NOW() and EndTime>=now() {where}
                        ) as t";
                string wherestring   = " and ActiveType=" + CurrentActiveType.GetHashCode().ToString() + " ";
                if (query.ShopId.HasValue)
                {
                    wherestring += " and ShopId=" + query.ShopId.ToString() + " ";
                }
                if (!string.IsNullOrWhiteSpace(query.ActiveName))
                {
                    wherestring += " and ActiveName like '%" + query.ActiveName + "%' ";
                }
                if (query.StartTime.HasValue)
                {
                    wherestring += " and StartTime >= '" + query.StartTime.Value.ToString("yyyy-MM-dd HH:mm:ss") + "' ";
                }
                if (query.EndTime.HasValue)
                {
                    DateTime EndTime = query.EndTime.Value.AddDays(1).Date;
                    wherestring += " and StartTime <= '" + EndTime.ToString("yyyy-MM-dd HH:mm:ss") + "' ";
                }
                sqlbasestring = sqlbasestring.Replace("{where}", wherestring);
                string countsqlstring = @"select count(1) from (" + sqlbasestring + ") as t";
                int    pstart         = (query.PageNo - 1) * query.PageSize;
                string sqlstring      = sqlbasestring + " ORDER BY ordernum DESC, StartTime desc limit " + pstart + "," + query.PageSize;
                total        = Context.Database.SqlQuery <int>(countsqlstring).FirstOrDefault();
                result.Total = total;
                List <ActiveInfo> datas = Context.Database.SqlQuery <ActiveInfo>(sqlstring).ToList();
                result.Models = datas;
            }
            return(result);
        }