/// <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); }
/// <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); } }