Esempio n. 1
0
 /// <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);
     }
 }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        /// <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));
            }
        }
Esempio n. 4
0
        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);
            }
        }