/// <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); }
/// <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); }
/// <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); }