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