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