예제 #1
0
 private void InitActivity()
 {
     _seasonInfo = PenaltykickSeasonMgr.GetSeason();
     if (_seasonInfo == null)
     {
         _seasonInfo = new PenaltykickSeasonEntity(0, ConvertHelper.StringToDateTime("2000-01-01"), ConvertHelper.StringToDateTime("2000-01-01"), true, DateTime.Now);
     }
     if (!IsActivity && !_seasonInfo.IsPrize)
     {
         //SetRank();
         //开始发奖
         SendPrize(_seasonInfo);
     }
 }
예제 #2
0
        private MessageCode SendPrize(PenaltykickSeasonEntity seasonInfo)
        {
            if (seasonInfo.Idx == 0)
            {
                return(MessageCode.Success);
            }
            PenaltykickManagerMgr.SetRank();
            var prizeList = PenaltykickManagerMgr.GetNotPrize(seasonInfo.Idx);

            seasonInfo.IsPrize   = true;
            seasonInfo.PrizeTime = DateTime.Now;
            foreach (var item in prizeList)
            {
                if (item.IsPrize || item.TotalScore < 500)
                {
                    continue;
                }
                item.IsPrize = true;
                //排名奖励
                var prize = CacheFactory.AdCache.GetPrize(3, item.Rank);
                if (prize == null || prize.Count == 0)
                {
                    continue;
                }
                //邮件
                var mail = new MailBuilder(item.Rank, item.ManagerId);
                foreach (var p in prize)
                {
                    switch (p.ItemType)
                    {
                    case 3:    //暂时只有物品奖励
                        mail.AddAttachment(p.ItemCount, p.ItemCode, false, 1);
                        break;

                    case 10:    //金条
                        mail.AddAttachment(EnumCurrencyType.GoldBar, p.ItemCount);
                        break;
                    }
                }
                using (var transactionManager = new TransactionManager(Dal.ConnectionFactory.Instance.GetDefault()))
                {
                    transactionManager.BeginTransaction();
                    var messageCode = MessageCode.NbUpdateFail;
                    do
                    {
                        if (!PenaltykickManagerMgr.Update(item, transactionManager.TransactionObject))
                        {
                            break;
                        }
                        if (!mail.Save(transactionManager.TransactionObject))
                        {
                            break;
                        }
                        messageCode = MessageCode.Success;
                    } while (false);
                    if (messageCode != MessageCode.Success)
                    {
                        transactionManager.Rollback();
                    }
                    transactionManager.Commit();
                }
            }
            PenaltykickSeasonMgr.Update(seasonInfo);
            return(MessageCode.Success);
        }