コード例 #1
0
        private void InitMatch()
        {
            DateTime date = DateTime.Now;
            //排除1个月之前的比赛
            var allMatch = EuropeMatchMgr.GetAllMatvch(date.AddDays(-30));
            var allLogo  = ConfigGambleiconMgr.GetAll();

            _logoDic  = allLogo.ToDictionary(r => r.Name.Trim(), r => r.Idx);
            _allMatch = new ConcurrentDictionary <DateTime, List <EuropeMatchEntity> >();
            _oneMatch = new ConcurrentDictionary <int, EuropeMatchEntity>();
            foreach (var item in allMatch)
            {
                item.HomeLogo      = GetLogo(item.HomeName);
                item.AwayLogo      = GetLogo(item.AwayName);
                item.MatchTimeTick = ShareUtil.GetTimeTick(item.MatchTime);
                if (!_allMatch.ContainsKey(item.MatchDate))
                {
                    _allMatch.TryAdd(item.MatchDate, new List <EuropeMatchEntity>());
                }
                _allMatch[item.MatchDate].Add(item);
                _oneMatch.TryAdd(item.MatchId, item);
            }

            //是否有比赛
            _matchInfoDic = new Dictionary <long, bool>();
            for (int i = -7; i <= 7; i++)
            {
                var isMatch = EuropeMatchMgr.GetIsMatch(date.Date.AddDays(i)) > 0;
                _matchInfoDic.Add(ShareUtil.GetTimeTick(date.Date.AddDays(i)), isMatch);
            }
        }
コード例 #2
0
ファイル: ManagerCommand.cs プロジェクト: cool8868/H5Nball
        private void EgretInfo()
        {
            var token  = GetParam("token");
            var time   = ShareUtil.GetTimeTick(DateTime.Now);
            var appId  = (int)UAEnum.EgretAppId;
            var appkey = AppsettingCache.Instance.GetAppSetting(EnumAppsetting.EgretAppKey);
            var sign   = CryptHelper.GetMD5("token=" + token + "time=" + time + "appId=" + appId + appkey);
            var str    = "token=" + token + "&time=" + time + "&appId=" + appId + "&sign=" + sign;
            var url    = UAFactory.Instance.GetRedirectURL(UAFactory.Instance.FactoryName, "useraction");
            var result = UAHelper.HttpPost(url, str);
            JavaScriptSerializer serializer = new JavaScriptSerializer();
            var r1 = serializer.Deserialize <PostResult>(result);

            if (r1.Code == 0)
            {
                try
                {
                    var r2       = serializer.Deserialize <EgretInfo>(result);
                    var response = new EgretInfoResponse();
                    response.Code = 0;
                    response.Data = r2;
                    OutputHelper.Output(response);
                }
                catch (Exception ex)
                {
                }
            }
            else
            {
                OutputHelper.OutputParameterError();
            }
        }
コード例 #3
0
ファイル: CrossLadderCore.cs プロジェクト: cool8868/H5Nball
        public CrossladderManagerResponse GetManagerInfo(string siteId, Guid managerId)
        {
            var response = GetLadderManager(siteId, managerId);

            if (response.Code != ShareUtil.SuccessCode)
            {
                return(response);
            }
            var season = CacheFactory.CrossLadderCache.GetCurrentSeason();

            season.StartTick     = ShareUtil.GetTimeTick(season.Startdate);
            season.EndTick       = ShareUtil.GetTimeTick(season.Enddate.Date.AddDays(1).AddSeconds(-1));
            response.Data.Season = season;
            var rankEntity = CrossRankThread.Instance.GetMyRank(siteId, managerId, (int)EnumRankType.CrossLadderRank);

            if (rankEntity != null)
            {
                response.Data.MyRank        = rankEntity.Rank;
                response.Data.YesterdayRank = rankEntity.YesterdayRank;
            }
            else
            {
                response.Data.MyRank        = -1;
                response.Data.YesterdayRank = -1;
            }
            response.Data.WinRate = ManagerUtil.GetWinRate(managerId, EnumMatchType.CrossLadder, siteId);
            return(response);
        }
コード例 #4
0
ファイル: ScoutingCore.cs プロジェクト: cool8868/H5Nball
        public ScoutingInfoResponse GetScoutingInfo(Guid managerId)
        {
            var manager = ManagerCore.Instance.GetManager(managerId);

            if (manager == null)
            {
                return(ResponseHelper.InvalidParameter <ScoutingInfoResponse>());
            }
            var response = ResponseHelper.CreateSuccess <ScoutingInfoResponse>();

            response.Data                 = new ScoutingInfoEntity();
            response.Data.Coin            = manager.Coin;
            response.Data.Point           = PayCore.Instance.GetPoint(manager.Account);
            response.Data.FriendShipPoint = manager.FriendShipPoint;
            var list = CacheFactory.ScoutingCache.GetShowList(DateTime.Now);

            if (ActivityExThread.Instance.IsActivity(EnumActivityExEffectType.ScoutingHalfPrice, 0, 0))
            {
                foreach (var item in list)
                {
                    int price = item.CurrencyCount;
                    ActivityExThread.Instance.ScoutingHalfPrice(ref price);
                    item.CurrencyCount = price;
                }
            }
            response.Data.ShowList = list;
            var managerExtra = ManagerCore.Instance.GetManagerExtra(managerId);

            if (managerExtra != null)
            {
                response.Data.CoinFreeTimeTick            = ShareUtil.GetTimeTick(managerExtra.CoinScoutingUpdate);
                response.Data.PointFreeTimeTick           = ShareUtil.GetTimeTick(managerExtra.ScoutingUpdate);
                response.Data.FriendShipPointFreeTimeTick = ShareUtil.GetTimeTick(managerExtra.FriendScoutingUpdate);
            }
            var scoutingManager = GetById(managerId);

            if (scoutingManager != null)
            {
                response.Data.CoinNeedCount            = GetLotteryNeedCount(scoutingManager.CoinLotteryCount);
                response.Data.PointNeedCount           = GetLotteryNeedCount(scoutingManager.PointLotteryCount);
                response.Data.FriendShipPointNeedCount = GetLotteryNeedCount(scoutingManager.FriendLotteryCount);
            }
            else
            {
                response.Data.CoinNeedCount            = 10;
                response.Data.PointNeedCount           = 10;
                response.Data.FriendShipPointNeedCount = 10;
            }
            var scoutingGoldBar = ScoutingGoldbarMgr.GetById(managerId);

            response.Data.GoldBarNeedCount = 10;
            if (scoutingGoldBar != null)
            {
                response.Data.GoldBar          = scoutingGoldBar.GoldBarNumber;
                response.Data.GoldBarNeedCount = scoutingGoldBar.ScoutingNumber == 0
                    ? 10
                    : 10 - scoutingGoldBar.ScoutingNumber % 10;
            }
            return(response);
        }
