コード例 #1
0
            /// <summary>
            /// 获取限定三级类以及品牌的活动
            /// </summary>
            /// <param name="filter"></param>
            /// <returns></returns>
            private List <int> GetCouponSysNoByC3SysNoOrBrandSysNo(RepeatPromotionQueryFilter filter)
            {
                DataCommand cmd = DataCommandManager.GetDataCommand("GetCouponSysNoByC3SysNoOrBrandSysNo");

                cmd.SetParameterValue("@StartDate", filter.StartDate ?? DateTime.Now.AddYears(-200));
                cmd.SetParameterValue("@EndDate", filter.EndDate ?? DateTime.Now.AddYears(200));
                cmd.SetParameterValue("@C3SysNo", filter.C3SysNo);
                cmd.SetParameterValue("@BrandSysNo", filter.BrandSysNo);
                var source = new List <int>();

                using (IDataReader reader = cmd.ExecuteDataReader())
                {
                    while (reader.Read())
                    {
                        var value = reader.GetInt32(0);
                        source.Add(value);
                    }
                }
                var otherSource = GetCouponSysNoByExcludeC3SysNo(filter);

                if (otherSource == null || otherSource.Count == 0)
                {
                    return(source);
                }
                source = source.Except(otherSource).ToList();
                return(source);
            }
コード例 #2
0
        /// <summary>
        /// 查询赠品
        /// </summary>
        /// <param name="queryCriteria"></param>
        /// <param name="totalCount"></param>
        /// <returns></returns>
        public DataTable GetGifts(RepeatPromotionQueryFilter queryCriteria, out int totalCount)
        {
            var pagingInfo = new PagingInfoEntity
            {
                SortField     = queryCriteria.PageInfo.SortBy,
                MaximumRows   = queryCriteria.PageInfo.PageSize,
                StartRowIndex = queryCriteria.PageInfo.PageIndex * queryCriteria.PageInfo.PageSize
            };

            var dataCommand = DataCommandManager.CreateCustomDataCommandFromConfig("GetGifts");

            using (var sqlBuilder = new DynamicQuerySqlBuilder(dataCommand.CommandText, dataCommand, pagingInfo, "C.SysNo DESC"))
            {
                var sysNoList = (new QueryGift()).GetGiftSysNo(queryCriteria);
                var sysNoStr  = sysNoList.Count <= 0 ? "-1" : sysNoList.Join(",");

                sqlBuilder.ConditionConstructor.AddSubQueryCondition(QueryConditionRelationType.AND,
                                                                     "C.SysNo",
                                                                     QueryConditionOperatorType.In,
                                                                     sysNoStr);
                dataCommand.CommandText = sqlBuilder.BuildQuerySql();
                var enumList = new EnumColumnList {
                    { "Status", typeof(SaleGiftStatus) }, { "Type", typeof(SaleGiftType) }
                };

                DataTable dt = dataCommand.ExecuteDataTable(enumList);
                totalCount = Convert.ToInt32(dataCommand.GetParameterValue("@TotalCount"));
                return(dt);
            }
        }
