Пример #1
0
        /// <summary>
        /// 发排行榜奖励
        /// </summary>
        public bool GiveRankReward(string zoneId)
        {
            try
            {
                //获取最新的发奖操作日志
                GambleRankrewardlogEntity rewardEntity = GambleRankrewardlogMgr.GetLastestOne(zoneId);
                if (rewardEntity == null)
                {
                    GambleRankrewardlogMgr.AddNewOne(null, zoneId);
                    rewardEntity = GambleRankrewardlogMgr.GetLastestOne(zoneId);
                    //return false;
                }
                GiveReward(zoneId);
                if (CheckRewardIsFinished(zoneId))
                {
                    rewardEntity.Status = 2;
                    GambleRankMgr.MoveToHistory(rewardEntity.Idx, zoneId);
                    //GambleRankrewardlogMgr.AddNewOne(null, zoneId);
                }
                rewardEntity.UpdateTime = DateTime.Now;
                GambleRankrewardlogMgr.Update(rewardEntity, null, zoneId);
                //switch ((EnumGambleRankRewardStatus)rewardEntity.Status)
                //{
                //    //判断是否到了发奖时间,到了就改变状态为发奖中,没有就改变updateTime
                //    //发奖时间为过期后的1小时之内
                //    case EnumGambleRankRewardStatus.Init:
                //        if (IsInRewardTime())
                //        {
                //            rewardEntity.Status = 1;
                //        }
                //        break;
                //    //如果是到了发奖中,就执行发奖操作,全部操作完毕了状态改为发奖完成
                //    case EnumGambleRankRewardStatus.Rewarding:
                //        GiveReward();
                //        if(CheckRewardIsFinished())
                //            rewardEntity.Status = 2;
                //        break;
                //    //如果是发奖完成了,需要清数据,然后新增一条操作日志
                //    case EnumGambleRankRewardStatus.Rewarded:
                //        GambleRankrewardlogMgr.AddNewOne();
                //        break;
                //    default: break;
                //}

                rewardEntity.UpdateTime = DateTime.Now;
                GambleRankrewardlogMgr.Update(rewardEntity, null, zoneId);
                return(true);
            }
            catch (Exception ex)
            {
                SystemlogMgr.Error("GambleCore.GiveRankReward", ex);
            }
            return(false);
        }
Пример #2
0
        /// <summary>
        /// 每个月发奖
        /// </summary>
        public void GiveMonthRankReward()
        {
            try
            {
                //如果没到发奖时间
                if (!IsInGiveMonthRewardTime())
                {
                    return;
                }
                //获取最新的发奖操作日志
                GambleRankrewardlogEntity rewardEntity = GambleRankrewardlogMgr.GetLastestOne(string.Empty);
                if (rewardEntity == null)
                {
                    GambleRankrewardlogMgr.AddNewOne();
                    rewardEntity = GambleRankrewardlogMgr.GetLastestOne();
                    return;
                }
                //如果上一次日志记录久远,需要重新创建一条
                if (rewardEntity.UpdateTime.AddMinutes(90) < DateTime.Now)
                {
                    GambleRankrewardlogMgr.AddNewOne();
                    rewardEntity = GambleRankrewardlogMgr.GetLastestOne();
                    return;
                }

                //如果已经发过奖了,直接返回
                if (rewardEntity.Status == 2)
                {
                    return;
                }
                //执行发奖操作
                GiveRankReward(string.Empty);
            }
            catch (Exception ex)
            {
                SystemlogMgr.Error("Gamble.GiveMonthRankReward", ex);
            }
        }