コード例 #5
0
ファイル: EuropeCore.cs プロジェクト: cool8868/H5Nball
        /// <summary>
        /// 获取我的竞猜列表
        /// </summary>
        /// <param name="managerId"></param>
        /// <returns></returns>
        public GetMyEuropeGambleResponse GetMyGamble(Guid managerId)
        {
            GetMyEuropeGambleResponse response = new GetMyEuropeGambleResponse();

            try
            {
                var managerList = EuropeGamblerecordMgr.GambleRecord(managerId);
                response.Data = new GetMyEuropeGamble();

                foreach (var item in managerList)
                {
                    var match = EuropeConfig.Instance.GetOneMatch(item.MatchId);
                    if (match != null)
                    {
                        item.HomeName = match.HomeName;
                        item.AwayName = match.AwayName;
                        item.TimeTick = ShareUtil.GetTimeTick(item.RowTime);
                    }
                }
                response.Data.GambleList = managerList;
            }
            catch (Exception ex)
            {
                SystemlogMgr.Error("获取我的竞猜列表", ex);
                response.Code = (int)MessageCode.NbParameterError;
            }
            return(response);
        }
コード例 #6
0
        void GetDailycupData(DailycupFullDataEntity dailycupData, Guid managerId, int beginRound, int endRound)
        {
            try
            {
                List <DailycupMatchEntity> matchlist = DailycupMatchMgr.GetMatchByRound(dailycupData.DailycupId, beginRound, endRound);
                var manager        = ManagerCore.Instance.GetManager(managerId);
                var gambleCountMax = CacheFactory.VipdicCache.GetEffectValue(manager.VipLevel, EnumVipEffect.DailycupGambleCount);
                //BuffPlusHelper.DailycupGambleCount(ref gambleCountMax);
                dailycupData.GambleCountMax = gambleCountMax;
                dailycupData.MyGambleData   = DailycupGambleMgr.GetMyGamebleData(dailycupData.DailycupId, managerId);
                if (dailycupData.MyGambleData != null)
                {
                    foreach (var entity in dailycupData.MyGambleData)
                    {
                        entity.TimeTick = ShareUtil.GetTimeTick(entity.RowTime);
                    }
                }
                foreach (var entity in matchlist)
                {
                    entity.RoundType = CalRoundType(entity.Round, beginRound);
                }

                dailycupData.Matchs = matchlist;
            }
            catch (Exception ex)
            {
                SystemlogMgr.Error("doGetDailycupData", ex);
            }
        }
コード例 #7
0
 public List <MonitorDailyeventEntity> GetListForShow()
 {
     try
     {
         var list = MonitorDailyeventMgr.GetListForShow(ShareUtil.ZoneId);
         if (list != null)
         {
             foreach (var entity in list)
             {
                 double date = Convert.ToDouble((DateTime.Now.Date - entity.OpenTime.Date).Days);
                 if (date < 0)
                 {
                     date = 0;
                 }
                 entity.OpenTimeTick  = ShareUtil.GetTimeTick(entity.OpenTime.AddDays(date));
                 entity.StartTimeTick = ShareUtil.GetTimeTick(entity.StartTime.AddDays(date));
                 entity.EndTimeTick   = ShareUtil.GetTimeTick(entity.EndTime.AddDays(date));
             }
         }
         return(list);
     }
     catch (Exception ex)
     {
         SystemlogMgr.Error("DailyEventThread-GetListForShow", ex);
         return(null);
     }
 }
コード例 #8
0
ファイル: LadderCore.cs プロジェクト: cool8868/H5Nball
        public LadderRefreshExchangeResponse RefreshExchange(Guid managerId)
        {
            var entity = GetLadderManager(managerId);

            entity.RefreshTimes++;
            var mallDirect = new MallDirectFrame(managerId, EnumConsumeSourceType.RefreshLadderExchange,
                                                 entity.RefreshTimes);
            var checkCode = mallDirect.Check();

            if (checkCode != MessageCode.Success)
            {
                return(ResponseHelper.Create <LadderRefreshExchangeResponse>(checkCode));
            }
            var equipmentProperties = "";
            var equipmentItemcode   = "";

            entity.ExchangeIds         = CacheFactory.LadderCache.GetExchanges(out equipmentItemcode, out equipmentProperties);
            entity.ExchangedIds        = "";
            entity.EquipmentProperties = equipmentProperties;
            entity.EquipmentItems      = equipmentItemcode;
            using (var transactionManager = new TransactionManager(Dal.ConnectionFactory.Instance.GetDefault()))
            {
                transactionManager.BeginTransaction();
                checkCode = mallDirect.Save(Guid.NewGuid().ToString(), transactionManager.TransactionObject);
                if (checkCode != MessageCode.Success)
                {
                    transactionManager.Rollback();
                    return(ResponseHelper.Create <LadderRefreshExchangeResponse>(checkCode));
                }
                if (!LadderManagerMgr.Update(entity, transactionManager.TransactionObject))
                {
                    transactionManager.Rollback();
                    return(ResponseHelper.Create <LadderRefreshExchangeResponse>(MessageCode.NbUpdateFail));
                }
                transactionManager.Commit();
            }
            var response = ResponseHelper.CreateSuccess <LadderRefreshExchangeResponse>();

            response.Data              = new LadderRefreshExchangeEntity();
            response.Data.ExchangeIds  = entity.ExchangeIds;
            response.Data.ManagerPoint = mallDirect.RemainPoint;
            response.Data.RefreshPoint =
                CacheFactory.MallCache.GetDirectPoint(EnumConsumeSourceType.RefreshLadderExchange,
                                                      entity.RefreshTimes + 1);
            response.Data.Honor = entity.Honor;
            if (DateTime.Now.Hour >= 21)
            {
                response.Data.ExchangeRefreshTick = ShareUtil.GetTimeTick(DateTime.Today.AddDays(1).AddHours(21));
            }
            else
            {
                response.Data.ExchangeRefreshTick = ShareUtil.GetTimeTick(DateTime.Today.AddHours(21));
            }

            response.Data.AllEquipmentProperties =
                CacheFactory.LadderCache.AnalysisProperties(entity.EquipmentProperties);
            response.Data.LadderCoin = entity.LadderCoin;
            return(response);
        }
コード例 #9
0
        public PlayerKillOpponentResponse GetOpponents(Guid managerId, string opponentName)
        {
            var info = InnerGetInfo(managerId);

            if (info == null)
            {
                return(ResponseHelper.InvalidParameter <PlayerKillOpponentResponse>("managerId"));
            }
            var manager = ManagerCore.Instance.GetManager(managerId, true);

            if (manager == null)
            {
                return(ResponseHelper.InvalidParameter <PlayerKillOpponentResponse>("managerId"));
            }

            if (manager.Coin < 200)
            {
                return(ResponseHelper.Create <PlayerKillOpponentResponse>(MessageCode.LackofCoin));
            }

            var response = ResponseHelper.CreateSuccess <PlayerKillOpponentResponse>();

            if (!string.IsNullOrEmpty(opponentName))
            {
                var opponent = PlayerkillInfoMgr.GetOpponentByName(opponentName, 1);
                if (opponent == null)
                {
                    return(ResponseHelper.Create <PlayerKillOpponentResponse>(MessageCode.MissManager));
                }
                else if (opponent.Level < _pkMinLevel)
                {
                    return(ResponseHelper.Create <PlayerKillOpponentResponse>(MessageCode.PlayerKillMinLevel));
                }
                PlayerKillOpponentListEntity opponentList = new PlayerKillOpponentListEntity();
                opponentList.Opponents = new List <PlayerKillOpponentEntity>(1);

                opponent.FormationId = TeammemberCore.Instance.GetSolution(opponent.ManagerId).FormationId;
                opponentList.Opponents.Add(opponent);
                response.Data = opponentList;
            }
            else
            {
                RefreshOpponent(info, manager.Kpi);
                response.Data           = new PlayerKillOpponentListEntity();
                response.Data.Opponents = info.Opponents;
            }
            if (response.Data != null && response.Data.Opponents.Count > 0)
            {
                //扣除金币
                ManagerCore.Instance.CostCoin(manager, 200, EnumCoinConsumeSourceType.PkMatchRefresh, ShareUtil.GenerateComb().ToString());
            }
            response.Data.OpponentRefreshTimeTick = ShareUtil.GetTimeTick(info.OpponentRefreshTime);
            return(response);
        }
