Exemplo n.º 1
0
        /// <summary>
        ///  奖单详情
        /// </summary>
        //public ActionResult PrizeOrderDetail(Guid id)
        //{
        //    PrizeOrderView model = PrizeOrderContract.PrizeOrders
        //        .Where(p => p.Id.Equals(id))
        //        .Select(p => new PrizeOrderView()
        //        {
        //            Id = p.Id,
        //            RevealTypeNum = p.RevealTypeNum,
        //            RevealStateNum = p.RevealStateNum,
        //            LaunchTime = p.Extend.LaunchTime,
        //            MinLuckyCount = p.Extend.MinLuckyCount,
        //            LuckyCount = p.Extend.LuckyCount,
        //            LuckyPercent = p.Extend.LuckyPercent,
        //            PoolCount = p.Extend.PoolCount,
        //            Remarks = p.Extend.Remarks,
        //            AddDate = p.AddDate
        //        }).FirstOrDefault();
        //    if (model == null)
        //        ViewBag.Message = string.Format("不存在Id为{0}的奖单", id);
        //    return View(model);
        //}

        /// <summary>
        ///  奖单详情
        /// </summary>
        public ActionResult PrizeOrderDetail(Guid id)
        {
            //PrizeOrderView model = PrizeOrderContract.PrizeOrders
            //    .Where(p => p.Id.Equals(id))
            //    .Select(p => new PrizeOrderView()
            //    {
            //        Id = p.Id,
            //        RevealTypeNum = p.RevealTypeNum,
            //        RevealStateNum = p.RevealStateNum,
            //        LaunchTime = p.Extend.LaunchTime,
            //        MinLuckyCount = p.Extend.MinLuckyCount,
            //        LuckyCount = p.Extend.LuckyCount,
            //        LuckyPercent = p.Extend.LuckyPercent,
            //        PoolCount = p.Extend.PoolCount,
            //        Remarks = p.Extend.Remarks,
            //        AddDate = p.AddDate
            //    }).FirstOrDefault();
            PrizeOrderDetailView model = PrizeOrderSiteContract.GetPrizeOrderDetailView(id);

            if (model == null)
            {
                ViewBag.Message = string.Format("不存在Id为{0}的奖单", id);
            }
            return(View(model));
        }
Exemplo n.º 2
0
        /// <summary>
        ///  获取奖单详情
        /// </summary>
        /// <param name="id">奖单Id</param>
        public PrizeOrderDetailView GetPrizeOrderDetailView(Guid id)
        {
            var entity = (from po in PrizeOrderContract.PrizeOrders
                          join p in PrizeContract.Prizes on po.Prize.Id equals p.Id
                          join user in AccountContract.Members on p.Member.Id equals user.Id
                          where po.Id == id
                          select new
            {
                PrizeEntity = p,
                PrizeOrderEntity = po,
                UserEntity = user,
                RevealType = po.RevealType,
                BettingCount = po.PrizeBettings.Count
            })
                         .FirstOrDefault();
            var rtentity = new PrizeOrderDetailView()
            {
                PrizeView      = entity.PrizeEntity.ToSiteViewModel(),
                MemberView     = entity.UserEntity.ToSiteViewModel(),
                PrizeOrderView = entity.PrizeOrderEntity.ToSiteViewModel(),
            };

            //if (rtentity.PrizeOrderView.RevealType != RevealType.Scene)
            //{
            //    rtentity.PrizeOrderView.BettingCount = entity.BettingCount;
            //}
            return(rtentity);
        }
Exemplo n.º 3
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));
        }
