示例#1
0
        public int GetProductStatisticId(int productId, EnumTrafficActivityType activityType)
        {
            int       result           = 0;
            DbCommand sqlStringCommand = base.database.GetSqlStringCommand("SELECT TOP 1 [Id] FROM Hishop_ProductDailyAccessStatistics WHERE ProductId = @ProductId AND ActivityType = @ActivityType AND Year = @Year AND Month = @Month AND Day = @Day");

            base.database.AddInParameter(sqlStringCommand, "ProductId", DbType.Int32, productId);
            base.database.AddInParameter(sqlStringCommand, "ActivityType", DbType.Int32, (int)activityType);
            Database  database = base.database;
            DbCommand command  = sqlStringCommand;
            DateTime  now      = DateTime.Now;

            database.AddInParameter(command, "Year", DbType.Int32, now.Year);
            Database  database2 = base.database;
            DbCommand command2  = sqlStringCommand;

            now = DateTime.Now;
            database2.AddInParameter(command2, "Month", DbType.Int32, now.Month);
            Database  database3 = base.database;
            DbCommand command3  = sqlStringCommand;

            now = DateTime.Now;
            database3.AddInParameter(command3, "Day", DbType.Int32, now.Day);
            using (IDataReader dataReader = base.database.ExecuteReader(sqlStringCommand))
            {
                if (dataReader.Read())
                {
                    result = dataReader.GetInt32(0);
                }
            }
            return(result);
        }
示例#2
0
        public static bool ClearProudctStatistic(int productId, int quantity, decimal amount, OrderInfo order)
        {
            DateTime payDate = order.PayDate;
            EnumTrafficActivityType productActivityType = ProductStatisticsHelper.GetProductActivityType(order);

            return(new ProductStatisticsDao().ClearProudctStatistic(productId, quantity, amount, payDate, productActivityType));
        }
示例#3
0
        public static bool UpdateOrderSaleStatistics(OrderInfo order)
        {
            if (order.LineItems.Count == 0)
            {
                return(false);
            }
            EnumTrafficActivityType productActivityType = ProductStatisticsHelper.GetProductActivityType(order);

            return(new ProductStatisticsDao().UpdateOrderSaleStatistics(order, productActivityType));
        }
示例#4
0
        public bool UpdateOrderSaleStatistics(OrderInfo order, EnumTrafficActivityType activityType)
        {
            bool          flag          = false;
            StringBuilder stringBuilder = new StringBuilder();
            decimal       amount        = order.GetAmount(false);
            decimal       d             = amount - (order.GetTotal(false) - order.AdjustedFreight);
            decimal       num           = d / amount;

            if (num < decimal.Zero)
            {
                num = default(decimal);
            }
            foreach (LineItemInfo item in from it in order.LineItems.Values
                     group it by it.ProductId into g
                     select g.First())
            {
                IList <LineItemInfo> source = order.LineItems.Values.Where((LineItemInfo li) => li.ProductId == item.ProductId).ToList();
                bool    flag2 = this.ProudctTodayHasPayment(order.UserId, item.ProductId, order.OrderId);
                int     productStatisticId = this.GetProductStatisticId(item.ProductId, activityType);
                int     num2 = source.Sum((LineItemInfo li) => li.Quantity);
                decimal d2   = source.Sum((LineItemInfo li) => li.ItemAdjustedPrice * (decimal)li.Quantity);
                decimal num3 = d2 - d2 * num;
                if (productStatisticId > 0)
                {
                    stringBuilder.AppendFormat("UPDATE Hishop_ProductDailyAccessStatistics SET PaymentNum = PaymentNum + " + ((!flag2) ? 1 : 0) + ",SaleQuantity = SaleQuantity + {0},SaleAmount = SaleAmount + {1} WHERE [Id] = {2};", num2, num3, productStatisticId);
                }
                else
                {
                    StringBuilder stringBuilder2 = stringBuilder;
                    object[]      obj            = new object[8];
                    DateTime      dateTime       = DateTime.Now;
                    dateTime = dateTime.Date;
                    obj[0]   = dateTime.ToString("yyyy-MM-dd");
                    dateTime = DateTime.Now;
                    obj[1]   = dateTime.Year;
                    dateTime = DateTime.Now;
                    obj[2]   = dateTime.Month;
                    dateTime = DateTime.Now;
                    obj[3]   = dateTime.Day;
                    obj[4]   = (int)activityType;
                    obj[5]   = item.ProductId;
                    obj[6]   = num2;
                    obj[7]   = num3;
                    stringBuilder2.AppendFormat("INSERT INTO Hishop_ProductDailyAccessStatistics(StatisticalDate,Year,Month,Day,ActivityType,ProductId,PV,UV,PaymentNum,SaleQuantity,SaleAmount) Values('{0}',{1},{2},{3},{4},{5},0,0,1,{6},{7})", obj);
                }
            }
            if (stringBuilder.ToString() == "")
            {
                return(false);
            }
            DbCommand sqlStringCommand = base.database.GetSqlStringCommand(stringBuilder.ToString());

            return(base.database.ExecuteNonQuery(sqlStringCommand) > 0);
        }
