Пример #1
0
 public void SetVictoryDefeatVSResult(GuessBet obj, Guess guess)
 {
     if (obj.LeftScore > obj.RightScore)
     {
         string victoryName = "";
         if (obj.GuessVSDetail.LeftName.Length > 5)//保留5个汉字
         {
             victoryName = obj.GuessVSDetail.LeftName.Substring(0, 5) + "..." + " 胜";
         }
         else
         {
             victoryName = obj.GuessVSDetail.LeftName + " 胜";
         }
         obj.VSResult = victoryName;
     }
     else
     {
         string victoryName = "";
         if (obj.GuessVSDetail.RightName.Length > 5)//保留5个汉字
         {
             victoryName = obj.GuessVSDetail.RightName.Substring(0, 5) + "..." + " 胜";
         }
         else
         {
             victoryName = obj.GuessVSDetail.RightName + " 胜";
         }
         obj.VSResult = victoryName;
     }
 }
Пример #2
0
        public void SetBingoResult(GuessBet guessBet, Guess guess)
        {
            if (guess.State != GuessDic.AlreadySettlement)//未结算
            {
                guessBet.BingoResult      = "等待结算";
                guessBet.BingoResultState = GuessDic.WaitSettlement;
            }

            if (guess.State == GuessDic.AlreadySettlement)      //已结算
            {
                if (guessBet.BetType == GuessDic.VictoryDefeat) //胜负竞猜
                {
                    SetVictoryDefeatBingoResult(guessBet, guess);
                }
                else if (guessBet.BetType == GuessDic.Score)//比分竞猜
                {
                    SetScoreBingoResult(guessBet, guess);
                }
                else if (guessBet.BetType == GuessDic.DeclarerVictoryDefeat)//胜负坐庄
                {
                    int victoryDefeatBackYueDou = GetBackYueDouToDeclarer(guess.Id, GuessDic.DeclarerVictoryDefeat);
                    int victoryDefeatDeposit    = Convert.ToInt32(guess.VictoryDefeatDeclarerDeposit);
                    SetDeclarerBingoResult(guessBet, victoryDefeatDeposit, victoryDefeatBackYueDou);
                }
                else if (guessBet.BetType == GuessDic.DeclarerScore)//比分坐庄
                {
                    int scoreBackYueDou = GetBackYueDouToDeclarer(guess.Id, GuessDic.DeclarerScore);
                    int scoreDeposit    = Convert.ToInt32(guess.ScoreDeclarerDeposit);
                    SetDeclarerBingoResult(guessBet, scoreDeposit, scoreBackYueDou);
                }
            }
        }
Пример #3
0
        /// <summary>
        /// 检查在投注池中还能不能投注
        /// 如果投注的悦豆数 超过了最大可投注数, 这样会破坏投注池平衡,
        ///     导致猜错方的悦豆数无法抵扣猜对方,故用此方法来限制
        /// </summary>
        /// <returns></returns>
        public string CheckCanBetInPool(Guess guess, GuessBet guessBet)
        {
            int    maxValue = 0;
            string errorMsg = "";

            maxValue = GetBetCanMaxAmount(guess, guessBet);
            var difference = maxValue - guessBet.Amount;

            if (difference >= 0)
            {
                errorMsg = "";
            }
            else //超过了最大可投注悦豆数
            {
                //将最后一位处理成0,这样就是10的倍数了
                string maxValueStr = "";
                if (maxValue < 10)
                {
                    maxValueStr = "0";
                }
                else
                {
                    maxValueStr = maxValue.ToString();
                    maxValueStr = maxValueStr.Substring(0, maxValueStr.Length - 1) + "0";//把最后一位变为0
                }
                errorMsg = "当前可以投注的最大数量为:[ " + maxValueStr + " ] ,请稍后再投注";
            }
            return(errorMsg);
        }
