Exemplo n.º 1
0
        /// <summary>
        /// 奖项统计
        /// </summary>
        /// <returns></returns>
        public Model.ReturnValue GetAwardStatistics()
        {
            Model.ReturnValue rv = new Model.ReturnValue();

            Dictionary <string, object> Person = new Dictionary <string, object>();

            Db.OrderInfoDal        OrderInfoDal        = new Db.OrderInfoDal();
            Db.AwardsStatisticsDal AwardsStatisticsDal = new Db.AwardsStatisticsDal();

            //获取中奖奖项统计订单
            List <Model.AwardsStatisticsModel> AwardsStatisticsList = AwardsStatisticsDal.GetModelList().Where(w => w.AwardsType == 1 && w.AwardsId != 7).ToList();

            #region 中奖人数

            List <SeriesData> DrawData = new List <SeriesData>();

            foreach (var model in AwardsStatisticsList)
            {
                DrawData.Add(new SeriesData()
                {
                    name  = model.AwardsName,
                    value = model.AllTotal
                });
            }

            Person.Add("Data1", DrawData);

            #endregion

            #region 发奖人数

            string sql = " select a.AwardsName name,(select COUNT(1) from [OrderInfo] where Jx=a.AwardsName) as value from AwardsStatistics a where  AwardsType = 1 and AwardsId <> 7";
            //string sql = "select jx as name,count(jx) as value FROM [OrderInfo] group by jx";
            DataTable dt = Db.ConDal.GetList(sql);

            Person.Add("Data2", Common.JsonHelper.DataTableToJson(dt));

            #endregion

            rv.ObjectValue = Person;
            rv.Success     = true;
            rv.ErrMessage  = "获取成功";

            return(rv);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 获取奖项(最多7个)
        /// </summary>
        /// <param name="PrizeCont">奖项总个数(最多7个)</param>
        /// <param name="AwardsType">抽奖类型 1:常规奖 2:红包奖</param>
        /// <returns>奖项</returns>
        public static Model.AwardsStatisticsModel GetPrize(int PrizeCont, int AwardsType)
        {
            if (PrizeCont > 7)
            {
                return(null);
            }

            Db.AwardsStatisticsDal AwardsDal = new Db.AwardsStatisticsDal();
            Db.ZpConfigDal         dal       = new Db.ZpConfigDal();
            Model.ZpConfigModel    m         = dal.GetModel(AwardsType);

            #region 获取所有奖项设置值

            #region 奖项每天总数
            int[] PrizeDayCont = new int[] { m.Zjl7, m.Zjl9, m.Zjl11, m.Zjl13, m.Zjl15, m.Zjl17 };
            #endregion

            #region 奖项总数
            int[] PrizeAllCont = new int[] { m.Zjl8, m.Zjl10, m.Zjl12, m.Zjl14, m.Zjl16, m.Zjl18 };
            #endregion

            #region 奖项预设中奖率

            int[] PresetProbability = new int[] { m.Zjl1, m.Zjl2, m.Zjl3, m.Zjl4, m.Zjl5, m.Zjl6 };
            #endregion

            #region 奖项实际中奖率
            int[] ActualProbability = new int[] { 0, 0, 0, 0, 0, 0 };
            #endregion

            #endregion

            #region 获取奖项统计参与详细
            List <Model.AwardsStatisticsModel> AwardsList = AwardsDal.GetModelList(string.Format(" and AwardsType={0} order by id", AwardsType));
            #endregion

            #region 获取奖项实际参与量与预设奖项总量比较后的中奖率
            for (int i = 0; i < PrizeCont - 1; i++)
            {
                ActualProbability[i] = PresetProbability[i];

                Model.AwardsStatisticsModel model = AwardsList.Where(w => w.AwardsId == i + 1).FirstOrDefault();//获取奖项参与详情
                if (model == null)
                {
                    throw new ArgumentNullException("获取奖项失败");
                }

                #region 如果当前奖项日期不等于当天,则每日总数为0
                if (model.DateStamp != DateTime.Now.ToShortDateString())
                {
                    model.TodayTotal = 0;
                }
                #endregion

                if (model.TodayTotal >= PrizeDayCont[i] || model.AllTotal - model.BackTotal >= PrizeAllCont[i])
                {
                    ActualProbability[i] = 0;
                }
            }
            #endregion

            #region 抽奖
            int          seven = 100 - ActualProbability[0] - ActualProbability[1] - ActualProbability[2] - ActualProbability[3] - ActualProbability[4] - ActualProbability[5];
            Common.Prize prize = new Common.Prize(ActualProbability[0], ActualProbability[1], ActualProbability[2], ActualProbability[3], ActualProbability[4], ActualProbability[5], seven);
            #endregion

            #region 赋值中奖详情-奖项-角度-奖品名称-奖项Id
            string[] PrizeModel = prize.GetPrize();

            Model.AwardsStatisticsModel AwardsPrizeModel = AwardsList.Where(s => s.AwardsName == PrizeModel[0]).FirstOrDefault();
            if (AwardsPrizeModel == null)
            {
                throw new ArgumentNullException("获取奖项失败");
            }

            AwardsPrizeModel.Angle = PrizeModel[1];//角度
            #endregion

            return(AwardsPrizeModel);
        }
Exemplo n.º 3
0
        /// <summary>
        /// 参与统计
        /// </summary>
        /// <returns></returns>
        public Model.ReturnValue GetWheaterStatistics()
        {
            Model.ReturnValue rv = new Model.ReturnValue();

            Dictionary <string, List <SeriesData> > Person = new Dictionary <string, List <SeriesData> >();

            Db.OrderInfoDal        OrderInfoDal        = new Db.OrderInfoDal();
            Db.AwardsStatisticsDal AwardsStatisticsDal = new Db.AwardsStatisticsDal();

            //获取奖项统计订单
            List <Model.AwardsStatisticsModel> AwardsStatisticsList = AwardsStatisticsDal.GetModelList().Where(w => w.AwardsType == 1).ToList();

            #region 昨日

            List <SeriesData> YesterdayData = new List <SeriesData>();
            YesterdayData.Add(new SeriesData()
            {
                name  = "参与人次",
                value = AwardsStatisticsList.Sum(s => s.YesterdayTotal)
            });

            YesterdayData.Add(new SeriesData()
            {
                name  = "中奖人次",
                value = AwardsStatisticsList.Where(w => w.AwardsId != 7).ToList().Sum(s => s.YesterdayTotal)
            });

            YesterdayData.Add(new SeriesData()
            {
                name  = "发奖人次",
                value = OrderInfoDal.CheckCount(string.Format(" and Jx<>'参与奖' and States=1 and DateStamp='{0}'", DateTime.Now.AddDays(-1).ToString("yyyyMMdd")))
            });

            Person.Add("Data1", YesterdayData);

            #endregion

            #region 今日

            List <SeriesData> TodayData = new List <SeriesData>();
            TodayData.Add(new SeriesData()
            {
                name  = "参与人次",
                value = AwardsStatisticsList.Sum(s => s.TodayTotal)
            });

            TodayData.Add(new SeriesData()
            {
                name  = "中奖人次",
                value = AwardsStatisticsList.Where(w => w.AwardsId != 7).ToList().Sum(s => s.TodayTotal)
            });

            TodayData.Add(new SeriesData()
            {
                name  = "发奖人次",
                value = OrderInfoDal.CheckCount(string.Format(" and Jx<>'参与奖' and States=1 and DateStamp='{0}'", DateTime.Now.ToString("yyyyMMdd")))
            });

            Person.Add("Data2", TodayData);

            #endregion

            #region 累计

            List <SeriesData> AllData = new List <SeriesData>();
            AllData.Add(new SeriesData()
            {
                name  = "参与人次",
                value = AwardsStatisticsList.Sum(s => s.AllTotal)
            });

            AllData.Add(new SeriesData()
            {
                name  = "中奖人次",
                value = AwardsStatisticsList.Where(w => w.AwardsId != 7).ToList().Sum(s => s.AllTotal)
            });

            AllData.Add(new SeriesData()
            {
                name  = "发奖人次",
                value = OrderInfoDal.CheckCount(string.Format(" and Jx<>'参与奖' and States=1 "))
            });

            Person.Add("Data3", AllData);

            #endregion

            rv.ObjectValue = Person;
            rv.Success     = true;
            rv.ErrMessage  = "获取成功";

            return(rv);
        }