コード例 #3
0
        /// <summary>
        ///  查询促销计划
        /// </summary>
        /// <param name="queryCriteria"></param>
        /// <param name="totalCount"></param>
        /// <returns></returns>
        public DataTable GeSaleCountDownPlan(RepeatPromotionQueryFilter queryCriteria, out int totalCount)
        {
            var pagingInfo = new PagingInfoEntity
            {
                SortField     = queryCriteria.PageInfo.SortBy,
                MaximumRows   = queryCriteria.PageInfo.PageSize,
                StartRowIndex = queryCriteria.PageInfo.PageIndex * queryCriteria.PageInfo.PageSize
            };

            var dataCommand = DataCommandManager.CreateCustomDataCommandFromConfig("GetSaleCountDowns");

            using (var sqlBuilder = new DynamicQuerySqlBuilder(dataCommand.CommandText, dataCommand, pagingInfo, "C.SysNo DESC"))
            {
                sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND,
                                                             "C.ProductSysNo",
                                                             DbType.Int32, "@ProductSysNo",
                                                             QueryConditionOperatorType.Equal,
                                                             queryCriteria.ProductSysNo);
                sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND,
                                                             "C.Status",
                                                             DbType.Int32, "@Status",
                                                             QueryConditionOperatorType.In,
                                                             new List <object> {
                    CountdownStatus.WaitForVerify, CountdownStatus.Ready
                    , CountdownStatus.Running, CountdownStatus.Init, CountdownStatus.VerifyFaild
                });
                sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND,
                                                             "C.IsPromotionSchedule",
                                                             DbType.Int32, "@IsPromotionSchedule",
                                                             QueryConditionOperatorType.Equal,
                                                             1);
                if (queryCriteria.StartDate != null)
                {
                    sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND,
                                                                 "C.EndTime",
                                                                 DbType.String, "@StartDate",
                                                                 QueryConditionOperatorType.MoreThanOrEqual,
                                                                 queryCriteria.StartDate.Value);
                }
                if (queryCriteria.EndDate != null)
                {
                    sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND,
                                                                 "C.StartTime",
                                                                 DbType.String, "@EndDate",
                                                                 QueryConditionOperatorType.LessThan,
                                                                 queryCriteria.EndDate.Value);
                }

                dataCommand.CommandText = sqlBuilder.BuildQuerySql();
                var enumList = new EnumColumnList {
                    { "Status", typeof(CountdownStatus) }
                };

                DataTable dt = dataCommand.ExecuteDataTable(enumList);
                totalCount = Convert.ToInt32(dataCommand.GetParameterValue("@TotalCount"));
                return(dt);
            }
        }
コード例 #4
0
        public virtual QueryResult GeSaleCountDownPlan(RepeatPromotionQueryFilter msg)
        {
            int totalCount;
            var ds = ObjectFactory <IRepeatPromotionQueryDA> .Instance.GeSaleCountDownPlan(msg, out totalCount);

            return(new QueryResult
            {
                Data = ds,
                TotalCount = totalCount
            });
        }
コード例 #5
0
        public virtual QueryResult GetProductGroupBuying(RepeatPromotionQueryFilter msg)
        {
            int totalCount;
            var ds = ObjectFactory <IRepeatPromotionQueryDA> .Instance.GetProductGroupBuying(msg, out totalCount);

            return(new QueryResult
            {
                Data = ds,
                TotalCount = totalCount
            });
        }
コード例 #6
0
            /// <summary>
            /// 获取蛋卷活动
            /// </summary>
            /// <param name="filter"></param>
            /// <returns></returns>
            public List <int> GetCouponSysNo(RepeatPromotionQueryFilter filter)
            {
                var source       = new List <int>();
                var globals      = GetCouponSysNoByGlobal(filter);
                var otherglobals = GetCouponSysNoByProduct(filter);
                var giftSysno    = GetCouponSysNoByC3SysNoOrBrandSysNo(filter);

                source.AddRange(globals);
                source.AddRange(otherglobals);
                source.AddRange(giftSysno);
                return(source);
            }