Пример #4
0
        /// <summary>
        /// 保存庄家的投注
        /// </summary>
        /// <param name="amount">庄家的投注总悦豆</param>
        /// <param name="guess"></param>
        /// <returns></returns>
        private void SaveDeclarerBet(string betType, int amount, Guess guess)
        {
            Response rsp = ResultHelper.CreateResponse();

            //扣除庄家的悦豆
            rsp = GuessHelper.Instance.AddOrSubYueDou(-amount, guess.CreatorId);
            SystemHelper.CheckResponseIfError(rsp);

            // 插入庄家的投注记录
            GuessBet          obj     = new GuessBet();
            List <EntityBase> entites = new List <EntityBase>();

            entites.Add(obj);
            obj.RowState = RowState.Added;
            obj.Amount   = amount;
            obj.GuessId  = guess.Id;
            obj.UserId   = guess.CreatorId;
            obj.BetType  = betType;
            obj.TrySetNewEntity();

            rsp = DbContext.GetInstance().Execute(CommandHelper.CreateSave(entites));
            SystemHelper.CheckResponseIfError(rsp);

            //插入悦豆消费账单
            var yueDouFlow = new YueDouFlow();

            yueDouFlow.Amount   = -amount;
            yueDouFlow.UserId   = guess.CreatorId;
            yueDouFlow.FlowType = GuessDic.GuessCost;
            yueDouFlow.GuessId  = guess.Id;
            rsp = GuessHelper.Instance.AddYueDouFlow(yueDouFlow);
            SystemHelper.CheckResponseIfError(rsp);
        }
Пример #5
0
 /// <summary>
 /// 设置胜负竞猜猜中的结果
 /// </summary>
 /// <param name="guessBet"></param>
 /// <param name="guess"></param>
 public void SetVictoryDefeatBingoResult(GuessBet guessBet, Guess guess)
 {
     GuessHelper.Instance.SetVictoryIdAndOdds(guess, guessBet.GuessVSDetail);
     if (guessBet.BetVSId == guess.VictoryId)                           //猜中了
     {
         decimal earnYueDou = guessBet.Amount * (guessBet.BetOdds - 1); //算出赚的悦豆
         guessBet.BingoResult      = "猜中 +" + earnYueDou + "悦豆";
         guessBet.BingoResultState = GuessDic.Bingo;
     }
     else
     {
         guessBet.BingoResult = "未猜中";
     }
 }
Пример #6
0
 /// <summary>
 /// 设置比分竞猜猜中的结果
 /// </summary>
 /// <param name="guessBet"></param>
 /// <param name="guess"></param>
 public void SetScoreBingoResult(GuessBet guessBet, Guess guess)
 {
     GuessHelper.Instance.SetBingoScoreAndOdds(guess, guessBet.GuessVSDetail);
     if (guessBet.LeftScore == guess.BingoLeftScore &&
         guessBet.RightScore == guess.BingoRightScore)
     {
         decimal earnYueDou = guessBet.Amount * (guessBet.BetOdds - 1);//算出赚的悦豆
         guessBet.BingoResult      = "猜中 +" + earnYueDou + "悦豆";
         guessBet.BingoResultState = GuessDic.Bingo;
     }
     else
     {
         guessBet.BingoResult = "未猜中";
     }
 }
Пример #7
0
        public void SetDeclarerBingoResult(GuessBet guessBet, int originYueDou, int backYueDou)
        {
            var differenceValue = originYueDou - backYueDou;

            if (differenceValue == 0)//不赚不亏
            {
                guessBet.BingoResult = "0";
            }
            else if (differenceValue > 0)//亏了
            {
                guessBet.BingoResult = "-" + differenceValue + "悦豆";
            }
            else if (differenceValue < 0)//赚了
            {
                guessBet.BingoResult = "+" + (-differenceValue) + "悦豆";
            }
        }
Пример #8
0
 /// <summary>
 /// 设置对阵结果
 /// </summary>
 /// <param name="obj"></param>
 /// <param name="guess"></param>
 public void SetVSResult(GuessBet obj, Guess guess)
 {
     if (obj.GuessVSDetail.State == GameLoopState.FINISH.Id)
     {
         if (obj.BetType == GuessDic.VictoryDefeat)//胜负竞猜
         {
             SetVictoryDefeatVSResult(obj, guess);
         }
         else if (obj.BetType == GuessDic.Score)//比分竞猜
         {
             obj.VSResult = string.Format("全场比分 {0}:{1}"
                                          , obj.GuessVSDetail.LeftScore, obj.GuessVSDetail.RightScore);
         }
         else if (obj.BetType == GuessDic.DeclarerVictoryDefeat)//胜负竞猜坐庄
         {
             obj.VSResult = "胜负坐庄";
         }
         else if (obj.BetType == GuessDic.DeclarerScore)//比分竞猜坐庄
         {
             obj.VSResult = "比分坐庄";
         }
     }
     else //进行中
     {
         if (obj.BetType == GuessDic.DeclarerVictoryDefeat)//胜负竞猜坐庄
         {
             obj.VSResult = "进行中(胜负坐庄)";
         }
         else if (obj.BetType == GuessDic.DeclarerScore)//比分竞猜坐庄
         {
             obj.VSResult = "进行中(比分坐庄)";
         }
         else
         {
             obj.VSResult = "进行中";
         }
     }
 }
