Example #1
0
        private void RevealLottery()
        {
            int    interval     = int.Parse(System.Configuration.ConfigurationManager.AppSettings["ReadDBInteval"]);
            string splitLine    = "****************************************************************************";
            string subSplitLine = "---------------------------------------------------------------";

            while (!_revealWatchingStopped)
            {
                this.Invoke(new Action(() =>
                {
                    txtInfo.Text += splitLine + Environment.NewLine;
                    txtInfo.Text += string.Format("尝试新一次的开奖...【{0}】", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")) + Environment.NewLine;
                    log.Info(string.Format("尝试新一次的开奖...【{0}】", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")));
                    string errorString     = string.Empty;
                    OperationResult result = PrizeOrderContract.RevealLottery(interval, out errorString);
                    if (result.ResultType == OperationResultType.Success)
                    {
                        DataSet ds = (DataSet)result.AppendData;
                        if (!string.IsNullOrEmpty(errorString))
                        {
                            txtInfo.Text += errorString + Environment.NewLine;
                        }
                        if (ds != null && ds.Tables.Count > 0)
                        {
                            #region 定时
                            txtInfo.Text += subSplitLine + Environment.NewLine;
                            Notice(ds.Tables[0], "定时开奖");
                            #endregion

                            #region 定员
                            txtInfo.Text += subSplitLine + Environment.NewLine;
                            Notice(ds.Tables[1], "定员开奖");
                            #endregion

                            #region 竞猜
                            txtInfo.Text += subSplitLine + Environment.NewLine;
                            Notice(ds.Tables[2], "竞猜开奖");
                            #endregion

                            #region 现场
                            txtInfo.Text += subSplitLine + Environment.NewLine;
                            Notice(ds.Tables[3], "现场开奖");
                            txtInfo.Text += subSplitLine + Environment.NewLine;
                            #endregion
                        }
                    }
                    else
                    {
                        log.Error("出错了,错误信息:" + result.Message);
                        txtInfo.Text += "出错了,错误信息:" + result.Message + Environment.NewLine;
                    }
                    txtInfo.Text += "本次开奖结束!" + Environment.NewLine;
                    log.Info("本次开奖结束!");
                    txtInfo.Text += splitLine + Environment.NewLine + Environment.NewLine;
                }));
                Thread.Sleep(interval * 1000);
            }
        }
Example #2
0
        public OperationResult GetPrizeOrderDetail(Guid poid)
        {
            OperationResult result = PrizeOrderContract.GetPrizeOrderDetail(poid);

            if (result.ResultType == OperationResultType.Success)
            {
                PrizeOrder pomodel = (PrizeOrder)result.AppendData;
                result.AppendData = new PrizeOrderDetailView()
                {
                    PrizeView = new PrizeView()
                    {
                        Id            = pomodel.Prize.Id,
                        Name          = pomodel.Prize.Name,
                        Description   = pomodel.Prize.Description,
                        OriginalPhoto = pomodel.Prize.PrizePhotos.FirstOrDefault().ToSiteViewModel()
                    },
                    PrizeOrderView = new PrizeOrderView()
                    {
                        PrizeId                   = pomodel.Prize.Id,
                        Id                        = pomodel.Id,
                        RevealType                = pomodel.RevealType,
                        RevealState               = pomodel.RevealState,
                        LaunchTime                = pomodel.Extend.LaunchTime,
                        PoolCount                 = pomodel.Extend.PoolCount,
                        Question                  = pomodel.Extend.PrizeAsking.Question,
                        Answer                    = pomodel.Extend.PrizeAsking.Answer,
                        AnswerOptions             = pomodel.Extend.PrizeAsking.AnswerOptions,
                        AnswerRevealConditionType = pomodel.Extend.AnswerRevealConditionType,
                        ScopeType                 = pomodel.Extend.ScopeType,
                        ScopeAreaCity             = pomodel.Extend.ScopeCity,
                        IsNeedExchangeCode        = pomodel.Extend.IsNeedExchangeCode,
                        AddDate                   = pomodel.AddDate
                    },
                    MemberView = new MemberView()
                    {
                        Id             = pomodel.Prize.Member.Id,
                        Name           = pomodel.Prize.Member.Name,
                        UserName       = pomodel.Prize.Member.UserName,
                        Tel            = pomodel.Prize.Member.Extend.Tel,
                        AdvertisingUrl = pomodel.Prize.Member.Extend.AdvertisingUrl,
                        Province       = pomodel.Prize.Member.Extend.Address.Province,
                        City           = pomodel.Prize.Member.Extend.Address.City,
                        Town           = pomodel.Prize.Member.Extend.Address.Town,
                        AddrSuffix     = pomodel.Prize.Member.Extend.Address.Suffix
                    }
                };
            }
            return(result);
        }
Example #3
0
        public OperationResult GetPrizeAsking(Guid poid)
        {
            OperationResult result = PrizeOrderContract.GetPrizeOrderById(poid);

            if (result.ResultType == OperationResultType.Success)
            {
                PrizeOrder pomodel = (PrizeOrder)result.AppendData;
                result.AppendData = new PrizeOrderView()
                {
                    Question      = pomodel.Extend.PrizeAsking.Question,
                    AnswerOptions = pomodel.Extend.PrizeAsking.AnswerOptions
                };
            }
            return(result);
        }
Example #4
0
        /// <summary>
        ///     删除奖品
        /// </summary>
        /// <param name="member">奖品信息</param>
        /// <returns>业务操作结果</returns>
        public OperationResult Delete(Guid guid)
        {
            try
            {
                PrizeOrder pmodel = PrizeOrderContract.PrizeOrders.SingleOrDefault(m => m.Id.Equals(guid));
                if (pmodel == null)
                {
                    return(new OperationResult(OperationResultType.Error, string.Format("不存在Id为{0}的奖单", guid)));
                }

                return(PrizeOrderContract.Delete(pmodel));
            }
            catch (Exception ex)
            {
                return(new OperationResult(OperationResultType.Error, ex.Message));
            }
        }
Example #5
0
        /// <summary>
        ///     更新奖品
        /// </summary>
        /// <param name="member">奖品信息</param>
        /// <returns>业务操作结果</returns>
        public OperationResult Update(PrizeOrderView pvmodel)
        {
            PublicHelper.CheckArgument(pvmodel, "pvmodel");
            try
            {
                PrizeOrder dbmodel = PrizeOrderContract.PrizeOrders.SingleOrDefault(m => m.Id.Equals(pvmodel.Id));
                if (dbmodel == null)
                {
                    return(new OperationResult(OperationResultType.Error, string.Format("不存在要更新的Id为{0}的奖单", pvmodel.Id)));
                }

                //dbmodel.Name = pvmodel.Name;
                //dbmodel.Description = pvmodel.Description;
                //if (savePhoto) {
                //    dbmodel.Photo = pvmodel.Photo;
                //}
                //dbmodel.UpdateDate = DateTime.Now;
                return(PrizeOrderContract.Update(dbmodel));
            }
            catch (Exception ex)
            {
                return(new OperationResult(OperationResultType.Error, ex.Message));
            }
        }
Example #6
0
        private void button1_Click(object sender, EventArgs e)
        {
            var memberSet = AccountContract.Members.ToList();

            // 构造奖品
            List <Prize> prizelist = new List <Prize>();

            for (int i = 1; i < 30; i++)
            {
                Random rnd   = new Random((int)DateTime.Now.Ticks + i);
                var    prize = new Prize()
                {
                    Name = "奖品名称奖品名称" + i.ToString(), Description = "奖品描述奖品描述奖品描述奖品描述奖品描述奖品描述奖品描述奖品描述奖品描述奖品描述" + i.ToString(), AddDate = DateTime.Now
                };
                var memberArray = memberSet.ToArray();
                var member      = memberArray[rnd.Next(0, memberArray.Length)];
                prize.Member = member;
                //prize.Photo = StreamUtil.Base64ToBytes(StaticStrings.demoImageBase64String);
                prizelist.Add(prize);
            }
            PrizeRepository.Insert(prizelist);

            //DbSet<Prize> prizeSet = context.Set<Prize>();
            //prizeSet.AddOrUpdate(prizelist.ToArray());
            //context.SaveChanges();

            // 构造奖品
            List <PrizePhoto> photos = new List <PrizePhoto>();
            var prizeArray           = prizelist.ToArray();

            for (int i = 0; i < prizelist.Count; i++)
            {
                Random     rnd    = new Random((int)DateTime.Now.Ticks + i);
                PrizePhoto pphoto = new PrizePhoto
                {
                    Name  = "e26b4610-58fb-4ceb-ac72-a3f700c7c301.jpg",
                    Prize = prizeArray[rnd.Next(0, prizeArray.Length)]
                };

                photos.Add(pphoto);
            }
            PrizePhotoRepository.Insert(photos);
            //DbSet<PrizePhoto> pPhotoSet = context.Set<PrizePhoto>();
            //pPhotoSet.AddOrUpdate(photos.ToArray());
            //context.SaveChanges();

            var prizes = PrizeContract.Prizes.ToList();

            var prizeOrdersCount          = PrizeOrderContract.PrizeOrders.Count();
            List <PrizeOrder> prizeOrders = new List <PrizeOrder>();
            bool poAdded = false;

            if (prizeOrdersCount == 0)
            {
                for (int i = 0; i < prizes.Count; i++)
                {
                    Random rnd = new Random((int)DateTime.Now.Ticks + i);
                    //var member = AccountContract.Members.Skip(rnd.Next(0, prizesCount)).Take(1);
                    var prize      = prizes[i];
                    var prizeOrder = new PrizeOrder()
                    {
                        Prize         = prize,
                        RevealTypeNum = rnd.Next(3) + 1,
                        //RevealStateNum = rnd.Next(4) + 1,
                        RevealStateNum = (int)RevealState.UnDrawn,
                        SortOrder      = i + 1,
                        IsDeleted      = false,
                        AddDate        = DateTime.Now
                    };
                    switch (prizeOrder.RevealTypeNum)
                    {
                    case (int)RevealType.Timing:
                        prizeOrder.Extend = new PrizeOrderExtend()
                        {
                            LaunchTime    = DateTime.Now.AddMinutes(10),
                            MinLuckyCount = 1,
                            LuckyCount    = 5,
                            //,LuckyPercent = 2
                        };
                        break;

                    case (int)RevealType.Answer:
                        prizeOrder.Extend = new PrizeOrderExtend()
                        {
                            PrizeAsking = new PrizeAsking()
                            {
                                Question = "好声音冠军是谁?", Answer = "梁博"
                            },
                            MinLuckyCount = 1,
                            LuckyCount    = 5,
                            AnswerRevealConditionTypeNum = rnd.Next(2) + 1,
                            //,LuckyPercent = 2
                        };
                        switch (prizeOrder.Extend.AnswerRevealConditionTypeNum)
                        {
                        case (int)AnswerRevealConditionType.Timing:
                            prizeOrder.Extend.LaunchTime = DateTime.Now.AddMinutes(10);
                            break;

                        case (int)AnswerRevealConditionType.Quota:
                            prizeOrder.Extend.PoolCount = 50;
                            break;
                        }
                        break;

                    case (int)RevealType.Quota:
                        prizeOrder.Extend = new PrizeOrderExtend()
                        {
                            PoolCount     = 10,
                            MinLuckyCount = 1,
                            LuckyCount    = 5
                                            //,LuckyPercent = 2
                        };
                        break;
                    }

                    prizeOrders.Add(prizeOrder);
                }
                poAdded = true;
            }
            OperationResult result = new OperationResult(OperationResultType.NoChanged);

            if (poAdded)
            {
                result = PrizeOrderContract.Add(prizeOrders);
            }
            if (result.ResultType == OperationResultType.Success || !poAdded)
            {
                if (PrizeBettingContract.PrizeBettings.Count() == 0)
                {
                    var members = AccountContract.Members.OrderBy(po => po.Id).Skip(2).ToList();
                    var porders = PrizeOrderContract.PrizeOrders.ToList();

                    List <PrizeBetting> prizeBettings = new List <PrizeBetting>();
                    for (int i = 0; i < porders.Count; i++)
                    {
                        var prizeorder = porders[i];
                        for (int j = 0; j < members.Count; j++)
                        {
                            var member       = members[j];
                            var prizeBetting = new PrizeBetting()
                            {
                                PrizeOrder = prizeorder,
                                Member     = member,
                                Address    = "青岛市市南区江西路软件大厦",
                                Phone      = "18829876354",
                                IsDeleted  = false,
                                AddDate    = DateTime.Now
                            };
                            prizeBettings.Add(prizeBetting);
                        }
                    }
                    PrizeBettingContract.Add(prizeBettings);
                }
                MessageBox.Show("构造奖单数据成功");
                btnCreateData.Enabled = false;
            }
            else
            {
                MessageBox.Show(result.Message);
            }
        }
Example #7
0
        /// <summary>
        ///     添加奖品
        /// </summary>
        /// <param name="prizebetting">奖品信息</param>
        /// <param name="shouldMinus">是否该对用户的可发起抽奖次数减</param>
        /// <returns>业务操作结果</returns>
        public OperationResult Add(PrizeOrderView povmodel, bool shouldMinus = false)
        {
            PublicHelper.CheckArgument(povmodel, "povmodel");
            int?sortorder = PrizeOrderContract.PrizeOrders.Max(po => po.SortOrder);

            PrizeOrder pmodel = new PrizeOrder
            {
                RevealTypeNum = povmodel.RevealTypeNum,
                RevealState   = Component.Tools.RevealState.UnDrawn,
                Prize         = PrizeContract.Prizes.SingleOrDefault(m => m.Id.Equals(povmodel.PrizeId)),
                Extend        = new PrizeOrderExtend()
                {
                    Id = povmodel.Id
                },
                SortOrder = (sortorder ?? 0) + 1
            };

            switch (povmodel.RevealType)
            {
            case RevealType.Timing:
                pmodel.Extend.LaunchTime    = povmodel.LaunchTime;
                pmodel.Extend.MinLuckyCount = povmodel.MinLuckyCount;
                pmodel.Extend.LuckyCount    = povmodel.LuckyCount;
                //pmodel.Extend.LuckyPercent = povmodel.LuckyPercent;
                break;

            case RevealType.Quota:
                pmodel.Extend.PoolCount     = povmodel.PoolCount;
                pmodel.Extend.MinLuckyCount = povmodel.MinLuckyCount;
                pmodel.Extend.LuckyCount    = povmodel.LuckyCount;
                //pmodel.Extend.LuckyPercent = povmodel.LuckyPercent;
                break;

            case RevealType.Answer:
                pmodel.Extend.PrizeAsking.Question      = povmodel.Question;
                pmodel.Extend.PrizeAsking.AnswerOptions = povmodel.AnswerOptions;
                pmodel.Extend.PrizeAsking.Answer        = povmodel.Answer;
                pmodel.Extend.MinLuckyCount             = povmodel.MinLuckyCount;
                pmodel.Extend.LuckyCount         = povmodel.LuckyCount;
                pmodel.Extend.RevealTypeOfAnswer = povmodel.RevealTypeOfAnswer;

                if (pmodel.Extend.RevealTypeOfAnswer == RevealTypeOfAnswer.Auto)
                {
                    pmodel.Extend.AnswerRevealConditionTypeNum = (int)povmodel.AnswerRevealConditionType;
                    if (povmodel.AnswerRevealConditionType == AnswerRevealConditionType.Timing)
                    {
                        pmodel.Extend.LaunchTime = povmodel.LaunchTime;
                    }
                    else if (povmodel.AnswerRevealConditionType == AnswerRevealConditionType.Quota)
                    {
                        pmodel.Extend.PoolCount = povmodel.PoolCount;
                    }
                }
                //pmodel.Extend.LuckyPercent = povmodel.LuckyPercent;
                break;

            case RevealType.Scene:
                break;
            }
            try
            {
                return(PrizeOrderContract.Add(pmodel, shouldMinus));
            }
            catch (Exception ex)
            {
                return(new OperationResult(OperationResultType.Error, ex.Message));
            }
        }
Example #8
0
        /// <summary>
        ///  取消奖单
        /// </summary>
        /// <param name="poid">奖单Id</param>
        public OperationResult CancelReveal(Guid poid)
        {
            OperationResult result = PrizeOrderContract.UpdateLotteryState(poid, RevealState.Canceled);

            return(result);
        }
Example #9
0
        /// <summary>
        ///  手动开奖
        /// </summary>
        /// <param name="poid">奖单Id</param>
        /// <param name="rtype">开奖类型</param>
        public OperationResult ManualRevealLottery(Guid poid, int rtype)
        {
            OperationResult result = PrizeOrderContract.ManualRevealLottery(poid, rtype);

            return(result);
        }
Example #10
0
        /// <summary>
        ///  后知答案“竞猜开奖”
        /// </summary>
        /// <param name="id">奖单Id</param>
        /// <param name="answer">竞猜答案</param>
        public OperationResult RevealManualAnswerLottery(Guid id, string answer)
        {
            OperationResult result = PrizeOrderContract.RevealManualAnswerLottery(id, answer);

            return(result);
        }
Example #11
0
        /// <summary>
        ///  同时发布奖品、发起抽奖
        /// </summary>
        /// <param name="shouldMinus">是否该对用户的可发起抽奖次数减</param>
        public OperationResult BatchAdd(PrizeOrderDetailView porderdetail, bool shouldMinus = false)
        {
            int?       sortorder = PrizeOrderContract.PrizeOrders.Max(po => po.SortOrder);
            PrizeOrder porder    = new PrizeOrder()
            {
                Prize = new Prize()
                {
                    Name        = porderdetail.PrizeView.Name,
                    Description = porderdetail.PrizeView.Description,
                    Member      = new Member()
                    {
                        Id = porderdetail.MemberView.Id
                    },
                    PrizePhotos = new PrizePhoto[] {
                        new PrizePhoto()
                        {
                            Name         = porderdetail.PrizeView.OriginalPhoto.Name,
                            PhotoTypeNum = porderdetail.PrizeView.OriginalPhoto.PhotoTypeNum
                        }
                    }
                },
                RevealType  = porderdetail.PrizeOrderView.RevealType,
                RevealState = Component.Tools.RevealState.UnDrawn,
                SortOrder   = (sortorder ?? 0) + 1,
                Extend      = new PrizeOrderExtend()
                {
                    LuckyCount    = porderdetail.PrizeOrderView.LuckyCount, //中奖人数
                    MinLuckyCount = 1,                                      //最低中奖人数默认设置为1
                }
            };

            // 定员、定员、竞猜三种模式需要设置抽奖城市、是否需要兑奖码、运费
            if (RevealType.Scene != porderdetail.PrizeOrderView.RevealType)
            {
                porder.Extend.ScopeType = porderdetail.PrizeOrderView.ScopeType;
                if (porderdetail.PrizeOrderView.ScopeType == ScopeType.AreaCity)
                {
                    porder.Extend.ScopeCity = porderdetail.PrizeOrderView.ScopeAreaCity;
                }
                if (porderdetail.PrizeOrderView.ScopeType == ScopeType.Town)
                {
                    porder.Extend.ScopeCity = porderdetail.PrizeOrderView.ScopeAreaCity;
                    porder.Extend.ScopeTown = porderdetail.PrizeOrderView.ScopeTown;
                }

                // 运费
                porder.Extend.Freight = porderdetail.PrizeOrderView.Freight;
                // 预售价格
                porder.Extend.PresalePrice       = porderdetail.PrizeOrderView.PresalePrice;
                porder.Extend.IsNeedExchangeCode = porderdetail.PrizeOrderView.IsNeedExchangeCode;
            }
            switch (porderdetail.PrizeOrderView.RevealType)
            {
            case RevealType.Timing:
                porder.Extend.LaunchTime = porderdetail.PrizeOrderView.LaunchTime;     //开奖时间
                break;

            case RevealType.Quota:
                porder.Extend.PoolCount = porderdetail.PrizeOrderView.PoolCount;     //总人数
                break;

            case RevealType.Answer:
                porder.Extend.PrizeAsking.Question      = porderdetail.PrizeOrderView.Question;
                porder.Extend.PrizeAsking.AnswerOptions = porderdetail.PrizeOrderView.AnswerOptions;
                porder.Extend.RevealTypeOfAnswer        = porderdetail.PrizeOrderView.RevealTypeOfAnswer;
                // 竞猜开奖开奖方式为"自动"
                if (porder.Extend.RevealTypeOfAnswer == RevealTypeOfAnswer.Auto)
                {
                    porder.Extend.PrizeAsking.Answer = porderdetail.PrizeOrderView.Answer;
                    // 开奖条件
                    porder.Extend.AnswerRevealConditionType = porderdetail.PrizeOrderView.AnswerRevealConditionType;
                    switch (porder.Extend.AnswerRevealConditionType)
                    {
                    case AnswerRevealConditionType.Quota:
                        porder.Extend.PoolCount = porderdetail.PrizeOrderView.PoolCount;         //总人数
                        break;

                    case AnswerRevealConditionType.Timing:
                        porder.Extend.LaunchTime = porderdetail.PrizeOrderView.LaunchTime;         //开奖时间
                        break;
                    }
                }
                break;

            case RevealType.Scene:
                porder.Extend.LaunchTime = porderdetail.PrizeOrderView.LaunchTime;     //开奖时间
                break;
            }

            // 现场抽奖
            if (RevealType.Scene == porderdetail.PrizeOrderView.RevealType)
            {
                string            staffsString = porderdetail.PrizeOrderView.StaffsOfScenceString;
                List <SceneStaff> staffs       = new List <SceneStaff>();
                if (!string.IsNullOrEmpty(staffsString))
                {
                    string[] staffarray = staffsString.Split(new string[] { "|||" }, StringSplitOptions.RemoveEmptyEntries);
                    foreach (string item in staffarray)
                    {
                        staffs.Add(new SceneStaff()
                        {
                            Value   = item,
                            IsLucky = false,
                            LuckySceneStaffStateNum = LuckySceneStaffState.Default.ToInt()
                        });
                    }
                }

                porder.SceneStaffs = staffs;
            }

            return(PrizeOrderContract.BatchAdd(porder, shouldMinus));
        }
Example #12
0
        /// <summary>
        ///  置顶
        /// </summary>
        /// <param name="poid">奖单ID</param>
        /// <param name="moneyvalue">用户缴费金额</param>
        /// <param name="datelong">置顶时长</param>
        /// <param name="operatorid">操作者Id</param>
        public OperationResult Set2Top(Guid poid, decimal moneyvalue, int datelong, long operatorid)
        {
            OperationResult result = PrizeOrderContract.Set2Top(poid, moneyvalue, datelong, operatorid);

            return(result);
        }
Example #13
0
        /// <summary>
        ///  取奖单
        /// </summary>
        /// <param name="pageSize">每页输出的记录数</param>
        /// <param name="pageIndex">当前页数</param>
        /// <param name="whereString">条件字符串</param>
        /// <param name="orderbyString">排序字符串</param>
        /// <param name="totalCount">返回总记录</param>
        /// <param name="totalPageCount">返回总页数</param>
        /// <param name="revealtype">开奖类型</param>
        /// <param name="revealstate">奖单状态</param>
        /// <returns></returns>
        public OperationResult GetRevealedSceneLotteries(int pageSize, int pageIndex, string whereString, string orderbyString, out int totalCount, out int totalPageCount, int revealstate = 0)
        {
            OperationResult result = PrizeOrderContract.GetRevealedSceneLotteries(pageSize, pageIndex, whereString, orderbyString, out totalCount, out totalPageCount, revealstate);

            return(result);
        }
Example #14
0
        /// <summary>
        ///     获取Top奖单
        /// </summary>
        /// <returns>奖单信息结果集</returns>
        public OperationResult GetTopPrizeOrders(int topCount, int?rtype)
        {
            OperationResult result = PrizeOrderContract.GetTopPrizeOrders(topCount, rtype);

            return(result);
        }