Ejemplo n.º 1
0
        public void UpdateProfileBonusLevel(string userId, decimal bonusMoney)
        {
            int winBaiCount     = 0;
            int winQianCount    = 0;
            int winWanCount     = 0;
            int winShiWanCount  = 0;
            int winBaiWanCount  = 0;
            int winQianWanCount = 0;
            int winYiCount      = 0;

            #region 用户最大中奖记录
            var maxLevelName  = string.Empty;
            var maxLevelValue = 0;

            if (bonusMoney < 100)
            {
                maxLevelName  = "幸运彩民";
                maxLevelValue = 0;
            }
            else if (bonusMoney >= 100 && bonusMoney < 1000)
            {
                winBaiCount   = 1;
                maxLevelName  = "百元";
                maxLevelValue = 100;
            }
            else if (bonusMoney >= 1000 && bonusMoney < 10000)
            {
                winQianCount  = 1;
                maxLevelName  = "千元";
                maxLevelValue = 1000;
            }
            else if (bonusMoney >= 10000 && bonusMoney < 100000)
            {
                winWanCount   = 1;
                maxLevelName  = "万元";
                maxLevelValue = 10000;
            }
            else if (bonusMoney >= 100000 && bonusMoney < 1000000)
            {
                winShiWanCount = 1;
                maxLevelName   = "十万";
                maxLevelValue  = 100000;
            }
            else if (bonusMoney >= 1000000 && bonusMoney < 10000000)
            {
                winBaiWanCount = 1;
                maxLevelName   = "百万";
                maxLevelValue  = 1000000;
            }
            else if (bonusMoney >= 10000000 && bonusMoney < 100000000)
            {
                winQianWanCount = 1;
                maxLevelName    = "千万";
                maxLevelValue   = 10000000;
            }
            else if (bonusMoney >= 100000000)
            {
                maxLevelName  = "亿元";
                maxLevelValue = 100000000;
                winYiCount    = 1;
            }

            #endregion

            var manager = new BlogManager();
            var main    = manager.QueryBlog_ProfileBonusLevel(userId);
            if (main == null)
            {
                var entity = new E_Blog_ProfileBonusLevel()
                {
                    UserId                     = userId,
                    MaxLevelName               = maxLevelName,
                    MaxLevelValue              = maxLevelValue,
                    WinOneHundredCount         = winBaiCount,
                    WinOneThousandCount        = winQianCount,
                    WinTenThousandCount        = winWanCount,
                    WinOneHundredThousandCount = winShiWanCount,
                    WinOneMillionCount         = winBaiWanCount,
                    WinTenMillionCount         = winQianWanCount,
                    WinHundredMillionCount     = winYiCount,
                    UpdateTime                 = DateTime.Now,
                    TotalBonusMoney            = bonusMoney,
                };
                manager.AddBlog_ProfileBonusLevel(entity);
            }
            else
            {
                #region 计算称号 20150922 暂时屏蔽

                //bonusMoney = main.TotalBonusMoney + bonusMoney;
                //if (bonusMoney < 100)
                //{
                //    maxLevelName = "幸运彩民";
                //    maxLevelValue = 0;
                //}
                //else if (bonusMoney >= 100 && bonusMoney < 1000)
                //{
                //    winBaiCount = 1;
                //    maxLevelName = "百元";
                //    maxLevelValue = 100;
                //}
                //else if (bonusMoney >= 1000 && bonusMoney < 10000)
                //{
                //    winQianCount = 1;
                //    maxLevelName = "千元";
                //    maxLevelValue = 1000;
                //}
                //else if (bonusMoney >= 10000 && bonusMoney < 100000)
                //{
                //    winWanCount = 1;
                //    maxLevelName = "万元";
                //    maxLevelValue = 10000;
                //}
                //else if (bonusMoney >= 100000 && bonusMoney < 1000000)
                //{
                //    winShiWanCount = 1;
                //    maxLevelName = "十万";
                //    maxLevelValue = 100000;
                //}
                //else if (bonusMoney >= 1000000 && bonusMoney < 10000000)
                //{
                //    winBaiWanCount = 1;
                //    maxLevelName = "百万";
                //    maxLevelValue = 1000000;
                //}
                //else if (bonusMoney >= 10000000 && bonusMoney < 100000000)
                //{
                //    winQianWanCount = 1;
                //    maxLevelName = "千万";
                //    maxLevelValue = 10000000;
                //}
                //else if (bonusMoney >= 100000000)
                //{
                //    maxLevelName = "亿元";
                //    maxLevelValue = 100000000;
                //    winYiCount = 1;
                //}

                #endregion


                #region 计算称号 new

                var sportManager  = new Sports_Manager();
                var maxBonusMoney = sportManager.GetUserMaxBonusMoney(userId);
                if (maxBonusMoney < 100)
                {
                    maxLevelName  = "幸运彩民";
                    maxLevelValue = 0;
                }
                else if (maxBonusMoney >= 100 && maxBonusMoney < 1000)
                {
                    winBaiCount   = 1;
                    maxLevelName  = "百元";
                    maxLevelValue = 100;
                }
                else if (maxBonusMoney >= 1000 && maxBonusMoney < 10000)
                {
                    winQianCount  = 1;
                    maxLevelName  = "千元";
                    maxLevelValue = 1000;
                }
                else if (maxBonusMoney >= 10000 && maxBonusMoney < 100000)
                {
                    winWanCount   = 1;
                    maxLevelName  = "万元";
                    maxLevelValue = 10000;
                }
                else if (maxBonusMoney >= 100000 && maxBonusMoney < 1000000)
                {
                    winShiWanCount = 1;
                    maxLevelName   = "十万";
                    maxLevelValue  = 100000;
                }
                else if (maxBonusMoney >= 1000000 && maxBonusMoney < 10000000)
                {
                    winBaiWanCount = 1;
                    maxLevelName   = "百万";
                    maxLevelValue  = 1000000;
                }
                else if (maxBonusMoney >= 10000000 && maxBonusMoney < 100000000)
                {
                    winQianWanCount = 1;
                    maxLevelName    = "千万";
                    maxLevelValue   = 10000000;
                }
                else if (maxBonusMoney >= 100000000)
                {
                    maxLevelName  = "亿元";
                    maxLevelValue = 100000000;
                    winYiCount    = 1;
                }

                #endregion

                main.MaxLevelName                = maxLevelName;
                main.MaxLevelValue               = maxLevelValue;
                main.WinOneHundredCount         += winBaiCount;
                main.WinOneThousandCount        += winQianCount;
                main.WinTenThousandCount        += winWanCount;
                main.WinOneHundredThousandCount += winShiWanCount;
                main.WinOneMillionCount         += winBaiWanCount;
                main.WinTenMillionCount         += winQianWanCount;
                main.WinHundredMillionCount     += winYiCount;
                main.UpdateTime       = DateTime.Now;
                main.TotalBonusMoney += bonusMoney;
                //main.TotalBonusMoney = bonusMoney;//20150922修改
                manager.UpdateBlog_ProfileBonusLevel(main);
            }
        }