Пример #9
0
 /// <summary>
 /// 设置用户这条投注记录 对应的赔率
 /// </summary>
 public void SetOdds(GuessBet obj, Guess guess)
 {
     if (obj.BetType == GuessDic.VictoryDefeat) //胜负竞猜
     {
         if (obj.BetVSId == guess.VSLeftId)     //如果相等, 说明我投的是左边
         {
             obj.BetOdds = guess.VSLeftOdds;
         }
         else
         {
             obj.BetOdds = guess.VsRightOdds;
         }
     }
     else if (obj.BetType == GuessDic.Score)//比分竞猜
     {
         //获取投注的这个比分对应的赔率
         var guessScore = GuessHelper.Instance.GetGuessScore(guess.Id, obj.LeftScore
                                                             , obj.RightScore);
         if (guessScore != null)
         {
             obj.BetOdds = guessScore.Odds;
         }
     }
 }
Пример #10
0
        /// <summary>
        /// 获取可以投注的最大悦豆数
        /// </summary>
        /// <returns></returns>
        public int GetBetCanMaxAmount(Guess guess, GuessBet guessBet)
        {
            int     bingoTotalYuedou = 0;                   //猜对方总已投
            int     notBingoYuedou   = 0;                   //猜错方悦豆总数
            decimal bingoOdds        = 0;                   //猜对方的赔率

            if (guessBet.BetType == GuessDic.VictoryDefeat) //胜负投注
            {
                //猜对方悦豆总数, 这是用户投注的一方 (默认用户投注的一方都是猜对)
                bingoTotalYuedou = GuessHelper.Instance
                                   .GetVictoryOrDefeatTotalYueDou(guess.Id, guessBet.BetVSId);
                //取出对阵失败方的Id
                var defeatVSId = "";
                if (guess.GuessVSDetail.LeftId == guessBet.BetVSId)
                {
                    defeatVSId = guess.GuessVSDetail.RightId;
                }
                else
                {
                    defeatVSId = guess.GuessVSDetail.LeftId;
                }

                //猜错方悦豆总数
                notBingoYuedou = GuessHelper.Instance
                                 .GetVictoryOrDefeatTotalYueDou(guess.Id, defeatVSId);
                //猜对方赔率
                if (guess.GuessVSDetail.LeftId == guessBet.BetVSId)
                {
                    bingoOdds = guess.VSLeftOdds;
                }
                else
                {
                    bingoOdds = guess.VsRightOdds;
                }
            }
            else if (guessBet.BetType == GuessDic.Score)//比分投注
            {
                //默认用户投注的比分是猜对的比分
                guess.BingoLeftScore  = guessBet.LeftScore;
                guess.BingoRightScore = guessBet.RightScore;
                //猜对方悦豆总数
                bingoTotalYuedou = GuessHelper.Instance
                                   .GetBingoScoreTotalYueDou(guess);
                //猜错方悦豆总数
                notBingoYuedou = GuessHelper.Instance
                                 .GetNotBingoScoreTotalYueDou(guess);
                //猜对方赔率
                var guessScore = GuessHelper.Instance.GetGuessScore(guess.Id,
                                                                    guess.BingoLeftScore, guess.BingoRightScore);
                bingoOdds = guessScore.Odds;
            }

            //公式:  可以投的最大悦豆数 =( (猜错方总已投 + 庄家)/ (猜对方赔率-1) ) - 猜对方总已投    注意: 默认用户投的一方都是猜对方
            var notBingoToatal  = notBingoYuedou + guess.VictoryDefeatDeclarerDeposit;
            var canBetMaxYueDou = (notBingoToatal / (bingoOdds - 1)) - bingoTotalYuedou;

            //如果算出来小于零 ,说明不能投, 就设置为0
            if (canBetMaxYueDou < 0)
            {
                canBetMaxYueDou = 0;
            }

            return(Convert.ToInt32(canBetMaxYueDou));
        }