Beispiel #1
0
        MessageCode SaveDailycup()
        {
            try
            {
                DailyCupCompetitorsDataSet.DailyCup_CompetitorsDataTable competitorsData = new DailyCupCompetitorsDataSet.DailyCup_CompetitorsDataTable();
                foreach (var entity in _Competitors)
                {
                    var row = competitorsData.NewRow();
                    row["Idx"]               = entity.Idx;
                    row["DailyCupId"]        = entity.DailyCupId;
                    row["ManagerId"]         = entity.ManagerId;
                    row["ManagerName"]       = entity.ManagerName;
                    row["Logo"]              = entity.Logo;
                    row["MaxRound"]          = entity.MaxRound;
                    row["WinCount"]          = entity.WinCount;
                    row["Rank"]              = entity.Rank;
                    row["PrizeScore"]        = entity.PrizeScore;
                    row["PrizeSophisticate"] = entity.PrizeSophisticate;
                    row["PrizeCoin"]         = entity.PrizeCoin;
                    row["Status"]            = entity.Status;
                    row["RowTime"]           = entity.RowTime;
                    competitorsData.Rows.Add(row);
                }
                DailycupSqlHelper.SaveCompetitorsFight(competitorsData);

                DailycupMatchDataSet.DailyCup_MatchDataTable matchData = new DailycupMatchDataSet.DailyCup_MatchDataTable();
                foreach (var matchList in _matches)
                {
                    foreach (var entity in matchList)
                    {
                        var row = matchData.NewRow();
                        row["DailyCupId"]     = entity.DailyCupId;
                        row["HomeManager"]    = entity.HomeManager;
                        row["HomeName"]       = entity.HomeName;
                        row["HomeLogo"]       = entity.HomeLogo;
                        row["AwayLogo"]       = entity.AwayLogo;
                        row["Idx"]            = entity.Idx;
                        row["Round"]          = entity.Round;
                        row["ChipInCount"]    = entity.ChipInCount;
                        row["RowTime"]        = entity.RowTime;
                        row["Status"]         = entity.Status;
                        row["HomeLevel"]      = entity.HomeLevel;
                        row["HomePower"]      = entity.HomePower;
                        row["HomeWorldScore"] = entity.HomeWorldScore;
                        row["AwayManager"]    = entity.AwayManager;
                        row["AwayName"]       = entity.AwayName;
                        row["AwayLevel"]      = entity.AwayLevel;
                        row["AwayPower"]      = entity.AwayPower;
                        row["AwayWorldScore"] = entity.AwayWorldScore;
                        row["AwayScore"]      = entity.AwayScore;
                        row["HomeScore"]      = entity.HomeScore;
                        matchData.Rows.Add(row);
                    }
                }
                DailycupSqlHelper.SaveDailycupMatchBulk(matchData);
                return(MessageCode.Success);
            }
            catch (Exception ex)
            {
                SystemlogMgr.Error("SaveDailycup", ex);
                return(MessageCode.Exception);
            }
        }
        public MessageCode SendPrize(DailycupInfoEntity dailycup)
        {
            if (0 == Interlocked.Exchange(ref _syncSendPrize, 1))
            {
                try
                {
                    if (dailycup == null)
                    {
                        return(MessageCode.DailycupNotExists);
                    }
                    if (dailycup.Status != (int)EnumDailycupStatus.End)  //只能计算已打完的杯赛
                    {
                        return(MessageCode.DailycupStatusNotEnd);
                    }
                    var beginRound = dailycup.Round; //获取已开奖的轮数
                    var endRound   = DailycupCore.Instance.NowGambleOpenRound(dailycup.Round, DateTime.Now);
                    if (beginRound > endRound)
                    {
                        return(MessageCode.DailycupNotimetoSendPrize);
                    }
                    dailycup.Status     = (int)EnumDailycupStatus.StartSend;
                    dailycup.UpdateTime = DateTime.Now;
                    DailycupInfoMgr.Update(dailycup);

                    var competitorsList = DailycupCompetitorsMgr.GetByDailycupId(dailycup.Idx);
                    if (competitorsList == null)
                    {
                        return(MessageCode.DailycupNoCompetitors);
                    }

                    List <MailBuilder>          mailList  = new List <MailBuilder>(competitorsList.Count);
                    List <NbManagerhonorEntity> honorList = new List <NbManagerhonorEntity>(2);
                    foreach (var entity in competitorsList)
                    {
                        mailList.Add(CalPrize(entity));
                        ManagerCore.Instance.DeleteCache(entity.ManagerId);
                        if (entity.Rank == -1)
                        {
                            honorList.Add(new NbManagerhonorEntity()
                            {
                                ManagerId = entity.ManagerId, MatchType = (int)EnumMatchType.Dailycup, PeriodId = entity.DailyCupId, Rank = 1, SubType = 0, Rowtime = DateTime.Now
                            });
                        }
                        else if (entity.Rank == 1)
                        {
                            honorList.Add(new NbManagerhonorEntity()
                            {
                                ManagerId = entity.ManagerId, MatchType = (int)EnumMatchType.Dailycup, PeriodId = entity.DailyCupId, Rank = 2, SubType = 0, Rowtime = DateTime.Now
                            });
                        }
                    }

                    DailycupSqlHelper.SaveCompetitorsPrize(competitorsList);

                    MailCore.SaveMailBulk(mailList);

                    dailycup.Status     = (int)EnumDailycupStatus.Finish;
                    dailycup.UpdateTime = DateTime.Now;
                    DailycupInfoMgr.Update(dailycup);
                    foreach (var entity in honorList)
                    {
                        NbManagerhonorMgr.Add(entity.ManagerId, entity.MatchType, entity.SubType, entity.PeriodId,
                                              entity.Rank);
                    }
                    return(MessageCode.Success);
                }
                catch (Exception ex)
                {
                    SystemlogMgr.Error("Dailycup SendPrize", ex);
                    return(MessageCode.Exception);
                }
                finally
                {
                    Interlocked.Exchange(ref _syncSendPrize, 0);
                }
            }
            else
            {
                return(MessageCode.SystemBusy);
            }
        }