コード例 #10
0
ファイル: LadderCore.cs プロジェクト: cool8868/H5Nball
        /// <summary>
        /// 天梯赛清除CD
        /// </summary>
        /// <param name="managerId"></param>
        /// <returns></returns>
        public LadderClearCDResponse LadderClearCD(Guid managerId)
        {
            LadderClearCDResponse response = new LadderClearCDResponse();

            response.Data = new LadderClearCD();
            try
            {
                if (_ManagerMatchCD.ContainsKey(managerId))
                {
                    if (DateTime.Now >= _ManagerMatchCD[managerId])
                    {
                        response.Code = (int)MessageCode.LadderCdEnd;
                    }
                    var manager = ManagerCore.Instance.GetManager(managerId);
                    int point   = 0;
                    if (manager.VipLevel > 0)
                    {
                        point = LadderVipClearCDPrice;
                    }
                    else
                    {
                        point = LadderNotVipClearCDPrice;
                    }
                    var pointNumber = PayCore.Instance.GetPoint(managerId);
                    if (pointNumber < point)
                    {
                        response.Code = (int)MessageCode.NbPointShortage;
                        return(response);
                    }
                    var messCode = PayCore.Instance.GambleConsume(managerId, point, ShareUtil.GenerateComb(),
                                                                  EnumConsumeSourceType.LadderClearCD);
                    if (messCode == MessageCode.Success)
                    {
                        _ManagerMatchCD[managerId] = DateTime.Now;
                        response.Data.CDTick       = ShareUtil.GetTimeTick(DateTime.Now);
                        response.Data.Point        = pointNumber - point;
                    }
                }
                else
                {
                    response.Code = (int)MessageCode.LadderCdEnd;
                }
            }
            catch (Exception ex)
            {
                SystemlogMgr.Error("天梯赛清除CD", ex);
            }
            return(response);
        }
コード例 #11
0
        public PlayerkillInfoResponse GetInfo(Guid managerId)
        {
            var info    = InnerGetInfo(managerId);
            var manager = ManagerCore.Instance.GetManager(managerId, true);

            if (manager == null)
            {
                return(ResponseHelper.Create <PlayerkillInfoResponse>((int)MessageCode.MissManager));
            }
            if (info.LotteryMatchId != Guid.Empty)
            {
                info.HasLottery = true;
            }

            if (DateTime.Now > info.OpponentRefreshTime)
            {
                RefreshOpponent(info, manager.Kpi);
            }
            else if (ShareUtil.CheckBytes(info.OpponentInfo))
            {
                info.Opponents = SerializationHelper.FromByte <List <PlayerKillOpponentEntity> >(info.OpponentInfo);
                if (info.Opponents == null)
                {
                    RefreshOpponent(info, manager.Kpi);
                }
                else if (!info.Opponents.Exists(d => d.HasWin == false))
                {
                    RefreshOpponent(info, manager.Kpi);
                }
            }
            else
            {
                RefreshOpponent(info, manager.Kpi);
            }
            var response = ResponseHelper.CreateSuccess <PlayerkillInfoResponse>();

            info.RemainTimes = 6;//CacheFactory.PlayerKillCache.GetChallengeTimes(manager.Level) - info.RemainTimes + info.BuyTimes;
            var managerExtra = ManagerCore.Instance.GetManagerExtra(managerId);

            if (managerExtra != null)
            {
                info.ResumeStaminaTimeTick = ShareUtil.GetTimeTick(managerExtra.ResumeStaminaTime.AddSeconds(ManagerCore.Instance.GetResumeStaminaTimeConfig(manager.VipLevel)));
            }

            info.OpponentRefreshTimeTick = ShareUtil.GetTimeTick(info.OpponentRefreshTime);
            info.TotalPoint = CacheFactory.PlayerKillCache.GetTotalPoint(manager.VipLevel);
            response.Data   = info;
            return(response);
        }
コード例 #12
0
ファイル: TurntableCore.cs プロジェクト: cool8868/H5Nball
        TurntableInfo GetTurntableInfo(TurntableFrame turntable)
        {
            TurntableInfo data             = new TurntableInfo();
            var           turntableManager = turntable.TurntableManagerEntity;

            data.DayProduceLuckyCoin = turntableManager.DayProduceLuckyCoin;
            data.FreeOfChargeNumber  = turntableManager.GiveLuckyCoin;
            data.LuckyCoin           = turntableManager.LuckyCoin;
            data.TurntableType       = turntableManager.TurntableType;
            data.NextResetPoint      = turntable.GetResetPoint();
            data.ItemList            = turntable.GetTurntableList();
            data.StartTimeTick       = ShareUtil.GetTimeTick(startTime);
            data.EndTimeTick         = ShareUtil.GetTimeTick(endTime);
            return(data);
        }
コード例 #13
0
        public CrosscrowdInfoResponse GetCrowdInfo(string siteId)
        {
            var crowd = CrossCrowdManager.Instance.GetCurrent(siteId);

            if (crowd == null)
            {
                return(ResponseHelper.Create <CrosscrowdInfoResponse>(MessageCode.CrowdNoData));
            }
            crowd.StartTick = ShareUtil.GetTimeTick(crowd.StartTime);
            crowd.EndTick   = ShareUtil.GetTimeTick(crowd.EndTime);
            var response = ResponseHelper.CreateSuccess <CrosscrowdInfoResponse>();

            response.Data = crowd;
            return(response);
        }
コード例 #14
0
        /// <summary>
        /// 获取奥运金牌数量
        /// </summary>
        /// <param name="managerId"></param>
        /// <returns></returns>
        public OlympicGetInfoResponse GetManagerInfo(Guid managerId)
        {
            OlympicGetInfoResponse response = new OlympicGetInfoResponse();

            response.Data = new OlympicGetInfo();
            try
            {
                var info = GetInfo(managerId);
                response.Data.TheGoldMedalDic = info.TheGoldMedalDic;
                response.Data.StartTimeTick   = ShareUtil.GetTimeTick(startTime);
                response.Data.EndTimeTick     = ShareUtil.GetTimeTick(endTime);
            }
            catch (Exception ex)
            {
                SystemlogMgr.Error("获取奥运金牌", ex);
                response.Code = (int)MessageCode.NbParameterError;
            }
            return(response);
        }
