Ejemplo n.º 1
0
        MailBuilder CalPrize(DailycupCompetitorsEntity competitors)
        {
            //S1(报名奖励物品)|S1C(报名奖励物品数量)|W(获胜场次)|S2(获胜奖励物品)|S2C(获胜奖励物品数量)|C1(获胜金币)|R(名次)|O(冠军杯积分)|S3(排名阅历)|C2(排名金币)|AT(货币类型)
            //报名奖励物品
            string[] attendPrizeItem = _dailycupAttendPrizeItem.Split(',');
            string   prizeItem1Code  = attendPrizeItem[0];
            int      prizeItem1Count = Convert.ToInt32(attendPrizeItem[1]);
            string   prizeItem1Str   = _dailycupAttendPrizeItem;

            //胜场奖励物品
            string[] winPrizeItem    = _dailycupWinPrizeItem.Split(',');
            string   prizeItem2Code  = winPrizeItem[0];
            int      prizeItem2Count = Convert.ToInt32(winPrizeItem[1]) * competitors.WinCount;
            string   prizeItem2Str   = "";

            if (prizeItem2Count > 0)
            {
                prizeItem2Str = prizeItem2Code + "," + prizeItem2Count;
            }

            //获胜金币
            int coin1 = _dailycupWinPrizeCoin * competitors.WinCount;

            int    score         = 0;
            string prizeItem3Str = "";
            int    coin2         = 0;
            var    prize         = CacheFactory.DailycupCache.GetEntity(competitors.Rank);

            if (prize != null)
            {
                score         = prize.WorldScore;
                prizeItem3Str = prize.PrizeItems;
                coin2         = prize.Coin;
            }
            competitors.PrizeItems = prizeItem1Str + "|" + prizeItem2Str + "|" + prizeItem3Str;
            competitors.PrizeItems = competitors.PrizeItems.TrimEnd('|');
            competitors.PrizeCoin  = coin1 + coin2;
            competitors.PrizeScore = score;

            MailBuilder mailBuilder = null;

            if (prize != null)
            {
                mailBuilder = new MailBuilder(competitors, prizeItem1Code, prizeItem1Count, prizeItem2Code, prizeItem2Count, prizeItem3Str, coin1, coin2);
            }
            else
            {
                mailBuilder = new MailBuilder(competitors, prizeItem1Code, prizeItem1Count, prizeItem2Code, prizeItem2Count, coin1);
            }
            //记录成就相关数据
            AchievementTaskCore.Instance.UpdateDailyCupRank(competitors.ManagerId, competitors.Rank);
            TaskHandler.Instance.DailyCupRank(competitors.ManagerId);

            return(mailBuilder);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 杯赛排名奖励
        /// </summary>
        /// <param name="competitors"></param>
        /// <param name="s1"></param>
        /// <param name="s1c"></param>
        /// <param name="s2"></param>
        /// <param name="s2c"></param>
        /// <param name="c1"></param>
        public MailBuilder(DailycupCompetitorsEntity competitors, string s1, int s1c, string s2, int s2c, int c1)
            : this()
        {
            //S1(报名奖励物品)|S1C(报名奖励物品数量)|W(获胜场次)|S2(获胜奖励物品)|S2C(获胜奖励物品数量)|C1(获胜金币)|AT(货币类型)
            string content = string.Format("S1,{0}|S1C,{1}|W,{2}|S2,{3}|S2C,{4}|C1,{5}|AT,{6}",
                                           s1, s1c, competitors.WinCount, s2, s2c, c1, (int)EnumCurrencyType.Coin);

            if (competitors.PrizeCoin > 0)
            {
                AddAttachment(EnumCurrencyType.Coin, competitors.PrizeCoin);
            }

            var allPrize  = competitors.PrizeItems.Split('|');
            var prizeList = new Dictionary <int, int>();

            foreach (var prize in allPrize)
            {
                if (!string.IsNullOrEmpty(prize))
                {
                    var prizeInfo  = prize.Split(',');
                    var prizeCode  = Convert.ToInt32(prizeInfo[0]);
                    var prizeCount = Convert.ToInt32(prizeInfo[1]);

                    if (prizeCount > 0)
                    {
                        if (prizeList.ContainsKey(prizeCode))
                        {
                            prizeList[prizeCode] += prizeCount;
                        }
                        else
                        {
                            prizeList.Add(prizeCode, prizeCount);
                        }
                    }
                }
            }
            foreach (var item in prizeList)
            {
                AddAttachment(item.Value, item.Key, false, 0);
            }

            Builder(competitors.ManagerId, EnumMailType.DailycupPrizeBase, content);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Creates the first round.
        /// </summary>
        /// <param name="competitors">The competitors.</param>
        /// <returns></returns>
        private List <DailycupMatchEntity> CreateFirstRound(List <DailycupCompetitorsEntity> competitors)
        {
            //_MaxRound =
            int count      = competitors.Count;
            int matchCount = (int)Math.Pow(2, _dailycup.Round - 1);
            List <DailycupMatchEntity> firstRound = new List <DailycupMatchEntity>();

            for (int i = 0; i < matchCount; i++)
            {
                DailycupCompetitorsEntity away = null;
                if (matchCount * 2 - i <= count) //非轮空选手
                {
                    away = competitors[matchCount * 2 - i - 1];
                }
                DailycupMatchEntity match = Fight(competitors[i], away, 1);
                firstRound.Add(match);
            }
            return(firstRound);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// GetById
        /// </summary>
        /// <param name="idx">idx</param>
        /// <returns>DailycupCompetitorsEntity</returns>
        /// <remarks>2016/1/14 15:50:51</remarks>
        public DailycupCompetitorsEntity GetById(System.Int32 idx)
        {
            var database = new SqlDatabase(this.ConnectionString);

            DbCommand commandWrapper = database.GetStoredProcCommand("P_DailycupCompetitors_GetById");

            database.AddInParameter(commandWrapper, "@Idx", DbType.Int32, idx);


            DailycupCompetitorsEntity obj = null;

            using (IDataReader reader = database.ExecuteReader(commandWrapper))
            {
                if (reader.Read())
                {
                    obj = LoadSingleRow(reader);
                }
            }
            return(obj);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 将IDataReader的当前记录读取到DailycupCompetitorsEntity 对象
        /// </summary>
        /// <param name="reader"></param>
        /// <returns></returns>
        public DailycupCompetitorsEntity LoadSingleRow(IDataReader reader)
        {
            var obj = new DailycupCompetitorsEntity();

            obj.Idx               = (System.Int32)reader["Idx"];
            obj.DailyCupId        = (System.Int32)reader["DailyCupId"];
            obj.ManagerId         = (System.Guid)reader["ManagerId"];
            obj.ManagerName       = (System.String)reader["ManagerName"];
            obj.Logo              = (System.String)reader["Logo"];
            obj.MaxRound          = (System.Int32)reader["MaxRound"];
            obj.WinCount          = (System.Int32)reader["WinCount"];
            obj.Rank              = (System.Int32)reader["Rank"];
            obj.PrizeScore        = (System.Int32)reader["PrizeScore"];
            obj.PrizeSophisticate = (System.Int32)reader["PrizeSophisticate"];
            obj.PrizeCoin         = (System.Int32)reader["PrizeCoin"];
            obj.PrizeItems        = (System.String)reader["PrizeItems"];
            obj.Status            = (System.Int32)reader["Status"];
            obj.RowTime           = (System.DateTime)reader["RowTime"];

            return(obj);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// 带事务的Update
        /// </summary>
        /// <param name="entity"></param>
        /// <param name="trans">The trans.</param>
        /// <returns></returns>
        /// <remarks>2016/1/14 15:50:51</remarks>
        public bool Update(DailycupCompetitorsEntity entity, DbTransaction trans = null)
        {
            var       database       = new SqlDatabase(this.ConnectionString);
            DbCommand commandWrapper = database.GetStoredProcCommand("dbo.P_DailycupCompetitors_Update");

            database.AddInParameter(commandWrapper, "@Idx", DbType.Int32, entity.Idx);
            database.AddInParameter(commandWrapper, "@DailyCupId", DbType.Int32, entity.DailyCupId);
            database.AddInParameter(commandWrapper, "@ManagerId", DbType.Guid, entity.ManagerId);
            database.AddInParameter(commandWrapper, "@ManagerName", DbType.String, entity.ManagerName);
            database.AddInParameter(commandWrapper, "@Logo", DbType.AnsiString, entity.Logo);
            database.AddInParameter(commandWrapper, "@MaxRound", DbType.Int32, entity.MaxRound);
            database.AddInParameter(commandWrapper, "@WinCount", DbType.Int32, entity.WinCount);
            database.AddInParameter(commandWrapper, "@Rank", DbType.Int32, entity.Rank);
            database.AddInParameter(commandWrapper, "@PrizeScore", DbType.Int32, entity.PrizeScore);
            database.AddInParameter(commandWrapper, "@PrizeSophisticate", DbType.Int32, entity.PrizeSophisticate);
            database.AddInParameter(commandWrapper, "@PrizeCoin", DbType.Int32, entity.PrizeCoin);
            database.AddInParameter(commandWrapper, "@PrizeItems", DbType.AnsiString, entity.PrizeItems);
            database.AddInParameter(commandWrapper, "@Status", DbType.Int32, entity.Status);
            database.AddInParameter(commandWrapper, "@RowTime", DbType.DateTime, entity.RowTime);


            int results = 0;

            if (trans != null)
            {
                results = database.ExecuteNonQuery(commandWrapper, trans);
            }
            else
            {
                results = database.ExecuteNonQuery(commandWrapper);
            }

            entity.Idx = (System.Int32)database.GetParameterValue(commandWrapper, "@Idx");

            return(Convert.ToBoolean(results));
        }
Ejemplo n.º 7
0
        public static bool Update(DailycupCompetitorsEntity dailycupCompetitorsEntity, DbTransaction trans = null, string zoneId = "")
        {
            var provider = new DailycupCompetitorsProvider(zoneId);

            return(provider.Update(dailycupCompetitorsEntity, trans));
        }
Ejemplo n.º 8
0
        DailycupMatchEntity Fight(DailycupCompetitorsEntity home, DailycupCompetitorsEntity away, int round)
        {
            DailycupMatchEntity dailycupMatch = new DailycupMatchEntity();

            dailycupMatch.DailyCupId  = _dailycup.Idx;
            dailycupMatch.HomeManager = home.ManagerId;
            dailycupMatch.HomeName    = home.ManagerName;
            dailycupMatch.HomeLogo    = home.Logo;

            dailycupMatch.Idx            = ShareUtil.GenerateComb();
            dailycupMatch.Round          = round;
            dailycupMatch.ChipInCount    = 0;
            dailycupMatch.RowTime        = DateTime.Now;
            dailycupMatch.Status         = 0;
            dailycupMatch.HomeLevel      = home.Level;
            dailycupMatch.HomePower      = home.kpi;
            dailycupMatch.HomeWorldScore = home.WorldScore;
            if (away == null) //轮空
            {
                dailycupMatch.AwayManager = Guid.Empty;
                dailycupMatch.AwayName    = "";
                dailycupMatch.AwayScore   = 0;
                dailycupMatch.HomeScore   = 0;
                dailycupMatch.AwayLogo    = "";
            }
            else
            {
                try
                {
                    home.MaxRound = round;
                    away.MaxRound = round;
                    home.Rank     = _dailycup.Round - round + 1;
                    away.Rank     = _dailycup.Round - round + 1;
                    var matchHome = new MatchManagerInfo(home.ManagerId, false, false);
                    var matchAway = new MatchManagerInfo(away.ManagerId, false, false);
                    var matchData = new BaseMatchData((int)EnumMatchType.Dailycup, dailycupMatch.Idx, matchHome, matchAway);
                    matchData.ErrorCode = (int)MessageCode.MatchWait;
                    matchData.NoDraw    = true;
                    MemcachedFactory.MatchClient.Set(matchData.MatchId, matchData);

                    MatchCore.CreateMatch(matchData);
                    ////测试用 ------------
                    //matchData.ErrorCode = (int)MessageCode.Success;
                    //matchData.Home.Score = 5;
                    //matchData.Away.Score = 2;

                    if (matchData.ErrorCode == (int)MessageCode.Success)
                    {
                        dailycupMatch.AwayManager    = away.ManagerId;
                        dailycupMatch.AwayName       = away.ManagerName;
                        dailycupMatch.AwayLevel      = away.Level;
                        dailycupMatch.AwayLogo       = away.Logo;
                        dailycupMatch.AwayPower      = away.kpi;
                        dailycupMatch.AwayWorldScore = away.WorldScore;
                        dailycupMatch.HomeScore      = matchData.Home.Score;
                        dailycupMatch.AwayScore      = matchData.Away.Score;

                        if (matchData.Away.Score > matchData.Home.Score)
                        {
                            away.WinCount++;
                            if (round == _dailycup.Round)
                            {
                                away.Rank = -1;
                            }
                        }
                        else
                        {
                            home.WinCount++;
                            if (round == _dailycup.Round)
                            {
                                home.Rank = -1;
                            }
                        }
                        AddMatchStat(dailycupMatch);
                    }
                    else
                    {
                        dailycupMatch.AwayManager = Guid.Empty;
                        dailycupMatch.AwayName    = "";
                        dailycupMatch.AwayScore   = 0;
                        dailycupMatch.HomeScore   = 0;
                        dailycupMatch.AwayLogo    = "";
                        SystemlogMgr.Error("Create Dailycup", string.Format("round:{0},homeId:{1},awayId:{2},code:{3}", round, home.Idx, away.Idx, matchData.ErrorCode));
                        return(dailycupMatch);
                    }
                }
                catch (Exception ex)
                {
                    SystemlogMgr.Error("Create Dailycup", string.Format("round:{0},homeId:{1},awayId:{2}", round, home.Idx, away.Idx));
                    throw ex;
                }
            }
            return(dailycupMatch);
        }