/// <summary> /// 运行杯赛 /// </summary> /// <param name="dailycup"></param> /// <param name="isForce">是否强制执行</param> /// <returns></returns> public MessageCode RunDailycup(DailycupInfoEntity dailycup, bool isForce = false) { if (0 == Interlocked.Exchange(ref _syncRunDailycup, 1)) { try { if (dailycup == null) { return(MessageCode.DailycupNotExists); } if (dailycup.RunDate > DateTime.Today) { return(MessageCode.DailycupNottimetoRun); } if (dailycup.Status == (int)EnumDailycupStatus.Opening) { dailycup.Status = (int)EnumDailycupStatus.Close; dailycup.UpdateTime = DateTime.Now; DailycupInfoMgr.Update(dailycup); } else { if (dailycup.Status == (int)EnumDailycupStatus.End) { return(MessageCode.DailycupStatusNotOpen); } else if (dailycup.Status == (int)EnumDailycupStatus.Close) { if (dailycup.UpdateTime.AddHours(1) > DateTime.Now) { return(MessageCode.DailycupStatusNotOpen); } } else { return(MessageCode.DailycupStatusNotOpen); } } //查找所有这轮报名 var competitorList = DailycupCompetitorsMgr.GetForFight(dailycup.Idx); var dailycupProcess = new DailycupProcess(competitorList, dailycup); return(dailycupProcess.StartDailycup()); } catch (Exception ex) { SystemlogMgr.Error("DailycupAssociation RunDailycup", ex); return(MessageCode.Exception); } finally { Interlocked.Exchange(ref _syncRunDailycup, 0); } } else { return(MessageCode.SystemBusy); } }
bool GetAttendState(Guid managerId) { var dailycup = DailycupInfoMgr.GetByDate(DateTime.Today.AddDays(1)); if (dailycup == null || dailycup.Idx <= 0) { return(false); } bool val = false; DailycupCompetitorsMgr.ExistsByManager(dailycup.Idx, managerId, ref val); return(val); }
/// <summary> /// 报名每日杯赛 /// </summary> /// <param name="managerId"></param> /// <returns></returns> public MessageCodeResponse Attend(Guid managerId, bool hasTask) { var dailycup = DailycupInfoMgr.GetByDate(DateTime.Today.AddDays(1)); if (dailycup == null || dailycup.Idx <= 0) { return(ResponseHelper.Create <MessageCodeResponse>(MessageCode.DailycupNoMatchTomorrow)); } if (dailycup.RowTime.Date != DateTime.Now.Date)//检查时间 { return(ResponseHelper.Create <MessageCodeResponse>(MessageCode.DailycupTimeOut)); } //报名需要500金币 var manager = ManagerCore.Instance.GetManager(managerId); if (manager == null) { return(ResponseHelper.InvalidParameter <MessageCodeResponse>()); } //if (manager.Coin < 500) // return ResponseHelper.Create<MessageCodeResponse>(MessageCode.LackofCoin); //var meesscode = ActiveCore.Instance.AddActive(managerId, EnumActiveType.CupLeague, 1); // if(meesscode!= MessageCode.Success) // return ResponseHelper.Create<MessageCodeResponse>((int)meesscode); int returnCode = -2; DailycupCompetitorsMgr.Attend(dailycup.Idx, managerId, (int)MessageCode.DailycupAttendRepeat, ref returnCode); if (returnCode == (int)MessageCode.Success) { //扣除金币 //ManagerCore.Instance.CostCoin(manager, 500, EnumCoinConsumeSourceType.DailycupAttend, // ShareUtil.CreateSequential().ToString()); var response = ResponseHelper.CreateSuccess <MessageCodeResponse>(); response.Data = new MessageDataEntity(); response.Data.PopMsg = TaskHandler.Instance.DailycupAttend(managerId); return(response); } else { return(ResponseHelper.Create <MessageCodeResponse>(returnCode)); } }
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); } }