コード例 #7
0
        /// <summary>
        ///  查询团购
        /// </summary>
        /// <param name="queryCriteria"></param>
        /// <param name="totalCount"></param>
        /// <returns></returns>
        public DataTable GetProductGroupBuying(RepeatPromotionQueryFilter queryCriteria, out int totalCount)
        {
            var pagingInfo = new PagingInfoEntity
            {
                SortField     = queryCriteria.PageInfo.SortBy,
                MaximumRows   = queryCriteria.PageInfo.PageSize,
                StartRowIndex = queryCriteria.PageInfo.PageIndex * queryCriteria.PageInfo.PageSize
            };

            var dataCommand = DataCommandManager.CreateCustomDataCommandFromConfig("GetProductGroupBuying");

            using (var sqlBuilder = new DynamicQuerySqlBuilder(dataCommand.CommandText, dataCommand, pagingInfo, "C.SysNo DESC"))
            {
                sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND,
                                                             "C.ProductSysNo",
                                                             DbType.Int32, "@ProductSysNo",
                                                             QueryConditionOperatorType.Equal,
                                                             queryCriteria.ProductSysNo);
                sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND,
                                                             "C.Status",
                                                             DbType.String, "@Status",
                                                             QueryConditionOperatorType.In,
                                                             new List <object> {
                    GroupBuyingStatus.Init, GroupBuyingStatus.Pending
                    , GroupBuyingStatus.Active
                });
                if (queryCriteria.StartDate != null)
                {
                    sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND,
                                                                 "C.EndDate",
                                                                 DbType.String, "@StartDate",
                                                                 QueryConditionOperatorType.MoreThanOrEqual,
                                                                 queryCriteria.StartDate.Value);
                }
                if (queryCriteria.EndDate != null)
                {
                    sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND,
                                                                 "C.BeginDate",
                                                                 DbType.String, "@EndDate",
                                                                 QueryConditionOperatorType.LessThan,
                                                                 queryCriteria.EndDate.Value);
                }

                dataCommand.CommandText = sqlBuilder.BuildQuerySql();
                var enumList = new EnumColumnList {
                    { "Status", typeof(GroupBuyingStatus) }, { "IsByGroup", typeof(IsDefaultShow) }
                };

                DataTable dt = dataCommand.ExecuteDataTable(enumList);
                totalCount = Convert.ToInt32(dataCommand.GetParameterValue("@TotalCount"));
                return(dt);
            }
        }
コード例 #8
0
        public virtual QueryResult GetCoupons(RepeatPromotionQueryFilter msg)
        {
            int totalCount;

            SetCondtion(msg);
            var ds = ObjectFactory <IRepeatPromotionQueryDA> .Instance.GetCoupons(msg, out totalCount);

            return(new QueryResult
            {
                Data = ds,
                TotalCount = totalCount
            });
        }
コード例 #9
0
            /// <summary>
            /// 获取赠品活动
            /// </summary>
            /// <param name="filter"></param>
            /// <returns></returns>
            public List <int> GetGiftSysNo(RepeatPromotionQueryFilter filter)
            {
                var source       = new List <int>();
                var globals      = GetGiftSysNoByGlobal(filter);
                var otherglobals = GetOthertGiftSysNoByGlobal(filter);
                var giftSysno    = GetGiftSysNoList(filter);
                var otherSysNo   = GetOtherGiftSysNoList(filter);

                source.AddRange(globals);
                source.AddRange(otherglobals);
                source.AddRange(giftSysno);
                source.AddRange(otherSysNo);
                source = source.Distinct().ToList();
                return(source);
            }
コード例 #10
0
        /// <summary>
        /// 设置条件
        /// </summary>
        /// <param name="msg"></param>
        private void SetCondtion(RepeatPromotionQueryFilter msg)
        {
            var process = ObjectFactory <RepeatPromotionAppService> .Instance;
            var product = process.GetProductInfo(msg.ProductId);

            if (product != null)
            {
                msg.BrandSysNo = product.ProductBasicInfo.ProductBrandInfo.SysNo ?? 0;
                msg.C3SysNo    = product.ProductBasicInfo.ProductCategoryInfo.SysNo ?? 0;
                if (msg.ProductSysNo <= 0)
                {
                    msg.ProductSysNo = product.SysNo;
                }
            }
        }