Ejemplo n.º 2
0
        public string PrizeBJDCTicket(int num)
        {
            var successCount = 0;
            var failCount    = 0;
            var log          = new List <string>();

            try
            {
                var manager        = new Sports_Manager();
                var ticketListInfo = manager.QueryPrizeTicketList("BJDC", num);
                var prizeList      = new List <TicketBatchPrizeInfo>();
                //var ticketStrSql = string.Empty;
                foreach (var ticket in ticketListInfo.TicketList)
                {
                    try
                    {
                        if (ticket.TicketStatus != TicketStatus.Ticketed)
                        {
                            continue;
                        }

                        var preTaxBonusMoney   = 0M;
                        var afterTaxBonusMoney = 0M;
                        var bonusCount         = 0;
                        var codeList           = new List <Ticket_AnteCode_Running>();
                        var collection         = new GatewayAnteCodeCollection_Sport();
                        //100_3/101_1
                        foreach (var item in ticket.BetContent.Split('/'))
                        {
                            var oneMatch = item.Split('_');
                            codeList.Add(new C_Ticket_AnteCode_Running
                            {
                                MatchId      = oneMatch[0],
                                IssuseNumber = ticket.IssuseNumber,
                                AnteNumber   = oneMatch[1],
                                IsDan        = false,
                                GameType     = ticket.GameType,
                            });
                            collection.Add(new GatewayAnteCode_Sport
                            {
                                AnteCode = oneMatch[1],
                                MatchId  = oneMatch[0],
                                GameType = ticket.GameType,
                                IsDan    = false
                            });
                        }
                        var n = int.Parse(ticket.PlayType.Replace("P", "").Split('_')[1]);
                        if (n > 1)
                        {
                            #region M串N
                            var orderEntity = new Sports_Business().AnalyzeOrder_Sport_Prize <Ticket_Order_Running, Ticket_Ticket_Running, Ticket_AnteCode_Running>(new GatewayTicketOrder_Sport
                            {
                                Amount         = ticket.Amount,
                                AnteCodeList   = collection,
                                Attach         = string.Empty,
                                GameCode       = ticket.GameCode,
                                GameType       = ticket.GameType,
                                IssuseNumber   = ticket.IssuseNumber,
                                IsVirtualOrder = false,
                                OrderId        = ticket.SchemeId,
                                PlayType       = ticket.PlayType.Replace("P", ""),
                                Price          = 2,
                                UserId         = string.Empty,
                                TotalMoney     = ticket.BetMoney
                            }, "LOCAL", "agentId");

                            foreach (var ticket_cp in orderEntity.GetTicketList())
                            {
                                var matchIdL = (from c in ticket_cp.GetAnteCodeList() select c.MatchId).ToArray();
                                var codeL    = codeList.Where(p => matchIdL.Contains(p.MatchId)).ToArray();

                                var analyzer    = AnalyzerFactory.GetSportAnalyzer(ticket_cp.GameCode, ticket_cp.GameType, int.Parse(ticket_cp.PlayType.Replace("P", "").Split('_')[0]));
                                var bonusResult = analyzer.CaculateBonus(codeL.ToArray(), ticketListInfo.MatchList.ToArray());
                                if (bonusResult.IsWin)
                                {
                                    bonusCount += bonusResult.BonusCount;
                                    for (var i = 0; i < bonusResult.BonusCount; i++)
                                    {
                                        var matchIdList         = bonusResult.BonusHitMatchIdListCollection[i];
                                        var sps                 = GetSPs(ticket_cp.GameCode, ticket_cp.GameType, ticket_cp.IssuseNumber, matchIdList);
                                        var oneBeforeBonusMoney = 2M;
                                        var isTrue              = false;
                                        var num_q               = 0;
                                        foreach (var item in sps)
                                        {
                                            if (item.Value == 1M)
                                            {
                                                num_q++;
                                                var entity        = codeL.Where(p => p.MatchIndex == int.Parse(item.Key)).FirstOrDefault();
                                                var anteCodeCount = entity.AnteCode.Split(',').Count();
                                                oneBeforeBonusMoney *= anteCodeCount;
                                                if (sps.Count == 1)
                                                {
                                                    isTrue = true;
                                                }
                                            }
                                            else
                                            {
                                                oneBeforeBonusMoney *= item.Value;
                                            }
                                        }
                                        if (!isTrue && num_q != sps.Count)
                                        {
                                            oneBeforeBonusMoney *= 0.65M;    // 官方扣点 - 65%
                                        }
                                        oneBeforeBonusMoney = Math.Truncate(oneBeforeBonusMoney * 100) / 100;
                                        var oneAfterBonusMoney = oneBeforeBonusMoney;

                                        //北单奖金小于2元的 按2元计算
                                        if (oneBeforeBonusMoney < 2M)
                                        {
                                            oneBeforeBonusMoney = 2M;
                                            oneAfterBonusMoney  = 2M;
                                        }

                                        if (oneBeforeBonusMoney >= 10000)
                                        {
                                            oneAfterBonusMoney = oneBeforeBonusMoney * (1M - 0.2M);
                                        }
                                        oneBeforeBonusMoney *= ticket_cp.Amount;
                                        oneAfterBonusMoney  *= ticket_cp.Amount;

                                        preTaxBonusMoney   += oneBeforeBonusMoney;
                                        afterTaxBonusMoney += oneAfterBonusMoney;
                                    }
                                }
                            }

                            //单票金额上限
                            if (afterTaxBonusMoney >= 5000000M)
                            {
                                afterTaxBonusMoney = 5000000M;
                            }

                            #endregion
                        }
                        else
                        {
                            #region M串1
                            var analyzer    = AnalyzerFactory.GetSportAnalyzer(ticket.GameCode, ticket.GameType, int.Parse(ticket.PlayType.Replace("P", "").Split('_')[0]));
                            var bonusResult = analyzer.CaculateBonus(codeList.ToArray(), ticketListInfo.MatchList.ToArray());
                            if (bonusResult.IsWin)
                            {
                                bonusCount += bonusResult.BonusCount;
                                for (var i = 0; i < bonusResult.BonusCount; i++)
                                {
                                    var matchIdList         = bonusResult.BonusHitMatchIdListCollection[i];
                                    var sps                 = GetSPs(ticket.GameCode, ticket.GameType, ticket.IssuseNumber, matchIdList);
                                    var oneBeforeBonusMoney = 2M;
                                    var isTrue              = false;
                                    var num_q               = 0;
                                    foreach (var item in sps)
                                    {
                                        if (item.Value == 1M)
                                        {
                                            num_q++;
                                            var entity        = codeList.Where(p => p.MatchIndex == int.Parse(item.Key)).FirstOrDefault();
                                            var anteCodeCount = entity.AnteCode.Split(',').Count();
                                            oneBeforeBonusMoney *= anteCodeCount;
                                            if (sps.Count == 1)
                                            {
                                                isTrue = true;
                                            }
                                        }
                                        else
                                        {
                                            oneBeforeBonusMoney *= item.Value;
                                        }
                                    }
                                    if (!isTrue && num_q != sps.Count)
                                    {
                                        oneBeforeBonusMoney *= 0.65M;    // 官方扣点 - 65%
                                    }
                                    oneBeforeBonusMoney = Math.Truncate(oneBeforeBonusMoney * 100) / 100;
                                    var oneAfterBonusMoney = oneBeforeBonusMoney;

                                    //北单奖金小于2元的 按2元计算
                                    if (oneBeforeBonusMoney < 2M)
                                    {
                                        oneBeforeBonusMoney = 2M;
                                        oneAfterBonusMoney  = 2M;
                                    }

                                    if (oneBeforeBonusMoney >= 10000)
                                    {
                                        oneAfterBonusMoney = oneBeforeBonusMoney * (1M - 0.2M);
                                    }
                                    oneBeforeBonusMoney *= ticket.Amount;
                                    oneAfterBonusMoney  *= ticket.Amount;

                                    //单票金额上限
                                    if (oneAfterBonusMoney >= 5000000M)
                                    {
                                        oneAfterBonusMoney = 5000000M;
                                    }

                                    preTaxBonusMoney   += oneBeforeBonusMoney;
                                    afterTaxBonusMoney += oneAfterBonusMoney;
                                }
                            }

                            #endregion
                        }

                        //更新票数据sql
                        prizeList.Add(new TicketBatchPrizeInfo
                        {
                            //Id = item.Id,
                            TicketId    = ticket.TicketId,
                            BonusStatus = afterTaxBonusMoney > 0M ? BonusStatus.Win : BonusStatus.Lose,
                            PreMoney    = preTaxBonusMoney,
                            AfterMoney  = afterTaxBonusMoney,
                        });

                        //var ticketStrSql = string.Format("update C_Sports_Ticket set PreTaxBonusMoney={0},AfterTaxBonusMoney={1},BonusStatus={2} where TicketId='{3}' {4}"
                        //          , preTaxBonusMoney, afterTaxBonusMoney, afterTaxBonusMoney > 0M ? Convert.ToInt32(BonusStatus.Win) : Convert.ToInt32(BonusStatus.Lose), ticket.TicketId, Environment.NewLine);
                        //manager.ExecSql(ticketStrSql);
                        successCount++;
                    }
                    catch (Exception ex)
                    {
                        failCount++;
                        log.Add(ticket.TicketId + "派奖出错 - " + ex.Message);
                    }
                }

                //批量更新数据库
                BusinessHelper.UpdateTicketBonus(prizeList);

                log.Insert(0, string.Format("总查询到{0}张票,成功派奖票:{1}条,失败派奖票:{2}条", ticketListInfo.TicketList.Count, successCount, failCount));
            }
            catch (Exception ex)
            {
                return("派奖票数据出错 - " + ex.Message);
            }

            return(string.Join(Environment.NewLine, log.ToArray()));
        }