コード例 #15
0
        public string IsRegistByNameList()
        {
            var    data     = GetParamNOUrlDecode("data");
            string serverid = GetParam("serverId");
            string time     = GetParam("time");
            string sign     = GetParam("sign");

            if (string.IsNullOrEmpty(data) ||
                string.IsNullOrEmpty(serverid) ||
                string.IsNullOrEmpty(time) ||
                string.IsNullOrEmpty(sign))
            {
                return(UAErrorCode.ErrDataOP);
            }
            var key     = CacheFactory.AppsettingCache.GetAppSetting(EnumAppsetting.H5_A8DataKey);
            var appSign = CryptHelper.GetMD5(data + serverid + time + key).ToLower();

            if (sign != appSign)
            {
                return(UAErrorCode.ErrCheckSign);
            }
            data = GetParam("data");
            //UAHelper.WriteLog("IsRegistByNameList", "|" + data + "|" + serverid + "|" + time + "|" + sign + "|");

            var managerList = WebServerHandler.IsRegistByNameList(platFormKey, serverid, data);

            if (managerList == null || managerList.Length <= 0 || string.IsNullOrEmpty(managerList[0].Name))
            {
                return(UAErrorCode.ErrNoUser);
            }
            string str = "";

            foreach (var manager in managerList)
            {
                var rowTime    = manager.RowTime;
                var registTime = ShareUtil.GetTimeTick(rowTime);
                str += "{\"name\":\"" + manager.Name + "\",\"serverId\":\"" + serverid + "\",\"gamelevel\":\"" + manager.Level +
                       "\",\"registtime\":\"" + registTime + "\"},";
            }
            string r = str.Substring(0, str.Length - 1);

            return("{\"code\":\"0\",\"data\":[" + r + "]}");
        }
コード例 #16
0
ファイル: MailCore.cs プロジェクト: cool8868/H5Nball
        public MailDataResponse GetMailData(Guid managerId)
        {
            int totalCount = 0;
            var response   = ResponseHelper.CreateSuccess <MailDataResponse>();

            response.Data = new MailDataEntity();
            var list = MailInfoMgr.GetByManager(managerId, ref totalCount);

            if (list != null && list.Count > 0)
            {
                foreach (var entity in list)
                {
                    entity.MailTick        = ShareUtil.GetTimeTick(entity.RowTime);
                    entity.MailExpiredTick = ShareUtil.GetTimeTick(entity.ExpiredTime);
                    entity.MailAttachment  = SerializationHelper.FromByte <MailAttachmentEntity>(entity.Attachment);
                }
            }
            response.Data.Mails      = list;
            response.Data.TotalCount = totalCount;
            return(response);
        }
コード例 #17
0
ファイル: EuropeCore.cs プロジェクト: cool8868/H5Nball
        /// <summary>
        /// 获取我的竞猜活动
        /// </summary>
        /// <param name="managerId"></param>
        /// <returns></returns>
        public EuropeGambleResponse GetMyActivity(Guid managerId)
        {
            EuropeGambleResponse response = new EuropeGambleResponse();

            try
            {
                var  info      = GetMyGambleInfo(managerId);
                var  prizeList = info.PrizeRecord.Split(',');
                int  setp      = EuropeConfig.Instance.GetStepByWin(info.CorrectNumber);
                bool isUpdate  = false;
                for (int i = 1; i <= 4; i++)
                {
                    if (prizeList.Length < i)
                    {
                        isUpdate         = true;
                        prizeList[i - 1] = "0";
                    }
                    if (prizeList[i - 1] == "0" && setp >= i)
                    {
                        isUpdate         = true;
                        prizeList[i - 1] = "1";
                    }
                }
                info.PrizeRecord = String.Join(",", prizeList);
                if (isUpdate)
                {
                    info.UpdateTime = DateTime.Now;
                    EuropeGambleMgr.Update(info);
                }
                info.ActivityEndTime = ShareUtil.GetTimeTick(EuropeConfig.Instance.EndTime);
                response.Data        = info;
            }
            catch (Exception ex)
            {
                SystemlogMgr.Error("欧洲杯获取我的竞猜活动", ex);
                response.Code = (int)MessageCode.NbParameterError;
            }
            return(response);
        }
コード例 #18
0
        /// <summary>
        /// 活动提示接口
        /// </summary>
        /// <param name="managerId"></param>
        /// <returns></returns>
        public PenaltyKickGetActivityInfoResponse GetActivityInfo(Guid managerId)
        {
            var response = new PenaltyKickGetActivityInfoResponse();

            response.Data = new PenaltyKickGetActivityInfo();
            try
            {
                DateTime date = DateTime.Now;
                //入口在活动结束2天后关闭
                if (_seasonInfo.StartTime <= date && _seasonInfo.EndTime >= DateTime.Now.AddDays(-2))
                {
                    response.Data.IsActivity = true;
                }
                var info = GetManager(managerId);
                if (info != null)
                {
                    if (info.FreeNumber > 0 || info.GameCurrency > 0)
                    {
                        response.Data.IsPrompt = true;
                    }
                }
                else if (IsActivity)
                {
                    response.Data.IsPrompt = true;
                }
                else
                {
                    response.Data.IsPrompt = false;
                }
                response.Data.StartTimeTick = ShareUtil.GetTimeTick(_seasonInfo.StartTime);
                response.Data.EndTimeTick   = ShareUtil.GetTimeTick(_seasonInfo.EndTime);
            }
            catch (Exception ex)
            {
                SystemlogMgr.Error("点球获取活动信息", ex);
                response.Code = (int)MessageCode.NbParameterError;
            }
            return(response);
        }
コード例 #19
0
ファイル: LadderThread.cs プロジェクト: cool8868/H5Nball
        LadderHookInfoResponse BuildHookInfoResponse(LadderHookEntity entity, bool isHook)
        {
            var response = ResponseHelper.CreateSuccess <LadderHookInfoResponse>();

            response.Data                = new LadderHookInfoEntity();
            response.Data.IsHook         = isHook;
            response.Data.CurTimes       = entity.CurTimes;
            response.Data.CurWiningTimes = entity.CurWiningTimes;
            response.Data.MaxScore       = entity.MaxScore;
            response.Data.MaxTimes       = entity.MaxTimes;
            response.Data.MinScore       = entity.MinScore;
            response.Data.LadderHookList = new List <LadderHook>();
            if (_hookListDic.ContainsKey(entity.ManagerId))
            {
                response.Data.LadderHookList = _hookListDic[entity.ManagerId];
            }
            var curTime = DateTime.Now;

            response.Data.NextMatchWaitSeconds = isHook ? ShareUtil.CalWaitTime(entity.NextMatchTime, curTime) : 0;
            response.Data.ExpiredTick          = ShareUtil.GetTimeTick(entity.Expired);
            return(response);
        }