コード例 #11
0
            /// <summary>
            /// 获取全网活动
            /// </summary>
            /// <param name="filter"></param>
            /// <returns></returns>
            private List <int> GetCouponSysNoByGlobal(RepeatPromotionQueryFilter filter)
            {
                DataCommand cmd = DataCommandManager.GetDataCommand("GetCouponSysNoByGlobal");

                cmd.SetParameterValue("@StartDate", filter.StartDate ?? DateTime.Now.AddYears(-200));
                cmd.SetParameterValue("@EndDate", filter.EndDate ?? DateTime.Now.AddYears(200));
                var source = new List <int>();

                using (IDataReader reader = cmd.ExecuteDataReader())
                {
                    while (reader.Read())
                    {
                        var value = reader.GetInt32(0);
                        source.Add(value);
                    }
                }
                return(source);
            }
コード例 #12
0
        /// <summary>
        /// 查询销售规则
        /// </summary>
        /// <param name="queryCriteria"></param>
        /// <param name="totalCount"></param>
        /// <returns></returns>
        public DataTable GetSaleRules(RepeatPromotionQueryFilter queryCriteria, out int totalCount)
        {
            var pagingInfo = new PagingInfoEntity
            {
                SortField     = queryCriteria.PageInfo.SortBy,
                MaximumRows   = queryCriteria.PageInfo.PageSize,
                StartRowIndex = queryCriteria.PageInfo.PageIndex * queryCriteria.PageInfo.PageSize
            };

            var dataCommand = DataCommandManager.CreateCustomDataCommandFromConfig("GetSaleRules");

            using (var sqlBuilder = new DynamicQuerySqlBuilder(dataCommand.CommandText, dataCommand, pagingInfo, "C.SysNo DESC"))
            {
                //sqlBuilder.ConditionConstructor.BeginGroupCondition(QueryConditionRelationType.AND);
                //sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.OR,
                //  "C.ReferenceType",
                //  DbType.Int32, "@ReferenceType",
                //  QueryConditionOperatorType.Equal,
                //  1);
                //sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.OR,
                // "C.ReferenceType",
                // DbType.Int32, "@ReferenceType",
                // QueryConditionOperatorType.IsNull,
                // DBNull.Value);
                //sqlBuilder.ConditionConstructor.EndGroupCondition();


                var sb = new StringBuilder("Exists(select * From IPP3.dbo.SaleRule_Item  l WITH(NOLOCK) ");
                sb.Append(String.Format("Where l.SaleRuleSysNo=C.SysNo And l.ProductSysNo={0} AND  C.Status IN(0,1)) "
                                        , queryCriteria.ProductSysNo));
                sqlBuilder.ConditionConstructor.AddCustomCondition(QueryConditionRelationType.AND, sb.ToString());

                dataCommand.CommandText = sqlBuilder.BuildQuerySql();
                var enumList = new EnumColumnList {
                    { "Status", typeof(ComboStatus) }, { "IsShow", typeof(IsDefaultShow) }
                };

                DataTable dt = dataCommand.ExecuteDataTable(enumList);
                totalCount = Convert.ToInt32(dataCommand.GetParameterValue("@TotalCount"));
                return(dt);
            }
        }
コード例 #13
0
            /// <summary>
            /// 获取买满即送赠品的排除
            /// </summary>
            /// <param name="filter"></param>
            /// <returns></returns>
            private List <int> GetOtherGiftSysNoListByExclude(RepeatPromotionQueryFilter filter)
            {
                DataCommand cmd = DataCommandManager.GetDataCommand("GetOtherGiftSysNoListByExclude");

                cmd.SetParameterValue("@StartDate", filter.StartDate ?? DateTime.Now.AddYears(-200));
                cmd.SetParameterValue("@EndDate", filter.EndDate ?? DateTime.Now.AddYears(200));
                cmd.SetParameterValue("@ProductSysNo", filter.ProductSysNo);
                cmd.SetParameterValue("@C3SysNo", filter.C3SysNo);
                cmd.SetParameterValue("@BrandSysNo", filter.BrandSysNo);
                var source = new List <int>();

                using (IDataReader reader = cmd.ExecuteDataReader())
                {
                    while (reader.Read())
                    {
                        var value = reader.GetInt32(0);
                        source.Add(value);
                    }
                }
                return(source);
            }