Exemplo n.º 4
0
        public static IEnumerable <PrizeOrderDetailView> ToPrizeOrderDetailList(this DataRow[] rows)
        {
            List <PrizeOrderDetailView> rlist = new List <PrizeOrderDetailView>();

            foreach (DataRow row in rows)
            {
                var detail = new PrizeOrderDetailView()
                {
                    PrizeOrderView = new PrizeOrderView()
                    {
                        Id             = new Guid(row["PrizeOrderId"].ToString()),
                        PrizeId        = new Guid(row["PrizeId"].ToString()),
                        RevealTypeNum  = int.Parse(row["RevealType"].ToString()),
                        RevealStateNum = int.Parse(row["RevealState"].ToString()),
                        SortOrder      = int.Parse(row["SortOrder"].ToString()),
                        LuckyCount     = int.Parse(row["LuckyCount"].ToString()),
                        AddDate        = Convert.ToDateTime(row["RaiseTime"]),
                        ScopeAreaCity  = row["ScopeCity"].ToString(),
                        ScopeTown      = row["ScopeTown"].ToString(),
                        ScopeTypeNum   = int.Parse(row["ScopeType"].ToString()),
                        AnswerRevealConditionTypeNum = int.Parse(row["AnswerRevealConditionTypeNum"].ToString()),
                        Freight                = Convert.ToDecimal(row["Freight"]),
                        PresalePrice           = Convert.ToDecimal(row["PresalePrice"]),
                        ForgedParticipantCount = Convert.ToInt32(row["ForgedParticipantCount"])
                                                 //Is2Top = containIs2Top ? Convert.ToBoolean(row["Is2Top"]) : false
                    },
                    PrizeView = new PrizeView()
                    {
                        Id            = new Guid(row["PrizeId"].ToString()),
                        Name          = row["PrizeName"].ToString(),
                        Description   = row["PrizeDescription"].ToString(),
                        OriginalPhoto = new PrizePhotoView()
                        {
                            Name = row["OriginalPhotoName"].ToString()
                        }
                    },
                    MemberView = new MemberView()
                    {
                        Id             = long.Parse(row["MemberId"].ToString()),
                        UserName       = row["UserName"].ToString(),
                        Name           = row["UserNickName"].ToString(),
                        AdvertisingUrl = row["AdvertisingUrl"].ToString()
                    }
                };
                if (!(row["LaunchTime"] is System.DBNull))
                {
                    detail.PrizeOrderView.LaunchTime = Convert.ToDateTime(row["LaunchTime"]);
                }

                if (!(row["PoolCount"] is System.DBNull))
                {
                    detail.PrizeOrderView.PoolCount = Convert.ToInt32(row["PoolCount"]);
                }

                if (row.Table.Columns.Contains("RevealTypeOfAnswerNum"))
                {
                    detail.PrizeOrderView.RevealTypeOfAnswerNum = int.Parse(row["RevealTypeOfAnswerNum"].ToString());
                }

                if (row.Table.Columns.Contains("Is2Top"))
                {
                    detail.PrizeOrderView.Is2Top = Convert.ToBoolean(row["Is2Top"]);
                }
                else
                {
                    detail.PrizeOrderView.Is2Top = false;
                }

                if (row.Table.Columns.Contains("StaffTotalCount"))
                {
                    detail.PrizeOrderView.StaffTotalCount = Convert.ToInt32(row["StaffTotalCount"]);
                }


                if (row.Table.Columns.Contains("LuckyStaffs"))
                {
                    detail.PrizeOrderView.LuckyStaffsOfScenceString = row["LuckyStaffs"].ToString();
                }

                if (row.Table.Columns.Contains("BettingCount"))
                {
                    detail.PrizeOrderView.BettingCount = Convert.ToInt32(row["BettingCount"]);
                }

                if (row.Table.Columns.Contains("WhiteListCount"))
                {
                    detail.PrizeOrderView.WhiteListCount = Convert.ToInt32(row["WhiteListCount"]);
                }

                rlist.Add(detail);
            }

            return(rlist);
        }