コード例 #20
0
ファイル: RankHandler.cs プロジェクト: cool8868/H5Nball
        public RankResponse GetResponse(Guid managerId, int pageIndex, int pageSize)
        {
            var response = ResponseHelper.CreateSuccess <RankResponse>();

            response.Data        = new RankDataEntity();
            response.Data.MyRank = -1;
            int start = pageSize * (pageIndex - 1);
            int max   = pageSize;

            if (_totalRecord > 0)
            {
                if ((start + pageSize) > _totalRecord)
                {
                    max = _totalRecord - start;
                }
                if (max > 0)
                {
                    response.Data.Ranks = _rankList.GetRange(start, max);
                }
            }
            response.Data.NextTimeTick = ShareUtil.GetTimeTick(_nextTime);
            response.Data.TotalCount   = _totalRecord;
            response.Data.TotalPage    = ShareUtil.CalPageCount(_totalRecord, pageSize);
            var entity = GetMyRankEntity(managerId);

            response.Data.MyRank = entity.Rank;
            if (entity.Rank > 0)
            {
                response.Data.MyData  = entity.GetData();
                response.Data.MyExtra = entity.GetExtraData();
            }
            else
            {
                response.Data.MyData = GetMyData(managerId);
            }
            return(response);
        }
コード例 #21
0
ファイル: TransferThread.cs プロジェクト: cool8868/H5Nball
        public TransferThread(int domainId)
        {
            _domainId = domainId;
            var transferList = TransferMainMgr.GetTransferList(_domainId);

            _transferDic     = new ConcurrentDictionary <Guid, TransferMainEntity>();
            _tenTransferList = new List <TransferMainEntity>();
            foreach (var item in transferList)
            {
                item.TransferDurationTick = ShareUtil.GetTimeTick(item.TransferDuration);
                item.TransferDurationTick = ShareUtil.GetTimeTick(item.TransferDuration);
                if (DateTime.Now < item.TransferStartTime.AddMinutes(10))
                {
                    var modId = ShareUtil.GetTableMod(item.TransferId);
                    item.ModId = modId;
                    _tenTransferList.Add(item);
                }
                else
                {
                    _transferDic.TryAdd(item.TransferId, item);
                }
            }
            Sort();
        }
コード例 #22
0
        /// <summary>
        /// 获取活动信息
        /// </summary>
        /// <param name="managerId"></param>
        /// <param name="zoneName"></param>
        /// <returns></returns>
        public CrossActivityInfoResponse GetActivityInfo(Guid managerId, string zoneName)
        {
            CrossActivityInfoResponse response = new CrossActivityInfoResponse();

            response.Data = new CrossActivityInfo();
            try
            {
                if (!IsActivity)
                {
                    response.Data.IsOpen = false;
                    return(response);
                }
                var managerInfo = NbManagerMgr.GetById(managerId, zoneName);
                if (managerInfo == null)
                {
                    return(ResponseHelper.Create <CrossActivityInfoResponse>(MessageCode.NbParameterError));
                }
                var maxCount = CacheFactory.VipdicCache.GetEffectValue(managerInfo.VipLevel,
                                                                       (int)EnumVipEffect.BeThankfulActivity);
                var usedNumber = CrossactivityRecordMgr.GetActivityNumber(managerId, DateTime.Now.Date);
                response.Data.MaxNumber  = maxCount;
                response.Data.UsedNumber = usedNumber;
                response.Data.GoldBar    = _ActivityInfo.GoldBarNumber;
                //response.Data.PrizeList = CacheFactory.TurntableCache.GetAllPrize();
                response.Data.IsOpen        = true;
                response.Data.ActivityEnd   = ShareUtil.GetTimeTick(_ActivityInfo.EndTime);
                response.Data.ActivityStart = ShareUtil.GetTimeTick(_ActivityInfo.StartTime);
                response.Data.IsPrompt      = maxCount > usedNumber;
            }
            catch (Exception ex)
            {
                SystemlogMgr.Error("获取跨服活动信息", ex);
                response.Code = (int)MessageCode.NbParameterError;
            }
            return(response);
        }
コード例 #23
0
ファイル: LeagueCore.cs プロジェクト: cool8868/H5Nball
        public LaegueRefreshExchangeResponse RefreshExchange(Guid managerId)
        {
            var manager = ManagerCore.Instance.GetManager(managerId);

            if (manager == null)
            {
                return(ResponseHelper.InvalidParameter <LaegueRefreshExchangeResponse>());
            }

            var entity = LaegueManagerinfoMgr.GetById(managerId);

            entity.RefreshTimes++;
            var mallDirect = new MallDirectFrame(managerId, EnumConsumeSourceType.RefreshLeagueExchange, entity.RefreshTimes);
            var checkCode  = mallDirect.Check();

            if (checkCode != MessageCode.Success)
            {
                return(ResponseHelper.Create <LaegueRefreshExchangeResponse>(checkCode));
            }
            var    equipmentProperties = "";
            var    equipmentItemcode   = "";
            string codeString          = "";

            var leagueManager = LaegueManagerinfoMgr.GetById(managerId);

            if (leagueManager == null)
            {
                return(ResponseHelper.InvalidParameter <LaegueRefreshExchangeResponse>());
            }

            if (!string.IsNullOrEmpty(leagueManager.ExchangeIds))
            {
                var itemList = leagueManager.ExchangeIds.Split('|');
                foreach (var item in itemList)
                {
                    var itemcode = item.Split(',')[1];
                    if (itemcode.IndexOf("39") == 0)
                    {
                        codeString += item + "|";
                    }
                }
                if (codeString.Length > 0)
                {
                    codeString = codeString.Substring(0, codeString.Length - 1);
                }
            }

            entity.ExchangeIds         = CacheFactory.LeagueCache.GetExchanges(manager.Level >= 60, out equipmentItemcode, out equipmentProperties, true, codeString);
            entity.ExchangedIds        = "";
            entity.EquipmentProperties = equipmentProperties;
            entity.EquipmentItems      = equipmentItemcode;
            using (var transactionManager = new TransactionManager(Dal.ConnectionFactory.Instance.GetDefault()))
            {
                transactionManager.BeginTransaction();
                checkCode = mallDirect.Save(Guid.NewGuid().ToString(), transactionManager.TransactionObject);
                if (checkCode != MessageCode.Success)
                {
                    transactionManager.Rollback();
                    return(ResponseHelper.Create <LaegueRefreshExchangeResponse>(checkCode));
                }
                if (!LaegueManagerinfoMgr.Update(entity, transactionManager.TransactionObject))
                {
                    transactionManager.Rollback();
                    return(ResponseHelper.Create <LaegueRefreshExchangeResponse>(MessageCode.NbUpdateFail));
                }
                transactionManager.Commit();
            }
            var      response = ResponseHelper.CreateSuccess <LaegueRefreshExchangeResponse>();
            DateTime date     = DateTime.Now;

            if (DateTime.Now.Hour >= 21)
            {
                date = DateTime.Today.AddDays(1).AddHours(21);//每天21点刷新
            }
            else
            {
                date = DateTime.Today.AddHours(21);
            }
            response.Data = new LeagueRefreshExchangeEntity
            {
                ExchangeIds  = entity.ExchangeIds,
                ManagerPoint = mallDirect.RemainPoint,
                SumScore     = entity.SumScore,
                RefreshPoint =
                    CacheFactory.MallCache.GetDirectPoint(EnumConsumeSourceType.RefreshLeagueExchange,
                                                          entity.RefreshTimes + 1),
                AllEquipmentProperties = CacheFactory.LeagueCache.AnalysisProperties(entity.EquipmentProperties),
                NextRefreshTick        = ShareUtil.GetTimeTick(date)
            };
            return(response);
        }
