public List <HudongAward> DefaultAwards() { var list = new List <HudongAward>(); var item = new HudongAward { Grade = "一等奖", Type = HudongAwardType.None }; list.Add(item); return(list); }
/// <summary> /// 抽奖所中 /// 如果抽中储值1,优惠券4,打折券2,兑换券3则直接存储在用户账户,同时记录到中奖记录表 /// 需要返回一个中奖项,用户剩余可抽奖次数 /// </summary> /// <param name="drawInput"></param> /// <returns></returns> public ServiceResult Draw(DrawInput drawInput) { if (drawInput.DrawCount <= 0) { return(ServiceResult.FailedWithMessage("抽奖次数已用完!")); } if (drawInput.Id == null) { return(ServiceResult.FailedWithMessage("获取数据为空!")); } var model = GetSingle(ObjectId.Parse(drawInput.Id), drawInput.Key); if (model == null) { return(ServiceResult.FailedWithMessage("获取数据为空!")); } var list = model.Awards; var rateDic = new Dictionary <Guid, int>(); list.ForEach(a => { if (a.Count > 0) { rateDic.Add(a.AwardId, (int)a.Rate * 100); } }); var resultsDic = Lottery(rateDic); //获取抽奖结果 var results = ""; foreach (var d in resultsDic) { results = d.Key.ToString(); } if (!string.IsNullOrEmpty(results)) { var winList = model.Awards.Where(a => a.AwardId == results.ToGuid()); var awardWin = winList.FirstOrDefault(u => u.AwardId == results.ToGuid()); var updateResult = true; //中奖后要减去对应的奖品数量 if (awardWin.Type != HudongAwardType.None) //如果中奖项为:未中奖,则不用更改数据 { var awardList = new List <HudongAward>(); foreach (var award in model.Awards) { var awardModel = new HudongAward(); if (award.AwardId == results.ToGuid()) { awardModel.Count = award.Count - 1; } else { awardModel.Count = award.Count; } awardModel.AwardId = award.AwardId; awardModel.img = award.img; awardModel.Grade = award.Grade; awardModel.Rate = award.Rate; awardModel.Type = award.Type; awardModel.worth = award.worth; awardList.Add(awardModel); } model.Awards = awardList; updateResult = Update(model); } //更改中奖数量 if (updateResult) { //根据中奖的awardID查询对应model var drawType = awardWin.Type.Value(); var intro = awardWin.Intro.IsNullOrEmpty() ? "" : awardWin.Intro; var worth = awardWin.worth; var count = awardWin.Count; //每次抽奖后需要一条抽奖记录 var recordModel = new HudongRecord(); recordModel.UserId = drawInput.UserId; recordModel.HuDongType = HuDongEnums.BigWheel; recordModel.Intro = intro; recordModel.HuDongStatus = AwardStatus.NotExchange; recordModel.Grade = awardWin.Grade; recordModel.HuDongActivityType = awardWin.Type; var moneyTypes = new MoneyTypeConfig(); var moneyType = MoneyTypeConfig.Credit; if (drawType == HudongAwardType.StoreValue.Value()) //储值对应人民币 { moneyTypes.Id = MoneyTypeConfig.CNY; recordModel.HuDongStatus = AwardStatus.Exchage; } else if (drawType == HudongAwardType.Discount.Value()) //赠送消费额 { moneyTypes.Id = MoneyTypeConfig.ShopAmount; recordModel.HuDongStatus = AwardStatus.Exchage; } else if (drawType == HudongAwardType.Integral.Value()) //积分 { moneyTypes.Id = MoneyTypeConfig.Point; recordModel.HuDongStatus = AwardStatus.Exchage; } else if (drawType == HudongAwardType.Coupon.Value()) //优惠券 { moneyTypes.Id = MoneyTypeConfig.Preferential; recordModel.HuDongStatus = AwardStatus.Exchage; } var recordResult = Resolve <IHudongRecordService>().AddRecord(recordModel); //抽奖记录 if (recordResult.Succeeded && awardWin.Type != HudongAwardType.None && recordModel.HuDongStatus == AwardStatus.Exchage) { var user = Resolve <IUserService>().GetSingle(drawInput.UserId); Resolve <IBillService>().Increase(user, moneyTypes, worth, "大转盘抽奖中奖获得"); } } } return(ServiceResult.SuccessWithObject(results)); }