示例#5
0
        public bool ClearProudctStatisticOfOrder(OrderInfo order, EnumTrafficActivityType activityType, int quantity, decimal refundAmount)
        {
            if (order.LineItems.Count <= 0)
            {
                return(false);
            }
            string        text          = order.PayDate.ToString("yyyy-MM-dd");
            string        format        = "UPDATE Hishop_ProductDailyAccessStatistics SET SaleQuantity = SaleQuantity - {0},SaleAmount = SaleAmount - {1} WHERE ProductId ={2} AND StatisticalDate = '{3}' AND ActivityType = {4};";
            StringBuilder stringBuilder = new StringBuilder();
            decimal       amount        = order.GetAmount(false);
            decimal       d             = amount - (order.GetTotal(false) - order.AdjustedFreight);
            decimal       num           = default(decimal);

            if (amount > decimal.Zero)
            {
                num = d / amount;
            }
            if (num < decimal.Zero)
            {
                num = default(decimal);
            }
            foreach (LineItemInfo value in order.LineItems.Values)
            {
                int num2 = quantity;
                if (num2 <= 0)
                {
                    num2 = value.Quantity;
                }
                decimal num3 = value.GetSubTotal() - value.GetSubTotal() * num;
                if (refundAmount > decimal.Zero)
                {
                    num3 = refundAmount - refundAmount * num;
                }
                if (num3 < decimal.Zero)
                {
                    num3 = default(decimal);
                }
                stringBuilder.AppendLine(string.Format(format, num2, num3, value.ProductId, text, (int)activityType));
            }
            DbCommand sqlStringCommand = base.database.GetSqlStringCommand(stringBuilder.ToString());

            return(base.database.ExecuteNonQuery(sqlStringCommand) > 0);
        }
示例#6
0
        public static EnumTrafficActivityType GetProductActivityType(OrderInfo order)
        {
            EnumTrafficActivityType result = EnumTrafficActivityType.Common;

            if (order.CountDownBuyId > 0)
            {
                result = EnumTrafficActivityType.CountDown;
            }
            else if (order.GroupBuyId > 0)
            {
                result = EnumTrafficActivityType.Group;
            }
            else if (order.FightGroupActivityId > 0)
            {
                result = EnumTrafficActivityType.FightGroup;
            }
            else if (order.PreSaleId > 0)
            {
                result = EnumTrafficActivityType.PreSale;
            }
            return(result);
        }
示例#7
0
        public bool ClearProudctStatistic(int productId, int quantity, decimal amount, DateTime statisticDate, EnumTrafficActivityType activityType)
        {
            string format = "UPDATE Hishop_ProductDailyAccessStatistics SET SaleQuantity = SaleQuantity - {0},SaleAmount = SaleAmount - {1} WHERE ProductId ={2} AND StatisticalDate = '{3}' AND ActivityType = {4}";

            format = string.Format(format, quantity, amount, productId, statisticDate.ToString("yyyy-MM-dd"), (int)activityType);
            DbCommand sqlStringCommand = base.database.GetSqlStringCommand(format);

            return(base.database.ExecuteNonQuery(sqlStringCommand) > 0);
        }
示例#8
0
        public static bool ClearProudctStatisticOfOrder(OrderInfo order, int quantity, decimal refundAmount)
        {
            EnumTrafficActivityType productActivityType = ProductStatisticsHelper.GetProductActivityType(order);

            return(new ProductStatisticsDao().ClearProudctStatisticOfOrder(order, productActivityType, quantity, refundAmount));
        }