コード例 #24
0
ファイル: BuffPoolCore.cs プロジェクト: cool8868/H5Nball
        /// <summary>
        /// 获取多个Buff
        /// </summary>
        /// <param name="managerId">经理Id</param>
        /// <param name="unitType">Buff细分类型</param>
        /// <param name="fillSource">是否填充源</param>
        /// <param name="syncFlag">缓存标记</param>
        /// <param name="buffCodes">Buff枚举</param>
        /// <returns></returns>
        public DTOBuffValue[] GetBuffValues(Guid managerId, EnumBuffUnitType unitType = EnumBuffUnitType.None, bool fillSource = false, bool syncFlag = true, params EnumBuffCode[] buffCodes)
        {
            if (null == buffCodes || buffCodes.Length == 0)
            {
                return(null);
            }
            int          cnt    = buffCodes.Length;
            var          arr    = new DTOBuffValue[cnt];
            int          buffId = 0;
            DTOBuffValue obj    = null;
            Dictionary <int, DTOBuffValue> dic = null;
            bool multiFlag = cnt > 1;

            if (multiFlag)
            {
                dic = new Dictionary <int, DTOBuffValue>(cnt);
                for (int i = 0; i < buffCodes.Length; ++i)
                {
                    buffId = (int)buffCodes[i];
                    if (!dic.TryGetValue(buffId, out obj))
                    {
                        obj         = new DTOBuffValue(buffId);
                        dic[buffId] = obj;
                    }
                    arr[i] = obj;
                }
            }
            else
            {
                buffId = (int)buffCodes[0];
                obj    = new DTOBuffValue(buffId);
                arr[0] = obj;
            }
            var pools = GetBuffSource(managerId, unitType, syncFlag);

            if (null == pools || pools.Count == 0)
            {
                return(arr);
            }
            int[]    buffIds = null;
            DateTime dtNow   = DateTime.Now;

            foreach (var item in pools)
            {
                if (item.ExpiryTime <= dtNow)
                {
                    continue;
                }
                buffIds = BuffCache.Instance().GetBaseBuffArray(item.BuffMap);
                if (null == buffIds)
                {
                    continue;
                }
                foreach (int val in buffIds)
                {
                    if (!multiFlag && val != buffId ||
                        multiFlag && !dic.TryGetValue(val, out obj))
                    {
                        continue;
                    }
                    obj.Point   += (double)item.BuffVal;
                    obj.Percent += (double)item.BuffPer;
                    if (fillSource)
                    {
                        if (null == obj.SrcList)
                        {
                            obj.SrcList = new List <DTOBuffSource>();
                        }
                        obj.SrcList.Add(new DTOBuffSource()
                        {
                            Idx        = item.Id,
                            SkillCode  = item.SkillCode,
                            SkillLevel = item.SkillLevel,
                            Point      = (double)item.BuffVal,
                            Percent    = (double)item.BuffPer,
                            ExpiryTime = ShareUtil.GetTimeTick(item.ExpiryTime),
                        });
                    }
                    if (!multiFlag)
                    {
                        break;
                    }
                }
            }
            if (multiFlag)
            {
                dic.Clear();
            }
            return(arr);
        }
コード例 #25
0
ファイル: LeagueCore.cs プロジェクト: cool8868/H5Nball
        //获取联赛积分商城数据
        public LaegueManagerinfoResponse GetLeagueMallInfo(Guid managerId)
        {
            var manager = ManagerCore.Instance.GetManager(managerId);

            if (manager == null)
            {
                return(ResponseHelper.InvalidParameter <LaegueManagerinfoResponse>());
            }

            var leagueManager = LaegueManagerinfoMgr.GetById(managerId);

            if (leagueManager == null)
            {
                return(ResponseHelper.InvalidParameter <LaegueManagerinfoResponse>());
            }

            if (string.IsNullOrEmpty(leagueManager.ExchangeIds) || CheckExchangeRefresh(leagueManager.RefreshDate))
            {
                var    equipmentProperties = "";
                var    equipmentItemcode   = "";
                bool   isReplace           = false;
                string codeString          = "";
                if (!string.IsNullOrEmpty(leagueManager.ExchangeIds) && leagueManager.RefreshDate.Month != DateTime.Now.Month)
                {
                    isReplace = true;
                    var itemList = leagueManager.ExchangeIds.Split('|');
                    foreach (var item in itemList)
                    {
                        var itemcode = item.Split(',')[1];
                        if (itemcode.IndexOf("39") == 0)
                        {
                            codeString += item + "|";
                        }
                    }
                    if (codeString.Length > 0)
                    {
                        codeString = codeString.Substring(0, codeString.Length - 1);
                    }
                }
                leagueManager.ExchangeIds         = CacheFactory.LeagueCache.GetExchanges(manager.Level >= 60, out equipmentItemcode, out equipmentProperties, isReplace, codeString);
                leagueManager.RefreshDate         = DateTime.Now;
                leagueManager.RefreshTimes        = 0;
                leagueManager.ExchangedIds        = "";
                leagueManager.EquipmentProperties = equipmentProperties;
                leagueManager.EquipmentItems      = equipmentItemcode;
                LaegueManagerinfoMgr.Update(leagueManager);
            }

            var response = ResponseHelper.CreateSuccess <LaegueManagerinfoResponse>();

            response.Data = leagueManager;
            response.Data.RefreshPoint =
                CacheFactory.MallCache.GetDirectPoint(EnumConsumeSourceType.RefreshLeagueExchange, leagueManager.RefreshTimes + 1);
            response.Data.AllEquipmentProperties =
                CacheFactory.LeagueCache.AnalysisProperties(leagueManager.EquipmentProperties);
            DateTime date = DateTime.Now;

            if (DateTime.Now.Hour >= 21)
            {
                date = DateTime.Today.AddDays(1).AddHours(21);//每天21点刷新
            }
            else
            {
                date = DateTime.Today.AddHours(21);
            }
            response.Data.NextRefreshTick = ShareUtil.GetTimeTick(date);
            return(response);
        }