Exemplo n.º 5
0
        private bool ValidatePrizeOrderDetailViewModel(PrizeOrderDetailView model)
        {
            switch (model.PrizeOrderView.RevealType)
            {
            case RevealType.Timing:
                if (model.PrizeOrderView.ScopeType == ScopeType.AreaCity &&
                    string.IsNullOrEmpty(model.PrizeOrderView.ScopeAreaCity))
                {
                    ViewBag.Message = "抽奖城市必须指定";
                    return(false);
                }
                if (model.PrizeOrderView.ScopeType == ScopeType.Town &&
                    string.IsNullOrEmpty(model.PrizeOrderView.ScopeTown))
                {
                    ViewBag.Message = "抽奖县/区必须指定";
                    return(false);
                }
                if (!model.PrizeOrderView.LaunchTime.HasValue)
                {
                    ViewBag.Message = "开奖时间必须指定";
                    return(false);
                }
                break;

            case RevealType.Quota:
                if (model.PrizeOrderView.ScopeType == ScopeType.AreaCity &&
                    string.IsNullOrEmpty(model.PrizeOrderView.ScopeAreaCity))
                {
                    ViewBag.Message = "抽奖城市必须指定";
                    return(false);
                }
                if (model.PrizeOrderView.ScopeType == ScopeType.Town &&
                    string.IsNullOrEmpty(model.PrizeOrderView.ScopeTown))
                {
                    ViewBag.Message = "抽奖县/区必须指定";
                    return(false);
                }
                if (!model.PrizeOrderView.PoolCount.HasValue || model.PrizeOrderView.PoolCount.Value == 0)
                {
                    ViewBag.Message = "总人数必须指定且大于0";
                    return(false);
                }
                break;

            case RevealType.Answer:
                if (model.PrizeOrderView.ScopeType == ScopeType.AreaCity &&
                    string.IsNullOrEmpty(model.PrizeOrderView.ScopeAreaCity))
                {
                    ViewBag.Message = "抽奖城市必须指定";
                    return(false);
                }
                if (model.PrizeOrderView.ScopeType == ScopeType.Town &&
                    string.IsNullOrEmpty(model.PrizeOrderView.ScopeTown))
                {
                    ViewBag.Message = "抽奖县/区必须指定";
                    return(false);
                }
                if (string.IsNullOrEmpty(model.PrizeOrderView.Question))
                {
                    ViewBag.Message = "必须命题";
                    return(false);
                }
                if (string.IsNullOrEmpty(model.PrizeOrderView.AnswerOptions))
                {
                    ViewBag.Message = "命题答案选项必须设置";
                    return(false);
                }

                //if (model.PrizeOrderView.RevealTypeOfAnswer == RevealTypeOfAnswer.Auto)
                //{
                //    ViewBag.Message = "竞猜开奖的开奖方式必须选择";
                //    return false;
                //}

                // 竞猜开奖的开奖方式为“自动”
                if (model.PrizeOrderView.RevealTypeOfAnswer == RevealTypeOfAnswer.Auto)
                {
                    switch (model.PrizeOrderView.AnswerRevealConditionType)
                    {
                    case AnswerRevealConditionType.Timing:
                        if (!model.PrizeOrderView.LaunchTime.HasValue)
                        {
                            ViewBag.Message = "开奖时间必须指定";
                            return(false);
                        }
                        break;

                    case AnswerRevealConditionType.Quota:
                        if (!model.PrizeOrderView.PoolCount.HasValue || model.PrizeOrderView.PoolCount.Value == 0)
                        {
                            ViewBag.Message = "总人数必须指定且大于0";
                            return(false);
                        }
                        break;
                    }
                }
                break;

            case RevealType.Scene:
                if (!model.PrizeOrderView.LaunchTime.HasValue)
                {
                    ViewBag.Message = "开奖时间必须指定";
                    return(false);
                }

                if (model.PrizeOrderView.InputTypeOfStaff == InputTypeOfStaff.Manual)
                {
                    if (string.IsNullOrEmpty(model.PrizeOrderView.StaffsOfScenceString))
                    {
                        ViewBag.Message = "抽奖人员至少指定一位";
                        return(false);
                    }

                    if (model.PrizeOrderView.StaffsOfScenceString.Split(new string[] { "|||" }, StringSplitOptions.RemoveEmptyEntries).Length == 0)
                    {
                        ViewBag.Message = "抽奖人员至少指定一位";
                        return(false);
                    }
                }

                if (model.PrizeOrderView.InputTypeOfStaff == InputTypeOfStaff.File)
                {
                    if (Request.Files.Count == 0 || Request.Files[0].ContentLength == 0)
                    {
                        ViewBag.Message = "请选择参与抽奖的人员文件";
                        return(false);
                    }

                    HttpPostedFileBase file = Request.Files["StaffFile"];
                    if (file != null)
                    {
                        try
                        {
                            string staffString = string.Empty;
                            int    counter     = 0;
                            byte[] bytes       = new byte[file.ContentLength];
                            //利用InputStream 属性直接从HttpPostedFile对象读取文本内容
                            System.IO.Stream fileStream = file.InputStream;
                            using (StreamReader sreader = new StreamReader(fileStream, Encoding.UTF8))
                            {
                                while (!sreader.EndOfStream)
                                {
                                    counter++;
                                    staffString += sreader.ReadLine() + "|||";
                                }
                            }
                            if (counter < model.PrizeOrderView.LuckyCount)
                            {
                                ViewBag.Message = "抽奖人员的名单人数不能少于中奖人数";
                                return(false);
                            }

                            //fileStream.Read(bytes, 0, file.ContentLength);
                            model.PrizeOrderView.StaffsOfScenceString = staffString;
                        }
                        catch (Exception ex)
                        {
                            ViewBag.Message = "读取参与抽奖人员的名单文件时出错了,请确认文件是否为【文本文件】,且内容合法。";
                            return(false);
                        }
                    }
                    else
                    {
                        ViewBag.Message = "参与抽奖人员的名单文件未选择。";
                        return(false);
                    }
                }
                break;
            }
            if (!model.PrizeOrderView.LuckyCount.HasValue || model.PrizeOrderView.LuckyCount.Value == 0)
            {
                ViewBag.Message = "中奖人数必须指定且大于0";
                return(false);
            }
            return(true);
        }
