コード例 #1
0
        public static MessageCode CheackReward(Guid managerId, int matchType, Guid matchId)
        {
            if (!ShareUtil.IsAppRXYC)
            {
                return(MessageCode.MatchRewardLimitApp);
            }
            if (!MatchThread.CheckRewardMatchType(matchType))
            {
                return(MessageCode.MatchRewardLimitType);
            }
            string key   = string.Concat(managerId, ".", matchType).ToLower();
            var    state = MemcachedFactory.MatchRewardClient.Get <DTOMatchRewardState>(key);

            if (null == state || state.MatchId != matchId)
            {
                return(MessageCode.MatchRewardMissMatch);
            }
            if (state.GetTimes == MATCHRewardMaxGetTimes - 1)
            {
                MemcachedFactory.MatchRewardClient.Delete(key);
            }
            else
            {
                state.GetTimes++;
                MemcachedFactory.MatchRewardClient.Set(key, state);
            }
            return(MessageCode.Success);
        }
コード例 #2
0
        public static RootResponse <DTOAssetInfo> CommitReward(Guid managerId, int matchType, Guid matchId, string mask, string sig)
        {
            if (!ShareUtil.IsAppRXYC)
            {
                return(ResponseHelper.CreateRoot <DTOAssetInfo>(MessageCode.MatchRewardLimitApp));
            }
            if (!MatchThread.CheckRewardMatchType(matchType))
            {
                return(ResponseHelper.CreateRoot <DTOAssetInfo>(MessageCode.MatchRewardLimitType));
            }
            int coin  = 0;
            int point = 0;

            ParseMask(out coin, out point, mask);
            if (coin < 0 || coin > MATCHRewardMaxCoin)
            {
                return(ResponseHelper.CreateRoot <DTOAssetInfo>(MessageCode.MatchRewardOverCoin));
            }
            if (point < 0 || point > MATCHRewardMaxPoint)
            {
                return(ResponseHelper.CreateRoot <DTOAssetInfo>(MessageCode.MatchRewardOverPoint));
            }
            string key   = string.Concat(managerId, ".", matchType).ToLower();
            var    state = MemcachedFactory.MatchRewardClient.Get <DTOMatchRewardState>(key);

            if (null == state || state.MatchId != matchId)
            {
                return(ResponseHelper.CreateRoot <DTOAssetInfo>(MessageCode.MatchRewardMissMatch));
            }
            if (state.SetTimes >= MATCHRewardMaxSetTimes)
            {
                MemcachedFactory.MatchRewardClient.Delete(key);
                return(ResponseHelper.CreateRoot <DTOAssetInfo>(MessageCode.MatchRewardOverSet));
            }
            RootResponse <DTOAssetInfo> rst = null;

            if (coin > 0 || point > 0)
            {
                var manager = ManagerCore.Instance.GetManager(managerId);
                if (null == manager)
                {
                    return(ResponseHelper.CreateRoot <DTOAssetInfo>(MessageCode.MissManager));
                }
                string orderId   = string.Concat(matchType, ".", matchId, ".", state.SetTimes);
                string tranMap   = string.Format("{0}:C{1}P{2}..", orderId, coin, point);
                int    assetType = 0;
                int    tranType  = 0;
                rst = SaveReward(manager, orderId, coin, point, assetType, tranType, tranMap);
            }
            if (state.SetTimes == MATCHRewardMaxSetTimes - 1)
            {
                MemcachedFactory.MatchRewardClient.Delete(key);
            }
            else
            {
                state.SetTimes++;
                state.Coin  = coin;
                state.Point = point;
                MemcachedFactory.MatchRewardClient.Set(key, state);
            }
            if (null == rst)
            {
                rst = ResponseHelper.CreateRoot <DTOAssetInfo>(new DTOAssetInfo());
            }
            return(rst);
        }