コード例 #26
0
ファイル: LadderCore.cs プロジェクト: cool8868/H5Nball
        public LadderManagerResponse GetManagerInfo(Guid managerId)
        {
            var manager = GetLadderManager(managerId);

            if (string.IsNullOrEmpty(manager.ExchangeIds) || CheckExchangeRefresh(manager.RefreshDate))
            {
                var equipmentProperties = "";
                var equipmentItemcode   = "";
                manager.ExchangeIds         = CacheFactory.LadderCache.GetExchanges(out equipmentItemcode, out equipmentProperties);
                manager.RefreshDate         = DateTime.Today.AddHours(21);//每天21点刷新
                manager.RefreshTimes        = 0;
                manager.ExchangedIds        = "";
                manager.EquipmentProperties = equipmentProperties;
                manager.EquipmentItems      = equipmentItemcode;
                LadderManagerMgr.Update(manager);
            }
            var season = CacheFactory.SeasonCache.GetCurrentSeason();

            season.StartTick = ShareUtil.GetTimeTick(season.Startdate);
            season.EndTick   = ShareUtil.GetTimeTick(season.Enddate.Date.AddDays(1).AddSeconds(-1));
            season.NowTick   = ShareUtil.GetTimeTick(DateTime.Now);
            var response = ResponseHelper.CreateSuccess <LadderManagerResponse>();

            response.Data        = manager;
            response.Data.Season = season;
            if (DateTime.Now.Hour >= 21)
            {
                response.Data.ExchangeRefreshTick =
                    ShareUtil.GetTimeTick(DateTime.Today.AddDays(1).AddHours(21));
            }
            else
            {
                response.Data.ExchangeRefreshTick =
                    ShareUtil.GetTimeTick(DateTime.Today.AddHours(21));
            }
            var rankEntity = RankLadderThread.Instance.GetMyRank(managerId, (int)EnumRankType.LadderRank);

            if (rankEntity != null)
            {
                response.Data.MyRank        = rankEntity.Rank;
                response.Data.YesterdayRank = rankEntity.YesterdayRank;
            }
            else
            {
                response.Data.MyRank        = -1;
                response.Data.YesterdayRank = -1;
            }
            response.Data.WinRate      = ManagerUtil.GetWinRate(managerId, EnumMatchType.Ladder);
            response.Data.RefreshPoint =
                CacheFactory.MallCache.GetDirectPoint(EnumConsumeSourceType.RefreshLadderExchange, manager.RefreshTimes + 1);
            response.Data.AllEquipmentProperties =
                CacheFactory.LeagueCache.AnalysisProperties(manager.EquipmentProperties);
            if (LadderCore.Instance._ManagerMatchCD.ContainsKey(managerId))
            {
                response.Data.CDTick = ShareUtil.GetTimeTick(_ManagerMatchCD[managerId]);
            }
            else
            {
                response.Data.CDTick = ShareUtil.GetTimeTick(DateTime.Now);
            }
            return(response);
        }
コード例 #27
0
        /// <summary>
        /// 获取竞技场信息
        /// </summary>
        /// <param name="managerId"></param>
        /// <returns></returns>
        public ArenaGetInfoResponse GetArenaResponse(Guid managerId)
        {
            ArenaGetInfoResponse response = new ArenaGetInfoResponse();

            response.Data = new ArenaGetInfo();
            try
            {
                int myChampionNumber = 0;
                var arenaInfo        = GetArenaInfo(managerId);
                var result           = new ArenaGetInfo();
                if (arenaInfo != null && IsStart)
                {
                    result.Integral   = arenaInfo.Integral;
                    myChampionNumber  = arenaInfo.ChampionNumber;
                    result.DanGrading = arenaInfo.DanGrading;
                    if (arenaInfo.DanGrading == 1)
                    {
                        result.IsMaxDanGrading = true;
                    }
                    else
                    {
                        var dangradingConfig = CacheFactory.ArenaCache.GetDangrading(arenaInfo.DanGrading);
                        result.UpIntegral = dangradingConfig.Integral - arenaInfo.Integral;
                    }
                    switch (arenaInfo.ArenaType)
                    {
                    case 1:
                        result.IsIntoMatch = arenaInfo.Teammember1Status;
                        break;

                    case 2:
                        result.IsIntoMatch = arenaInfo.Teammember2Status;
                        break;

                    case 3:
                        result.IsIntoMatch = arenaInfo.Teammember3Status;
                        break;

                    case 4:
                        result.IsIntoMatch = arenaInfo.Teammember4Status;
                        break;

                    case 5:
                        result.IsIntoMatch = arenaInfo.Teammember5Status;
                        break;
                    }
                }
                result.MyRank = GetRank(managerId);
                if (arenaInfo == null)
                {
                    result.DanGrading = 15;
                }
                result.ArenaType             = _seasonInfo.ArenaType;
                result.EndTimeTick           = ShareUtil.GetTimeTick(_seasonInfo.EndTime);
                result.StartTimeTick         = ShareUtil.GetTimeTick(_seasonInfo.StartTime);
                result.MyChampionNumber      = myChampionNumber;
                result.OnChampionName        = _seasonInfo.OnChampionName;
                result.OnChampionZoneName    = _seasonInfo.OnChampionZoneName;
                result.Status                = _seasonInfo.Status;
                result.TheKingChampionNumber = _seasonInfo.TheKingChampionNumber;
                result.TheKingName           = _seasonInfo.TheKingName;
                result.TheKingZoneName       = _seasonInfo.TheKingZoneName;
                result.StaminaEntity         = RestoreStamina(arenaInfo);
                response.Data                = result;
            }
            catch (Exception ex)
            {
                SystemlogMgr.Error("获取竞技场信息", ex);
                response.Code = (int)MessageCode.NbParameterError;
            }
            return(response);
        }
コード例 #28
0
        /// <summary>
        /// 体力恢复
        /// </summary>
        /// <param name="arenaManagerInfo"></param>
        /// <param name="isUpdate"></param>
        /// <returns></returns>
        public ArenaStamina RestoreStamina(ArenaManagerinfoEntity arenaManagerInfo, bool isUpdate = false)
        {
            ArenaStamina response = new ArenaStamina();
            DateTime     dateTime = DateTime.Now;

            try
            {
                int staminaStartStopHour = 1;
                int staminaEndStopHour   = 8;
                //用于比较的恢复时间截止点
                DateTime restoreTime = dateTime;
                int      hour        = dateTime.Hour;
                response.IsRestoreStamina = true;
                //恢复时间截止1点
                if (hour >= staminaStartStopHour && hour < staminaEndStopHour)
                {
                    restoreTime = dateTime.Date.AddHours(staminaStartStopHour);
                    response.IsRestoreStamina = false;
                }
                if (arenaManagerInfo == null)
                {
                    response.Stamina    = CacheFactory.ArenaCache.ArenaMaxStamina;
                    response.MaxStamina = CacheFactory.ArenaCache.ArenaMaxStamina;
                    return(response);
                }
                var vipLevel = 0;
                var manager  = ManagerCore.Instance.GetManager(arenaManagerInfo.ManagerId, arenaManagerInfo.SiteId);
                if (manager != null)
                {
                    vipLevel = manager.VipLevel;
                }
                //获取多少秒恢复1点体力
                var restoreTimes   = CacheFactory.ArenaCache.StaminaRestoreTime(vipLevel);
                var presentStamina = arenaManagerInfo.Stamina;
                response.Stamina      = presentStamina;
                response.MaxStamina   = arenaManagerInfo.MaxStamina;
                response.Stamina      = arenaManagerInfo.Stamina;
                response.RestoreTimes = restoreTimes;
                if (arenaManagerInfo.Stamina >= arenaManagerInfo.MaxStamina)
                {
                    return(response);
                }

                //每天8点恢复所有体力
                if (hour >= staminaEndStopHour && arenaManagerInfo.StaminaRestoreTime < DateTime.Now.Date.AddHours(staminaEndStopHour))
                {
                    arenaManagerInfo.StaminaRestoreTime = DateTime.Now.AddDays(-1);
                }
                //上次恢复体力距离现在时间
                var lastTime = (int)restoreTime.Subtract(arenaManagerInfo.StaminaRestoreTime).TotalSeconds;
                if (lastTime <= 0)
                {
                    return(response);
                }
                //恢复多少体力
                var stamina = lastTime / restoreTimes;
                if (stamina <= 0)
                {
                    response.NextRestoreStaminaTick =
                        ShareUtil.GetTimeTick(arenaManagerInfo.StaminaRestoreTime.AddSeconds(restoreTimes));
                    return(response);
                }
                arenaManagerInfo.Stamina += stamina;
                if (arenaManagerInfo.Stamina > arenaManagerInfo.MaxStamina)
                {
                    arenaManagerInfo.Stamina = arenaManagerInfo.MaxStamina;
                }
                presentStamina = arenaManagerInfo.Stamina;
                arenaManagerInfo.StaminaRestoreTime = dateTime;
                if (arenaManagerInfo.Stamina < arenaManagerInfo.MaxStamina)
                {
                    //恢复体力后多出来的秒数
                    var surplusTime = lastTime % restoreTimes;
                    arenaManagerInfo.StaminaRestoreTime = dateTime.AddSeconds(-surplusTime);
                    //下次恢复时间
                    response.NextRestoreStaminaTick =
                        ShareUtil.GetTimeTick(arenaManagerInfo.StaminaRestoreTime.AddSeconds(restoreTimes));
                }
                else
                {
                    response.NextRestoreStaminaTick = 0;
                }
                response.Stamina      = presentStamina;
                response.MaxStamina   = arenaManagerInfo.MaxStamina;
                response.Stamina      = arenaManagerInfo.Stamina;
                response.RestoreTimes = restoreTimes;
                if (isUpdate)
                {
                    ArenaManagerinfoMgr.Update(arenaManagerInfo);
                }
            }
            catch (Exception ex)
            {
                SystemlogMgr.Error("体力恢复", ex);
            }
            return(response);
        }