Ejemplo n.º 3
0
        public void PrizeBJDCTicket_OrderId(string orderId)
        {
            using (var biz = new GameBizBusinessManagement())
            {
                biz.BeginTran();

                var manager        = new Sports_Manager();
                var ticketListInfo = manager.QueryPrizeTicket_OrderIdList("BJDC", orderId);
                var ticketStrSql   = string.Empty;
                foreach (var ticket in ticketListInfo.TicketList)
                {
                    if (ticket.TicketStatus != TicketStatus.Ticketed)
                    {
                        continue;
                    }

                    var preTaxBonusMoney   = 0M;
                    var afterTaxBonusMoney = 0M;

                    var bonusCount = 0;
                    var collection = new GatewayAnteCodeCollection_Sport();
                    var codeList   = new List <Ticket_AnteCode_Running>();
                    //100_3/101_1
                    foreach (var item in ticket.BetContent.Split('/'))
                    {
                        var oneMatch = item.Split('_');
                        codeList.Add(new Ticket_AnteCode_Running
                        {
                            MatchId      = oneMatch[0],
                            IssuseNumber = ticket.IssuseNumber,
                            AnteNumber   = oneMatch[1],
                            IsDan        = false,
                            GameType     = ticket.GameType,
                        });
                        collection.Add(new GatewayAnteCode_Sport
                        {
                            AnteCode = oneMatch[1],
                            MatchId  = oneMatch[0],
                            GameType = ticket.GameType,
                            IsDan    = false
                        });
                    }

                    var n = int.Parse(ticket.PlayType.Replace("P", "").Split('_')[1]);
                    if (n > 1)
                    {
                        #region M串N
                        var orderEntity = new Sports_Business().AnalyzeOrder_Sport_Prize <Ticket_Order_Running, Ticket_Ticket_Running, Ticket_AnteCode_Running>(new GatewayTicketOrder_Sport
                        {
                            Amount         = ticket.Amount,
                            AnteCodeList   = collection,
                            Attach         = string.Empty,
                            GameCode       = ticket.GameCode,
                            GameType       = ticket.GameType,
                            IssuseNumber   = ticket.IssuseNumber,
                            IsVirtualOrder = false,
                            OrderId        = ticket.SchemeId,
                            PlayType       = ticket.PlayType.Replace("P", ""),
                            Price          = 2,
                            UserId         = string.Empty,
                            TotalMoney     = ticket.BetMoney
                        }, "LOCAL", "agentId");

                        foreach (var ticket_cp in orderEntity.GetTicketList())
                        {
                            var matchIdL = (from c in ticket_cp.GetAnteCodeList() select c.MatchId).ToArray();
                            var codeL    = codeList.Where(p => matchIdL.Contains(p.MatchId)).ToArray();

                            var analyzer    = AnalyzerFactory.GetSportAnalyzer(ticket_cp.GameCode, ticket_cp.GameType, int.Parse(ticket_cp.PlayType.Replace("P", "").Split('_')[0]));
                            var bonusResult = analyzer.CaculateBonus(codeL.ToArray(), ticketListInfo.MatchList.ToArray());
                            if (bonusResult.IsWin)
                            {
                                bonusCount += bonusResult.BonusCount;
                                for (var i = 0; i < bonusResult.BonusCount; i++)
                                {
                                    var matchIdList         = bonusResult.BonusHitMatchIdListCollection[i];
                                    var sps                 = GetSPs(ticket_cp.GameCode, ticket_cp.GameType, ticket_cp.IssuseNumber, matchIdList);
                                    var oneBeforeBonusMoney = 2M;
                                    var isTrue              = false;
                                    var num                 = 0;
                                    foreach (var item in sps)
                                    {
                                        if (item.Value == 1M)
                                        {
                                            num++;
                                            var entity        = codeL.Where(p => p.MatchIndex == int.Parse(item.Key)).FirstOrDefault();
                                            var anteCodeCount = entity.AnteCode.Split(',').Count();
                                            oneBeforeBonusMoney *= anteCodeCount;
                                            if (sps.Count == 1)
                                            {
                                                isTrue = true;
                                            }
                                        }
                                        else
                                        {
                                            oneBeforeBonusMoney *= item.Value;
                                        }
                                    }
                                    if (!isTrue && num != sps.Count)
                                    {
                                        oneBeforeBonusMoney *= 0.65M;    // 官方扣点 - 65%
                                    }
                                    oneBeforeBonusMoney = Math.Truncate(oneBeforeBonusMoney * 100) / 100;
                                    var oneAfterBonusMoney = oneBeforeBonusMoney;

                                    //北单奖金小于2元的 按2元计算
                                    if (oneBeforeBonusMoney < 2M)
                                    {
                                        oneBeforeBonusMoney = 2M;
                                        oneAfterBonusMoney  = 2M;
                                    }

                                    if (oneBeforeBonusMoney >= 10000)
                                    {
                                        oneAfterBonusMoney = oneBeforeBonusMoney * (1M - 0.2M);
                                    }
                                    oneBeforeBonusMoney *= ticket_cp.Amount;
                                    oneAfterBonusMoney  *= ticket_cp.Amount;

                                    preTaxBonusMoney   += oneBeforeBonusMoney;
                                    afterTaxBonusMoney += oneAfterBonusMoney;
                                }
                            }
                        }

                        //单票金额上限
                        if (afterTaxBonusMoney >= 5000000M)
                        {
                            afterTaxBonusMoney = 5000000M;
                        }

                        #endregion
                    }
                    else
                    {
                        #region M串1
                        var analyzer    = AnalyzerFactory.GetSportAnalyzer(ticket.GameCode, ticket.GameType, int.Parse(ticket.PlayType.Replace("P", "").Split('_')[0]));
                        var bonusResult = analyzer.CaculateBonus(codeList.ToArray(), ticketListInfo.MatchList.ToArray());
                        if (bonusResult.IsWin)
                        {
                            bonusCount += bonusResult.BonusCount;
                            for (var i = 0; i < bonusResult.BonusCount; i++)
                            {
                                var matchIdList         = bonusResult.BonusHitMatchIdListCollection[i];
                                var sps                 = GetSPs(ticket.GameCode, ticket.GameType, ticket.IssuseNumber, matchIdList);
                                var oneBeforeBonusMoney = 2M;
                                var isTrue              = false;
                                var num                 = 0;
                                foreach (var item in sps)
                                {
                                    if (item.Value == 1M)
                                    {
                                        num++;
                                        var entity        = codeList.Where(p => p.MatchIndex == int.Parse(item.Key)).FirstOrDefault();
                                        var anteCodeCount = entity.AnteCode.Split(',').Count();
                                        oneBeforeBonusMoney *= anteCodeCount;
                                        if (sps.Count == 1)
                                        {
                                            isTrue = true;
                                        }
                                    }
                                    else
                                    {
                                        oneBeforeBonusMoney *= item.Value;
                                    }
                                }
                                if (!isTrue && num != sps.Count)
                                {
                                    oneBeforeBonusMoney *= 0.65M;    // 官方扣点 - 65%
                                }
                                oneBeforeBonusMoney = Math.Truncate(oneBeforeBonusMoney * 100) / 100;
                                var oneAfterBonusMoney = oneBeforeBonusMoney;

                                //北单奖金小于2元的 按2元计算
                                if (oneBeforeBonusMoney < 2M)
                                {
                                    oneBeforeBonusMoney = 2M;
                                    oneAfterBonusMoney  = 2M;
                                }

                                if (oneBeforeBonusMoney >= 10000)
                                {
                                    oneAfterBonusMoney = oneBeforeBonusMoney * (1M - 0.2M);
                                }
                                oneBeforeBonusMoney *= ticket.Amount;
                                oneAfterBonusMoney  *= ticket.Amount;

                                //单票金额上限
                                if (oneAfterBonusMoney >= 5000000M)
                                {
                                    oneAfterBonusMoney = 5000000M;
                                }

                                preTaxBonusMoney   += oneBeforeBonusMoney;
                                afterTaxBonusMoney += oneAfterBonusMoney;
                            }
                        }

                        #endregion
                    }

                    ticketStrSql += string.Format("update C_Sports_Ticket set PreTaxBonusMoney={0},AfterTaxBonusMoney={1},BonusStatus={2} where TicketId='{3}' {4}"
                                                  , preTaxBonusMoney, afterTaxBonusMoney, afterTaxBonusMoney > 0M ? Convert.ToInt32(BonusStatus.Win) : Convert.ToInt32(BonusStatus.Lose), ticket.TicketId, Environment.NewLine);
                }
                manager.ExecSql(ticketStrSql);

                biz.CommitTran();
            }
        }
