/// <summary> /// 获取中奖概率 /// </summary> /// <param name="id"></param> /// <param name="awardId"></param> /// <returns></returns> public double GetCount(long id, long awardId) { var item = WeiActivityApplication.GetActivityModel(id); var proportions = 0.0;//抽取完成的概率总和 float sum = 0; List <WeiActivityAwardModel> listModel = item.awards; var model = listModel.Where(p => p.Id == awardId).ToList(); foreach (var t in item.awards) { bool falg = WeiActivityWinApplication.GetWinNumberByAward(id, t.Id); //查询当前奖等是否有剩余数量 if (!falg) //无剩余数量 { proportions += t.proportion; continue; } if (t.awardLevel < model[0].awardLevel) { sum += t.proportion; } } var isOver = WeiActivityWinApplication.GetWinNumberByAward(id, awardId);//是否还有奖品 if (!isOver) { return(0); } else { return(proportions + sum + model[0].proportion); } }
public double GetCount(long id, long awardId) { WeiActivityModel activityModel = WeiActivityApplication.GetActivityModel(id); double num = 0.0; float num2 = 0f; List <WeiActivityAwardModel> list2 = (from p in activityModel.awards where p.Id == awardId select p).ToList <WeiActivityAwardModel>(); foreach (WeiActivityAwardModel model2 in activityModel.awards) { if (!WeiActivityWinApplication.GetWinNumberByAward(id, model2.Id)) { num += model2.proportion; } else if (model2.awardLevel < list2[0].awardLevel) { num2 += model2.proportion; } } if (!WeiActivityWinApplication.GetWinNumberByAward(id, awardId)) { return(0.0); } return((num + num2) + list2[0].proportion); }
public int GetParticipationCount(WeiActivityModel activityModel) { int winModel = WeiActivityWinApplication.GetWinModel(activityModel); if (winModel != -1) { return(activityModel.participationCount - winModel); } return(winModel); }
public JsonResult WinList(string text, long id, int page = 1, int rows = 20) { var result = WeiActivityWinApplication.GetActivityWin(text, id, page, rows); var datas = result.Models.ToList(); DataGridModel <WeiActivityWinModel> weiActivityWinModel = new DataGridModel <WeiActivityWinModel> { rows = datas, total = result.Total }; return(Json(weiActivityWinModel)); }
/// <summary> /// 计算用户可抽奖次数 /// </summary> /// <param name="activityModel"></param> /// <returns></returns> public int GetParticipationCount(WeiActivityModel activityModel) { int participationCount = WeiActivityWinApplication.GetWinModel(activityModel); if (participationCount != -1) { return(activityModel.participationCount - participationCount); } else { return(participationCount); } }
private List <SelectListItem> BindDrop(bool Edit) { List <SelectListItem> bonusList = new List <SelectListItem> { new SelectListItem { Selected = true, Text = "请选择红包...", Value = "0" } }; var bonus = WeiActivityWinApplication.GetBonusByType(BonusInfo.BonusType.Prize); if (Edit)//是否是修改 { foreach (var item in bonus) { bonusList.Add(new SelectListItem { Selected = false, Text = item.Name, Value = item.Id.ToString() }); } } else { foreach (var item in bonus) { var count = int.Parse(GetBonusSurplus(item.Id)); if (count > 0) { bonusList.Add(new SelectListItem { Selected = false, Text = item.Name + " 剩余:" + count + " 个", Value = item.Id.ToString() }); } } } return(bonusList); }
public ActionResult Add(string productCommentsJSON) { //用于提交时 积分参数为抽奖需消耗积分 var productComments = JsonConvert.DeserializeObject <WeiActivityWinModel>(productCommentsJSON); if (productComments != null) { WeiActivityModel activityModel = WeiActivityApplication.GetActivityModel(productComments.activityId); int participationCount = activityModel != null?GetParticipationCount(activityModel) : 0; if (participationCount > 0) { WeiActivityWinApplication.WinnerSubmit(productComments); } } return(Json(new Result() { success = true, msg = "成功" })); }
public ActionResult Add(long id, long userId) { WeiActivityModel activityModel = WeiActivityApplication.GetActivityModel(id); this.activityWinModel = new WeiActivityWinModel(); int num = new Random().Next(1, 100); this.activityWinModel.activityId = id; this.activityWinModel.addDate = DateTime.Now; this.activityWinModel.userId = userId; this.activityWinModel.integrals = activityModel.consumePoint; this.activityWinModel.isWin = false; this.activityWinModel.awardId = 0L; this.activityWinModel.awardName = "未中奖"; foreach (WeiActivityAwardModel model2 in activityModel.awards) { if (num <= this.GetCount(activityModel.Id, model2.Id)) { this.activityWinModel.isWin = true; if (model2.awardType == WeiActivityAwardType.Integral) { this.activityWinModel.awardName = model2.integral.ToString(); this.activityWinModel.awardId = model2.Id; this.activityWinModel.awardType = model2.awardType; break; } if (model2.awardType == WeiActivityAwardType.Bonus) { BonusInfo info = this._iBonusService.Get(model2.bonusId); if (info == null) { this.activityWinModel.isWin = false; } else { string bonusSurplus = this._iBonusService.GetBonusSurplus(model2.bonusId); if (info.IsInvalid) { this.activityWinModel.isWin = false; } else if (Convert.ToInt32(bonusSurplus) <= 0) { this.activityWinModel.isWin = false; } else { this.activityWinModel.awardName = info.Name; this.activityWinModel.awardId = model2.Id; this.activityWinModel.awardType = model2.awardType; this.activityWinModel.bonusId = model2.bonusId; } } break; } if (model2.awardType == WeiActivityAwardType.Coupon) { CouponModel model3 = CouponApplication.Get(model2.couponId); if (model3 == null) { this.activityWinModel.isWin = false; } else { int num2 = WeiActivityWinApplication.GetCouPonMax(this.activityWinModel.userId, this.activityWinModel.activityId, model2.Id); if (model3.Num <= 0) { this.activityWinModel.isWin = false; } else if ((model3.perMax != 0) && (num2 >= model3.perMax)) { this.activityWinModel.isWin = false; } else if (model3.EndTime < DateTime.Now) { this.activityWinModel.isWin = false; } else { string couponName = model3.CouponName; if (model3.ShopName != "") { couponName = couponName + "(" + model3.ShopName + ")"; } if (model3.OrderAmount != "") { couponName = couponName + "(" + model3.OrderAmount + ")"; } this.activityWinModel.awardName = couponName; this.activityWinModel.awardId = model2.Id; this.activityWinModel.awardType = model2.awardType; this.activityWinModel.couponId = model2.couponId; } } break; } } } WeiActivityWinApplication.WinnerSubmit(this.activityWinModel); decimal receivePriceByUserId = 0M; if (this.activityWinModel.bonusId > 0L) { receivePriceByUserId = this._iBonusService.GetReceivePriceByUserId(this.activityWinModel.bonusId, userId); } BaseController.Result data = new BaseController.Result { success = true, msg = this.activityWinModel.awardId.ToString() + "," + receivePriceByUserId.ToString() }; return(base.Json(data)); }
public WeiActivityWinModel AddWinInfo(WeiActivityModel activityModel) { activityWinModel = new WeiActivityWinModel(); Random r = new Random(); int num = r.Next(1, 101);//获取随机数做为中奖信息 activityWinModel.activityId = activityModel.Id; activityWinModel.addDate = DateTime.Now; activityWinModel.userId = curUserId; activityWinModel.isWin = false; activityWinModel.awardId = 0; activityWinModel.awardName = "未中奖"; activityWinModel.awardType = WeiActivityAwardType.Integral; // var activityModel=WeiActivityWinApplication.GetWinModel() foreach (var item in activityModel.awards) { //获取的随机数在该奖等区域类 if (num <= GetCount(activityModel.Id, item.Id)) { if (item.awardType == WeiActivityAwardType.Integral) { activityWinModel.awardName = item.integral.ToString(); activityWinModel.awardId = item.Id; activityWinModel.awardType = item.awardType; activityWinModel.isWin = true; return(activityWinModel); } else if (item.awardType == WeiActivityAwardType.Bonus) { Model.BonusInfo bonusInfo = _iBonusService.Get(item.bonusId); string Surplus = _iBonusService.GetBonusSurplus(item.bonusId); if (bonusInfo.IsInvalid)//红包已经失效 返回 未中奖 { break; } if (Convert.ToInt32(Surplus) <= 0)//当前红包已经领取完 设置未中奖 { break; } //获取红包名称 activityWinModel.awardName = bonusInfo.Himall_BonusReceive.Where(p => p.IsShare == false && p.UserId == null).FirstOrDefault().Price.ToString() + "元红包"; activityWinModel.awardId = item.Id; activityWinModel.awardType = item.awardType; activityWinModel.bonusId = bonusInfo.Id; activityWinModel.isWin = true; return(activityWinModel); } else if (item.awardType == WeiActivityAwardType.Coupon) { CouponModel couponModel = CouponApplication.Get(item.couponId); int perMax = WeiActivityWinApplication.GetCouPonMax(activityWinModel.userId, activityWinModel.activityId, item.Id); if (couponModel == null) { break; } if (couponModel.Num <= 0)//无库存 返回 未中奖 { break; } if (couponModel.EndTime < DateTime.Now)//优惠券失效 { break; } if (couponModel.perMax != 0 && perMax >= couponModel.perMax) { break; } //获取优惠券名称 string awardName = couponModel.CouponName; if (couponModel.ShopName != "") { awardName = awardName + "(" + couponModel.ShopName + ")"; } if (couponModel.OrderAmount != "") { activityWinModel.amount = "(" + couponModel.OrderAmount + ")"; } activityWinModel.awardName = awardName; activityWinModel.awardId = item.Id; activityWinModel.awardType = item.awardType; activityWinModel.couponId = couponModel.Id; activityWinModel.isWin = true; return(activityWinModel); } } } return(activityWinModel); }
public ActionResult Add(long id, long userId) { WeiActivityModel activityModel = WeiActivityApplication.GetActivityModel(id); activityWinModel = new WeiActivityWinModel(); Random r = new Random(); int num = r.Next(1, 100);//获取随机数做为中奖信息 activityWinModel.activityId = id; activityWinModel.addDate = DateTime.Now; activityWinModel.userId = userId; activityWinModel.integrals = activityModel.consumePoint; //int activityNum = 0; activityWinModel.isWin = false; activityWinModel.awardId = 0; activityWinModel.awardName = "未中奖"; foreach (var item in activityModel.awards) { //累加计算奖等区域 //activityNum = activityNum + GetCount(activityModel.Id, item.Id); //获取的随机数在该奖等区域类 if (num <= GetCount(activityModel.Id, item.Id)) { activityWinModel.isWin = true; if (item.awardType == WeiActivityAwardType.Integral) { activityWinModel.awardName = item.integral.ToString(); activityWinModel.awardId = item.Id; activityWinModel.awardType = item.awardType; break; } else if (item.awardType == WeiActivityAwardType.Bonus) { Model.BonusInfo bonusInfo = _iBonusService.Get(item.bonusId); if (bonusInfo == null) { //activityNum = 0; activityWinModel.isWin = false; break; } string Surplus = _iBonusService.GetBonusSurplus(item.bonusId); if (bonusInfo.IsInvalid)//红包已经失效 返回 未中奖 { //activityNum = 0; activityWinModel.isWin = false; break; } if (Convert.ToInt32(Surplus) <= 0)//当前红包已经领取完 设置未中奖 { //activityNum = 0; activityWinModel.isWin = false; break; } //获取红包名称 activityWinModel.awardName = bonusInfo.Name; activityWinModel.awardId = item.Id; activityWinModel.awardType = item.awardType; activityWinModel.bonusId = item.bonusId; break; } else if (item.awardType == WeiActivityAwardType.Coupon) { CouponModel couponModel = CouponApplication.Get(item.couponId); if (couponModel == null) { //activityNum = 0; activityWinModel.isWin = false; break; } int perMax = WeiActivityWinApplication.GetCouPonMax(activityWinModel.userId, activityWinModel.activityId, item.Id); if (couponModel.Num <= 0)//优惠券无库存 返回 未中奖 { //activityNum = 0; activityWinModel.isWin = false; break; } if (couponModel.perMax != 0 && perMax >= couponModel.perMax) { //activityNum = 0; activityWinModel.isWin = false; break; } if (couponModel.EndTime < DateTime.Now)//优惠券已经失效 { //activityNum = 0; activityWinModel.isWin = false; break; } string awardName = couponModel.CouponName; if (couponModel.ShopName != "") { awardName = awardName + "(" + couponModel.ShopName + ")"; } if (couponModel.OrderAmount != "") { awardName = awardName + "(" + couponModel.OrderAmount + ")"; } //获取红包名称 activityWinModel.awardName = awardName; activityWinModel.awardId = item.Id; activityWinModel.awardType = item.awardType; activityWinModel.couponId = item.couponId; break; } } } WeiActivityWinApplication.WinnerSubmit(activityWinModel); decimal bonusPrice = 0; if (activityWinModel.bonusId > 0) { bonusPrice = _iBonusService.GetReceivePriceByUserId(activityWinModel.bonusId, userId); } return(Json(new Result() { success = true, msg = activityWinModel.awardId.ToString() + "," + bonusPrice.ToString() })); }
/// <summary> /// 用于显示 查询红包剩余数量 /// </summary> /// <param name="id">红包ID</param> /// <returns></returns> private string GetBonusSurplus(long id) { return(WeiActivityWinApplication.GetBonusSurplus(id)); }