Exemple #1
0
        public List <HudongAward> DefaultAwards()
        {
            var list = new List <HudongAward>();
            var item = new HudongAward
            {
                Grade = "一等奖",
                Type  = HudongAwardType.None
            };

            list.Add(item);
            return(list);
        }
Exemple #2
0
        /// <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));
        }