コード例 #29
0
 void UpdateTime(object sender, EventArgs e)
 {
     _serverTime               = _serverTime.AddSeconds(1);
     lblServerTime.Content     = _serverTime.ToString("yyyy-MM-dd HH:mm:ss");
     lblServerTimeTick.Content = ShareUtil.GetTimeTick(_serverTime);
 }
コード例 #30
0
ファイル: TransferThread.cs プロジェクト: cool8868/H5Nball
        /// <summary>
        /// 开始拍卖
        /// </summary>
        /// <param name="managerId"></param>
        /// <param name="zoneName"></param>
        /// <param name="itemId"></param>
        /// <param name="price"></param>
        /// <param name="transferDuration"></param>
        public AuctionItemResponse AuctionItem(Guid managerId, string zoneName, Guid itemId, int price, int transferDuration)
        {
            var response = new AuctionItemResponse();

            response.Data = new AuctionItemEntity();
            try
            {
                DateTime date    = DateTime.Now;
                var      manager = NbManagerMgr.GetById(managerId, zoneName);
                if (manager == null)
                {
                    return(ResponseHelper.Create <AuctionItemResponse>(MessageCode.AdMissManager));
                }
                if (!IsOpen(managerId, zoneName, manager))
                {
                    return(ResponseHelper.Create <AuctionItemResponse>(MessageCode.TransferNotOpen));
                }
                //已经挂牌了多少个
                var number = TransferMainMgr.GetTransferNumber(managerId);
                //最多可以挂牌多少个
                var gambleCountMax = CacheFactory.VipdicCache.GetEffectValue(manager.VipLevel, EnumVipEffect.TransferNumber);
                if (gambleCountMax <= number)
                {
                    return(ResponseHelper.Create <AuctionItemResponse>(MessageCode.TransferNumberMax));
                }
                var package = ItemCore.Instance.GetPackage(managerId, EnumTransactionType.Transfer, zoneName);
                if (package == null)
                {
                    return(ResponseHelper.Create <AuctionItemResponse>(MessageCode.NbNoPackage));
                }

                if (price < 2)
                {
                    return(ResponseHelper.Create <AuctionItemResponse>(MessageCode.StartPriceSmall));
                }
                var item = package.GetItem(itemId);
                if (item == null)
                {
                    return(ResponseHelper.Create <AuctionItemResponse>(MessageCode.ItemNotExists));
                }
                if (!item.IsDeal)
                {
                    return(ResponseHelper.Create <AuctionItemResponse>(MessageCode.NotDeal));
                }
                var strength = item.GetStrength();
                if (strength > 1)
                {
                    return(ResponseHelper.Create <AuctionItemResponse>(MessageCode.NotDeal));
                }
                var iteminfo = CacheFactory.ItemsdicCache.GetItem(item.ItemCode);
                if (iteminfo == null)
                {
                    return(ResponseHelper.Create <AuctionItemResponse>(MessageCode.ItemNotExists));
                }
                //默认86400秒  24小时
                TransferMainEntity entity = new TransferMainEntity(ShareUtil.GenerateComb(), _domainId, item.ItemCode, iteminfo.ItemName,
                                                                   new byte[0], manager.Name, managerId, zoneName, price, "",
                                                                   "", 0, Guid.Empty, date, date.AddDays(1), 0, 0, 0, date, date);

                var messageCode = package.Delete(itemId);
                if (messageCode != MessageCode.Success)
                {
                    return(ResponseHelper.Create <AuctionItemResponse>(messageCode));
                }
                if (!package.Save())
                {
                    return(ResponseHelper.Create <AuctionItemResponse>(MessageCode.NbUpdateFail));
                }
                if (!TransferMainMgr.Insert(entity))
                {
                    messageCode = package.AddItem(item.ItemCode);
                    if (messageCode != MessageCode.Success)
                    {
                        SystemlogMgr.Error("拍卖返还物品失败",
                                           "拍卖返还物品失败,managerId:" + managerId + ",zoneName:" + zoneName + "物品ID:" + item.ItemCode);
                    }
                    return(ResponseHelper.Create <AuctionItemResponse>(MessageCode.NbUpdateFail));
                }
                package.Shadow.Save();
                entity.TransferDurationTick = ShareUtil.GetTimeTick(entity.TransferDuration);
                entity.TransferDurationTick = ShareUtil.GetTimeTick(entity.TransferDuration);
                var modId = ShareUtil.GetTableMod(entity.TransferId);
                entity.ModId = modId;
                _tenTransferList.Add(entity);
                Sort();
                response.Data.MyTransferList     = GetMyTransfer(managerId);
                response.Data.MaxTransferNumber  = gambleCountMax;
                response.Data.HaveTransferNumber = number + 1;
                var goldBarEntity = ScoutingGoldbarMgr.GetById(managerId, zoneName);
                if (goldBarEntity != null)
                {
                    response.Data.MyGoldBar = goldBarEntity.GoldBarNumber;
                }
            }
            catch (Exception ex)
            {
                SystemlogMgr.Error("开始拍卖", ex);
                response.Code = (int)MessageCode.NbParameterError;
            }
            return(response);
        }