Ejemplo n.º 4
0
        public C_Sports_Order_Running AddRunningOrderAndOrderDetail(string schemeId, SchemeBettingCategory category,
                                                                    string gameCode, string gameType, string playType, bool stopAfterBonus,
                                                                    string issuseNumber, int amount, int betCount, int totalMatchCount, decimal totalMoney, DateTime stopTime,
                                                                    SchemeSource schemeSource, TogetherSchemeSecurity security, SchemeType schemeType, bool canChase, bool isVirtualOrder,
                                                                    string userId, string userAgent, DateTime betTime, ActivityType activityType, string attach, bool isAppend, decimal redBagMoney, ProgressStatus progressStatus, TicketStatus ticketStatus)
        {
            //if (DateTime.Now >= stopTime)
            if (betTime >= stopTime)
            {
                throw new LogicException(string.Format("订单结束时间是{0},订单不能投注。", stopTime.ToString("yyyy-MM-dd HH:mm")));
            }
            var sportsManager = new Sports_Manager();

            if (new string[] { "JCZQ", "JCLQ" }.Contains(gameCode))
            {
                issuseNumber = DateTime.Now.ToString("yyyy-MM-dd");
            }

            DateTime?ticketTime = null;

            if (ticketStatus == TicketStatus.Ticketed)
            {
                ticketTime = DateTime.Now;
            }
            DateTime createtime = DateTime.Now;

            if (betTime != null && betTime.ToString() != "0001/1/1 0:00:00")
            {
                createtime = betTime;
            }
            else
            {
                betTime = DateTime.Now;
            }
            betTime = createtime;
            var order = new C_Sports_Order_Running
            {
                AfterTaxBonusMoney    = 0M,
                AgentId               = userAgent,
                Amount                = amount,
                BonusStatus           = (int)BonusStatus.Waitting,
                CanChase              = canChase,
                IsVirtualOrder        = isVirtualOrder,
                IsPayRebate           = false,
                RealPayRebateMoney    = 0M,
                TotalPayRebateMoney   = 0M,
                CreateTime            = createtime,
                GameCode              = gameCode,
                GameType              = gameType,
                IssuseNumber          = issuseNumber,
                PlayType              = playType,
                PreTaxBonusMoney      = 0M,
                ProgressStatus        = (int)progressStatus,
                SchemeId              = schemeId,
                SchemeType            = (int)schemeType,
                SchemeBettingCategory = (int)category,
                TicketId              = string.Empty,
                TicketLog             = string.Empty,
                TicketStatus          = (int)ticketStatus,
                TotalMatchCount       = totalMatchCount,
                TotalMoney            = totalMoney,
                SuccessMoney          = totalMoney,
                UserId                = userId,
                StopTime              = stopTime,
                SchemeSource          = (int)schemeSource,
                BetCount              = betCount,
                BonusCount            = 0,
                HitMatchCount         = 0,
                RightCount            = 0,
                Error1Count           = 0,
                Error2Count           = 0,
                MaxBonusMoney         = 0,
                MinBonusMoney         = 0,
                Security              = (int)security,
                TicketGateway         = string.Empty,
                TicketProgress        = 1M,
                BetTime               = betTime,
                ExtensionOne          = string.Format("{0}{1}", "3X1_", (int)activityType),
                Attach                = string.IsNullOrEmpty(attach) ? string.Empty : attach.ToUpper(),
                QueryTicketStopTime   = stopTime.AddMinutes(1).ToString("yyyyMMddHHmm"),
                IsAppend              = isAppend,
                RedBagMoney           = redBagMoney,
                IsSplitTickets        = ticketStatus == TicketStatus.Ticketed,
                TicketTime            = ticketTime,
            };

            sportsManager.AddSports_Order_Running(order);

            //订单总表信息
            var orderDetail = new C_OrderDetail
            {
                AfterTaxBonusMoney = 0M,
                AgentId            = userAgent,
                BonusStatus        = (int)BonusStatus.Waitting,
                //  ComplateTime = null,
                CreateTime            = createtime,
                CurrentBettingMoney   = ticketStatus == TicketStatus.Ticketed ? totalMoney : 0M,
                GameCode              = gameCode,
                GameType              = gameType,
                GameTypeName          = BettingHelper.FormatGameType(gameCode, gameType),
                PreTaxBonusMoney      = 0M,
                ProgressStatus        = (int)progressStatus,
                SchemeId              = schemeId,
                SchemeSource          = (int)schemeSource,
                SchemeType            = (int)schemeType,
                SchemeBettingCategory = (int)category,
                StartIssuseNumber     = issuseNumber,
                StopAfterBonus        = stopAfterBonus,
                TicketStatus          = (int)ticketStatus,
                TotalIssuseCount      = 1,
                TotalMoney            = totalMoney,
                UserId = userId,
                CurrentIssuseNumber = issuseNumber,
                IsVirtualOrder      = isVirtualOrder,
                PlayType            = playType,
                Amount              = amount,
                AddMoney            = 0M,
                BetTime             = betTime,
                IsAppend            = isAppend,
                RedBagMoney         = redBagMoney,
                BonusAwardsMoney    = 0M,
                RealPayRebateMoney  = 0M,
                RedBagAwardsMoney   = 0M,
                TotalPayRebateMoney = 0M,
                TicketTime          = ticketTime,
            };

            new SchemeManager().AddOrderDetail(orderDetail);
            return(order);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 保存用户未投注订单
        /// </summary>
        public string SaveOrderSportsBetting(Sports_BetingInfo info, string userId)
        {
            string schemeId = string.Empty;

            info.GameCode = info.GameCode.ToUpper();
            info.GameType = info.GameType.ToUpper();
            var gameCode = info.GameCode;

            schemeId = BettingHelper.GetSportsBettingSchemeId(gameCode);
            var sportsManager = new Sports_Manager();
            //验证比赛是否还可以投注
            var stopTime = CheckGeneralBettingMatch(sportsManager, gameCode, info.GameType, info.PlayType, info.AnteCodeList, info.IssuseNumber);
            // 检查订单金额是否匹配
            var betCount    = CheckBettingOrderMoney(info.AnteCodeList, gameCode, info.GameType, info.PlayType, info.Amount, info.TotalMoney, stopTime, false, userId);
            var userManager = new UserBalanceManager();
            var user        = userManager.LoadUserRegister(userId);

            //开启事务
            using (DB)
            {
                //biz.BeginTran();
                DB.Begin();
                try
                {
                    AddRunningOrderAndOrderDetail(schemeId, info.BettingCategory, info.GameCode, info.GameType, info.PlayType, true, info.IssuseNumber, info.Amount, betCount, info.TotalMatchCount, info.TotalMoney, stopTime,
                                                  info.SchemeSource, info.Security, SchemeType.SaveScheme, false, true, user.UserId, user.AgentId, info.CurrentBetTime, info.ActivityType, info.Attach, false, 0M, ProgressStatus.Waitting, TicketStatus.Waitting);
                    foreach (var item in info.AnteCodeList)
                    {
                        //sportsManager.AddSports_AnteCode(new C_Sports_AnteCode
                        //{
                        //    SchemeId = schemeId,
                        //    AnteCode = item.AnteCode,
                        //    BonusStatus = (int)BonusStatus.Waitting,
                        //    CreateTime = DateTime.Now,
                        //    GameCode = gameCode,
                        //    GameType = string.IsNullOrEmpty(item.GameType) ? info.GameType.ToUpper() : item.GameType.ToUpper(),
                        //    IsDan = item.IsDan,
                        //    IssuseNumber = info.IssuseNumber,
                        //    MatchId = item.MatchId,
                        //    PlayType = info.PlayType,
                        //    Odds = string.Empty,
                        //});
                        var c_entity = new C_Sports_AnteCode
                        {
                            SchemeId     = schemeId,
                            AnteCode     = item.AnteCode,
                            BonusStatus  = (int)BonusStatus.Waitting,
                            CreateTime   = DateTime.Now,
                            GameCode     = gameCode,
                            GameType     = string.IsNullOrEmpty(item.GameType) ? info.GameType.ToUpper() : item.GameType.ToUpper(),
                            IsDan        = item.IsDan,
                            IssuseNumber = info.IssuseNumber,
                            MatchId      = item.MatchId,
                            PlayType     = info.PlayType,
                            Odds         = string.Empty,
                        };

                        DB.GetDal <C_Sports_AnteCode>().Add(c_entity);
                    }
                    //C_UserSaveOrder
                    var C_UserSaveOrderEntity = new C_UserSaveOrder
                    {
                        SchemeId              = schemeId,
                        UserId                = userId,
                        GameCode              = info.GameCode,
                        GameType              = info.GameType,
                        PlayType              = info.PlayType,
                        SchemeType            = (int)SchemeType.SaveScheme,
                        SchemeSource          = (int)info.SchemeSource,
                        SchemeBettingCategory = (int)info.BettingCategory,
                        ProgressStatus        = (int)ProgressStatus.Waitting,
                        IssuseNumber          = info.IssuseNumber,
                        Amount                = info.Amount,
                        BetCount              = betCount,
                        TotalMoney            = info.TotalMoney,
                        StopTime              = stopTime,
                        CreateTime            = DateTime.Now,
                        StrStopTime           = stopTime.AddMinutes(-5).ToString("yyyyMMddHHmm"),
                    };
                    //用户的订单保存
                    //sportsManager.AddUserSaveOrder(new C_UserSaveOrder
                    //{
                    //    SchemeId = schemeId,
                    //    UserId = userId,
                    //    GameCode = info.GameCode,
                    //    GameType = info.GameType,
                    //    PlayType = info.PlayType,
                    //    SchemeType = SchemeType.SaveScheme,
                    //    SchemeSource = info.SchemeSource,
                    //    SchemeBettingCategory = info.BettingCategory,
                    //    ProgressStatus = ProgressStatus.Waitting,
                    //    IssuseNumber = info.IssuseNumber,
                    //    Amount = info.Amount,
                    //    BetCount = betCount,
                    //    TotalMoney = info.TotalMoney,
                    //    StopTime = stopTime,
                    //    CreateTime = DateTime.Now,
                    //    StrStopTime = stopTime.AddMinutes(-5).ToString("yyyyMMddHHmm"),
                    //});

                    DB.Commit();
                }
                catch (Exception EX)
                {
                    DB.Rollback();
                    throw EX;
                }
            }
            return(schemeId);
        }
Ejemplo n.º 6
0
        public DateTime CheckGeneralBettingMatch(Sports_Manager sportsManager, string gameCode, string gameType, string playType, List <Sports_AnteCodeInfo> codeList, string issuseNumber, SchemeBettingCategory?bettingCategory = null)
        {
            if (gameCode == "BJDC")
            {
                var matchIdArray = (from l in codeList select string.Format("{0}|{1}", issuseNumber, l.MatchId)).Distinct().ToArray();
                var matchList    = sportsManager.QueryBJDCSaleMatchCount(matchIdArray);
                if (gameType.ToUpper() == "SF")
                {
                    var SFGGMatchList = sportsManager.QuerySFGGSaleMatchCount(matchIdArray);

                    if (SFGGMatchList.Count != matchIdArray.Length)
                    {
                        throw new LogicException("所选比赛中有停止销售的比赛。");
                    }
                    BettingHelper.CheckPrivilegesType_BJDC(gameCode, gameType, playType, issuseNumber, codeList, matchList);
                    return(SFGGMatchList.Min(m => m.BetStopTime));
                }
                else
                {
                    if (matchList.Count != matchIdArray.Length)
                    {
                        throw new LogicException("所选比赛中有停止销售的比赛。");
                    }
                    BettingHelper.CheckPrivilegesType_BJDC(gameCode, gameType, playType, issuseNumber, codeList, matchList);
                    return(matchList.Min(m => m.LocalStopTime));
                }
                //if (matchList.Count != matchIdArray.Length && gameType != "HH")
                //    throw new ArgumentException("所选比赛中有停止销售的比赛。");
            }
            if (gameCode == "JCZQ")
            {
                var matchIdArray = (from l in codeList select l.MatchId).Distinct().ToArray();
                var matchList    = sportsManager.QueryJCZQSaleMatchCount(matchIdArray);
                //if (matchList.Count != matchIdArray.Length && gameType != "HH")
                //    throw new ArgumentException("所选比赛中有停止销售的比赛。");
                if (matchList.Count != matchIdArray.Length)
                {
                    throw new LogicException("所选比赛中有停止销售的比赛。");
                }
                //var matchResultList = sportsManager.QueryJCZQMatchResult(matchIdArray);
                //if (matchResultList.Count > 0)
                //    throw new ArgumentException(string.Format("所选比赛中包含结束的比赛:{0}", string.Join(",", matchResultList.Select(p => p.MatchId).ToArray())));

                BettingHelper.CheckPrivilegesType_JCZQ(gameCode, gameType, playType, codeList, matchList);

                //if (playType == "1_1")
                if (bettingCategory != null && bettingCategory.Value == SchemeBettingCategory.SingleBetting)
                {
                    return(matchList.Min(m => m.DSStopBettingTime));
                }
                return(matchList.Min(m => m.FSStopBettingTime));
            }
            if (gameCode == "JCLQ")
            {
                var matchIdArray = (from l in codeList select l.MatchId).Distinct().ToArray();
                var matchList    = sportsManager.QueryJCLQSaleMatchCount(matchIdArray);
                //if (matchList.Count != matchIdArray.Length && gameType != "HH")
                //    throw new ArgumentException("所选比赛中有停止销售的比赛。");
                if (matchList.Count != matchIdArray.Length)
                {
                    throw new LogicException("所选比赛中有停止销售的比赛。");
                }
                var matchResultList = sportsManager.QueryJCLQMatchResult(matchIdArray);
                if (matchResultList.Count > 0)
                {
                    throw new LogicException(string.Format("所选比赛中包含结束的比赛:{0}", string.Join(",", matchResultList.Select(p => p.MatchId).ToArray())));
                }

                BettingHelper.CheckPrivilegesType_JCLQ(gameCode, gameType, playType, codeList, matchList);

                //if (playType == "1_1")
                if (bettingCategory != null && bettingCategory.Value == SchemeBettingCategory.SingleBetting)
                {
                    return(matchList.Min(m => m.DSStopBettingTime));
                }
                return(matchList.Min(m => m.FSStopBettingTime));
            }
            if (gameCode == "CTZQ")
            {
                var issuse = new LotteryGameManager().QueryGameIssuseByKey(gameCode, gameType, issuseNumber);
                if (issuse == null)
                {
                    throw new LogicException(string.Format("{0},{1}奖期{2}不存在", gameCode, gameType, issuseNumber));
                }
                if (issuse.LocalStopTime < DateTime.Now)
                {
                    throw new LogicException(string.Format("{0},{1}奖期{2}结束时间为{3}", gameCode, gameType, issuseNumber, issuse.LocalStopTime.ToString("yyyy-MM-dd HH:mm")));
                }
                return(issuse.LocalStopTime);
            }
            //其它数字彩
            var currentIssuse = new LotteryGameManager().QueryGameIssuseByKey(gameCode, gameCode == "CTZQ" ? gameType : string.Empty, issuseNumber);

            if (currentIssuse == null)
            {
                throw new LogicException(string.Format("{0},{1}奖期{2}不存在", gameCode, gameType, issuseNumber));
            }
            if (currentIssuse.LocalStopTime < DateTime.Now)
            {
                throw new LogicException(string.Format("{0},{1}奖期{2}结束时间为{3}", gameCode, gameType, issuseNumber, currentIssuse.LocalStopTime.ToString("yyyy-MM-dd HH:mm")));
            }
            return(currentIssuse.LocalStopTime);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// 返点接口
        /// </summary>
        public void ManualAgentPayIn(string schemeId)
        {
            var order = new SchemeManager().QueryOrderDetail(schemeId);

            if (order == null)
            {
                throw new LogicException(string.Format("找不到订单 :{0} ", schemeId));
            }
            if (order.TicketStatus != TicketStatus.Ticketed)
            {
                throw new LogicException("订单未出票完成,不能返点");
            }
            if (order.IsVirtualOrder)
            {
                throw new LogicException("虚拟订单不能返点");
            }

            string          currentUserId   = string.Empty;
            decimal         currentBetMoney = 0M;
            string          currentGameCode = string.Empty;
            bool            currentIsAgent  = false;
            OCAgentBusiness busi            = new OCAgentBusiness();

            using (var biz = new GameBiz.Business.GameBizBusinessManagement())
            {
                biz.BeginTran();

                //查询订单信息
                var sportsManager = new Sports_Manager();

                //真实订单,处理返点数据
                var gameCode = order.GameCode.ToUpper();
                var gameType = order.GameType.ToUpper();
                var userId   = order.UserId;

                var msg = string.Empty;
                //合买判断
                if (order.SchemeType == SchemeType.TogetherBetting)
                {
                    var main = sportsManager.QuerySports_Together(schemeId);
                    if (main == null)
                    {
                        msg = string.Format("找不到合买订单:{0}", schemeId);
                        //throw new Exception(string.Format("找不到合买订单:{0}", schemeId));
                    }
                    //if (main.ProgressStatus != TogetherSchemeProgress.Finish)
                    //    throw new Exception(string.Format("合买订单:{0} 状态不正确", schemeId));
                    var sysJoinEntity = sportsManager.QuerySports_TogetherJoin(schemeId, TogetherJoinType.SystemGuarantees);
                    if (sysJoinEntity != null && sysJoinEntity.RealBuyCount > 0)
                    {
                        msg = "网站参与保底,不返点";
                        //throw new Exception("网站参与保底,不返点");
                    }

                    if (main.SoldCount + main.Guarantees < main.TotalCount)
                    {
                        throw new Exception("订单未满员,不执行返点");
                    }
                    //realMoney -= main.SystemGuarantees * main.Price;
                }

                var realMoney           = 0M;;
                var totalPayRebateMoney = 0M;
                var agentManager        = new OCAgentManager();
                if (string.IsNullOrEmpty(msg))
                {
                    //没有异常,执行返点
                    var noGameTypeArray = new string[] { "CQSSC", "JX11X5", "SSQ", "DLT", "FC3D", "PL3" };
                    if (noGameTypeArray.Contains(gameCode))
                    {
                        gameType = string.Empty;
                    }

                    //真实投注金额,订单成功金额
                    realMoney = order.TotalMoney;
                    //查询用户自身返点
                    var balanceManager = new UserBalanceManager();
                    var user           = balanceManager.QueryUserRegister(userId);
                    currentIsAgent = user.IsAgent;

                    //去掉红包参与金额
                    var redBagJoinMoney = order.RedBagMoney;// new FundManager().QuerySchemeRedBagTotalJoinMoney(schemeId);
                    realMoney -= redBagJoinMoney;
                    //递归调用
                    int rebateType  = 0;
                    var arrGameCode = new string[] { "JCZQ", "JCLQ", "BJDC" };
                    if (!string.IsNullOrEmpty(order.PlayType) && arrGameCode.Contains(order.GameCode))
                    {
                        if (order.PlayType == "1_1")
                        {
                            rebateType = 1;
                        }
                    }
                    totalPayRebateMoney = busi.PayOrderRebate(agentManager, user, schemeId, userId, order.SchemeType, gameCode, gameType, order.TotalMoney, realMoney, 0, rebateType);
                }

                biz.CommitTran();
            }
            //计算代理销量
            busi.CalculationAgentSales(currentUserId, currentGameCode, currentBetMoney, currentIsAgent, 0);
        }
        public void OrderPrize_AfterTranCommit(string userId, string schemeId, string gameCode, string gameType, string issuseNumber, decimal orderMoney, bool isBonus, decimal preTaxBonusMoney, decimal afterTaxBonusMoney, bool isVirtualOrder, DateTime prizeTime)
        {
            //if (isVirtualOrder) return;
            //if (!isBonus) return;
            //if (afterTaxBonusMoney <= 0) return;
            //if (afterTaxBonusMoney >= 10000M) return;

            //开启事务
            DB.Begin();
            try
            {
                var manager = new Sports_Manager();
                var order   = manager.QuerySports_Order_Complate(schemeId);
                if (order == null)
                {
                    throw new LogicException(string.Format("自动派钱,没有找到订单{0}", schemeId));
                }
                if (order.IsPrizeMoney)
                {
                    throw new LogicException(string.Format("订单{0}已派奖", schemeId));
                }

                order.IsPrizeMoney = true;
                manager.UpdateSports_Order_Complate(order);

                if (!order.IsVirtualOrder)
                {
                    if (order.SchemeType == (int)SchemeType.GeneralBetting || order.SchemeType == (int)SchemeType.ChaseBetting || order.SchemeType == (int)SchemeType.SingleCopy)
                    {
                        #region 普通、追号、抄单
                        if (order.AfterTaxBonusMoney > 0)
                        {
                            if (order.SchemeType == (int)SchemeType.SingleCopy)//抄单订单,派奖时需减去奖金提成的金额
                            {
                                var bdfxManager           = new BDFXManager();
                                var bdfxRecorSingleEntity = bdfxManager.QueryBDFXRecordSingleCopyBySchemeId(schemeId);
                                var realBonusMoney        = order.AfterTaxBonusMoney;
                                var commissionMoney       = 0M;
                                if (bdfxRecorSingleEntity != null)
                                {
                                    var BDFXEntity = bdfxManager.QueryTotalSingleTreasureBySchemeId(bdfxRecorSingleEntity.BDXFSchemeId);
                                    if (BDFXEntity != null)
                                    {
                                        //计算提成金额
                                        if ((order.AfterTaxBonusMoney - order.TotalMoney) > 0)
                                        {
                                            commissionMoney = (order.AfterTaxBonusMoney - order.TotalMoney) * BDFXEntity.Commission / 100M;
                                            commissionMoney = Math.Truncate(commissionMoney * 100) / 100M;
                                            realBonusMoney  = order.AfterTaxBonusMoney - commissionMoney;
                                            //返提成
                                            if (commissionMoney > 0)
                                            {
                                                BusinessHelper.Payin_To_Balance(AccountType.Bonus, BusinessHelper.FundCategory_BDFXCommissionMoney, BDFXEntity.UserId, schemeId, commissionMoney,
                                                                                string.Format("抄单订单{0}中奖{1:N2}元,提成{2:N0}%,获得奖金盈利提成金额{3:N2}元.", schemeId, order.AfterTaxBonusMoney, BDFXEntity.Commission, commissionMoney));
                                            }
                                        }
                                    }
                                }
                                //返奖金
                                BusinessHelper.Payin_To_Balance(AccountType.Bonus, BusinessHelper.FundCategory_Bonus, order.UserId, schemeId, realBonusMoney,
                                                                string.Format("抄单订单{0}中奖{1:N2}元,扣除奖金盈利提成金额{2:N2}元,实得奖金{3:N2}元.", schemeId, order.AfterTaxBonusMoney, commissionMoney, realBonusMoney));
                            }
                            else
                            {
                                BusinessHelper.Payin_To_Balance(AccountType.Bonus, BusinessHelper.FundCategory_Bonus, order.UserId, schemeId, order.AfterTaxBonusMoney,
                                                                string.Format("中奖奖金{0:N2}元.", order.AfterTaxBonusMoney));
                            }
                        }

                        if (order.AddMoney > 0)
                        {
                            BusinessHelper.Payin_To_Balance(order.AddMoneyDescription == "10" ? AccountType.Bonus : AccountType.RedBag, BusinessHelper.FundCategory_Bonus, order.UserId, schemeId, order.AddMoney,
                                                            string.Format("订单{0}活动赠送{1:N2}元.", schemeId, order.AddMoney));
                        }
                        #endregion
                    }
                    if (order.SchemeType == (int)SchemeType.TogetherBetting)
                    {
                        #region 合买
                        var main = manager.QuerySports_Together(schemeId);
                        if (order.AfterTaxBonusMoney > 0)
                        {
                            //提成
                            var deductMoney = 0M;
                            if (order.AfterTaxBonusMoney > main.TotalMoney)
                            {
                                deductMoney = (order.AfterTaxBonusMoney - main.TotalMoney) * main.BonusDeduct / 100;
                            }
                            //提成金额,只能给合买发起者
                            if (deductMoney > 0M)
                            {
                                BusinessHelper.Payin_To_Balance(AccountType.Bonus, BusinessHelper.FundCategory_Deduct, order.UserId, schemeId, deductMoney,
                                                                string.Format("订单{0}, 合买奖金盈利提成金额{1:N2}元。", schemeId, deductMoney));
                            }

                            //中奖金额,分发到所有参与合买的用户的奖金账户
                            var bonusMoney  = order.AfterTaxBonusMoney - deductMoney;
                            var singleMoney = bonusMoney / main.TotalCount;
                            foreach (var join in manager.QuerySports_TogetherSucessJoin(schemeId))
                            {
                                //if (join.JoinType == TogetherJoinType.SystemGuarantees) continue;//20151015屏蔽原代码,如果合买有系统保底,依然将奖金返还到系统保底账上
                                //发参与奖金
                                if (join.RealBuyCount <= 0)
                                {
                                    continue;
                                }
                                var joinMoney = join.RealBuyCount * singleMoney;
                                //派钱
                                if (joinMoney > 0M)
                                {
                                    BusinessHelper.Payin_To_Balance(AccountType.Bonus, BusinessHelper.FundCategory_Bonus, join.JoinUserId, schemeId, joinMoney,
                                                                    string.Format("中奖分成,奖金¥{0:N2}元。", joinMoney));
                                }
                            }
                        }
                        if (order.AddMoney > 0M)
                        {
                            //加奖金额分配给发起者
                            if (order.DistributionWay == (int)AddMoneyDistributionWay.CreaterOnly)
                            {
                                //加奖
                                if (order.AddMoney > 0)
                                {
                                    BusinessHelper.Payin_To_Balance(order.AddMoneyDescription == "10" ? AccountType.Bonus : AccountType.RedBag, BusinessHelper.FundCategory_Activity, order.UserId, schemeId, order.AddMoney,
                                                                    string.Format("订单{0}活动赠送{1:N2}元。", schemeId, order.AddMoney), RedBagCategory.Activity);
                                }
                            }
                            //处理加奖
                            if (order.DistributionWay == (int)AddMoneyDistributionWay.Average)
                            {
                                var addMonesinglePrice = order.AddMoney / main.TotalCount;
                                foreach (var join in manager.QuerySports_TogetherSucessJoin(schemeId))
                                {
                                    if (join.JoinType == (int)TogetherJoinType.SystemGuarantees)
                                    {
                                        continue;
                                    }

                                    if (join.RealBuyCount <= 0)
                                    {
                                        continue;
                                    }
                                    //发参与奖金
                                    var joinMoney = join.RealBuyCount * addMonesinglePrice;
                                    //派钱
                                    if (joinMoney > 0M)
                                    {
                                        BusinessHelper.Payin_To_Balance(order.AddMoneyDescription == "10" ? AccountType.Bonus : AccountType.RedBag, BusinessHelper.FundCategory_Activity, join.JoinUserId, schemeId, joinMoney,
                                                                        string.Format("订单{0}活动赠送{1:N2}元。", schemeId, joinMoney), RedBagCategory.Activity);
                                    }
                                }
                            }
                            //加奖金额分配给发起者
                            if (order.DistributionWay == (int)AddMoneyDistributionWay.JoinerOnly)
                            {
                                //订单发起者没有加奖
                                var joinList           = manager.QuerySports_TogetherSucessJoin(schemeId);
                                var createrList        = joinList.Where(p => p.JoinUserId == order.UserId).ToList();
                                var createJoinCount    = createrList.Count == 0 ? 0 : createrList.Sum(p => p.RealBuyCount);
                                var addMonesinglePrice = order.AddMoney / (main.TotalCount - createJoinCount);
                                foreach (var join in joinList)
                                {
                                    if (join.JoinType == (int)TogetherJoinType.SystemGuarantees)
                                    {
                                        continue;
                                    }
                                    if (join.JoinUserId == order.UserId)
                                    {
                                        continue;
                                    }

                                    if (join.RealBuyCount <= 0)
                                    {
                                        continue;
                                    }
                                    //发参与奖金
                                    var joinMoney = join.RealBuyCount * addMonesinglePrice;
                                    //派钱
                                    if (joinMoney > 0M)
                                    {
                                        BusinessHelper.Payin_To_Balance(order.AddMoneyDescription == "10" ? AccountType.Bonus : AccountType.RedBag, BusinessHelper.FundCategory_Activity, join.JoinUserId, schemeId, joinMoney,
                                                                        string.Format("订单{0}活动赠送{1:N2}元。", schemeId, joinMoney), RedBagCategory.Activity);
                                    }
                                }
                            }
                        }
                        #endregion
                    }

                    //添加最新中奖记录表
                    if (afterTaxBonusMoney >= 2000M)
                    {
                        var userInfo = new UserBalanceManager().QueryUserRegister(order.UserId);
                        if (userInfo != null)
                        {
                            new SiteActivityManager().AddLotteryNewBonus(new E_LotteryNewBonus
                            {
                                AfterTaxBonusMoney       = order.AfterTaxBonusMoney,
                                Amount                   = order.Amount,
                                CreateTime               = order.ComplateDateTime,
                                GameCode                 = order.GameCode,
                                GameType                 = order.GameType,
                                IssuseNumber             = order.IssuseNumber,
                                PlayType                 = order.PlayType,
                                PreTaxBonusMoney         = order.PreTaxBonusMoney,
                                SchemeId                 = order.SchemeId,
                                TotalMoney               = order.TotalMoney,
                                UserDisplayName          = userInfo.DisplayName,
                                HideUserDisplayNameCount = userInfo.HideDisplayNameCount
                            });
                        }
                    }
                }

                DB.Commit();


                //刷新用户在Redis中的余额
                if (afterTaxBonusMoney > 0M)
                {
                    BusinessHelper.RefreshRedisUserBalance(userId);
                }
            }
            catch (Exception ex)
            {
                DB.Rollback();
                throw ex;
            }
        }