Exemplo n.º 6
0
        public ActionResult LaunchLottery(PrizeOrderDetailView model)
        {
            ViewBag.IsPostBack = true;

            ViewBag.RevealType    = model.PrizeOrderView.RevealType.ToInt().ToString();
            ViewBag.ScopeType     = model.PrizeOrderView.ScopeType.ToInt().ToString();
            ViewBag.ScopeProvince = model.PrizeOrderView.ScopeProvince;
            ViewBag.ScopeAreaCity = model.PrizeOrderView.ScopeAreaCity;

            //if (this.PubishingEnableTimes == 0)
            //{
            //    //验证码验证通过
            //    ViewBag.Message = "抱歉,您可发起抽奖的次数为0,请续费后再继续使用该功能。";
            //    return View(model);
            //}

            // 竞猜开奖并且开奖方式为“手动”,则取消对“开奖条件”的验证
            if (model.PrizeOrderView.RevealType == RevealType.Answer &&
                model.PrizeOrderView.RevealTypeOfAnswer == RevealTypeOfAnswer.Manual)
            {
                ModelState.Remove("PrizeOrderView.AnswerRevealConditionType");
            }

            // 非竞猜开奖,则取消对“揭晓答案(先知、后知)方式”的验证
            if (model.PrizeOrderView.RevealType != RevealType.Answer)
            {
                ModelState.Remove("PrizeOrderView.RevealTypeOfAnswer");
                ModelState.Remove("PrizeOrderView.AnswerRevealConditionType");
            }

            // 现场开奖,则取消对“是否需要兑奖码”的验证
            if (model.PrizeOrderView.RevealType == RevealType.Scene)
            {
                ModelState.Remove("PrizeOrderView.IsNeedExchangeCode");
                ModelState.Remove("PrizeOrderView.RevealTypeOfAnswer");
                ModelState.Remove("PrizeOrderView.AnswerRevealConditionType");
            }

            // 非现场开奖,则取消对“人员录入方式”的验证
            if (model.PrizeOrderView.RevealType != RevealType.Scene)
            {
                ModelState.Remove("PrizeOrderView.InputTypeOfStaff");
            }

            if (ModelState.IsValid)
            {
                //验证码验证通过
            }
            else
            {
                //验证码验证失败
                //ModelState.AddModelError("", e.Message);
                ViewBag.Message = "验证码输入不正确";
                return(View(model));
            }
            if ((this.UserId ?? 0) == 0)
            {
                //验证码验证失败
                //ModelState.AddModelError("", e.Message);
                ViewBag.Message = "当前登录的用户Id莫名的为空,无法发布奖品,请尝试退出并重新登录。";
                return(View(model));
            }
            else
            {
                model.MemberView.Id = this.UserId.Value;
            }

            if (!ValidatePrizeOrderDetailViewModel(model))
            {
                return(View(model));
            }

            // 先上传图片
            string upmessage    = string.Empty;
            string photoname    = string.Empty;
            bool   uploadResult = UploadPhoto(out upmessage, out photoname);

            if (!uploadResult)
            {
                ViewBag.Message = upmessage;
                return(View(model));
            }

            // 保存数据到数据库
            model.PrizeView.OriginalPhoto = new PrizePhotoView()
            {
                Name = photoname, PhotoTypeNum = PhotoType.Original.ToInt()
            };

            bool shouldMinus = this.PubishingEnableTimes < 1000000 ? true : false;

            OperationResult result = PrizeOrderSiteContract.BatchAdd(model, shouldMinus);

            if (result.ResultType == OperationResultType.Success)
            {
                if (shouldMinus)
                {
                    if (!this.UpdatePubishingEnableTimes())
                    {
                        //记日志(更新可发布奖品次数失败)
                    }
                }
                PrizeOrder porder = (PrizeOrder)result.AppendData;
                //ViewBag.OkMessage = "发布抽奖成功";
                //TempData["Message"] = string.Format("发起抽奖成功。<br /><a href='/Vip/PrizeOrderDetail/{0}'>查看<a>奖单", porder.Id);
                //return RedirectToAction("InfoPage");
                ViewBag.PostBackIsOK  = true;
                ViewBag.SuccessString = "发布抽奖成功,请等待审核。";
                return(View(model));
            }
            else
            {
                // 删除图片
                bool delresult = DeletePhoto(photoname);
                ViewBag.Message = "发布抽奖失败" + (delresult ? string.Empty : ",已经上传的图片在删除过程中也失败,可能已产生图片冗余");
            }
            return(View(model));
        }
Exemplo n.º 7
0
        //private void InitAnswerOptions(PrizeBettingView model)
        //{
        //    OperationResult innerresult = PrizeOrderSiteContract.GetPrizeAsking(model.PrizeOrderDetailView.PrizeOrderView.Id);
        //    if (innerresult != null)
        //    {
        //        PrizeOrderView pov = (PrizeOrderView)innerresult.AppendData;
        //        if (pov != null)
        //        {
        //            //ViewBag.Question = pov.Question;
        //            model.Question = pov.Question;
        //            model.AnswerOptionsString = pov.AnswerOptions;
        //        }
        //    }
        //}

        #region 发布抽奖
        public ActionResult LaunchLottery()
        {
            PrizeOrderDetailView model = new PrizeOrderDetailView();

            return(View(model));
        }