Esempio n. 1
0
        /// <summary>
        ///     用户分享
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public static async Task <OperationResult <GameUserShareResponse> > GameUserShareAsync(
            GameUserShareRequest request)
        {
            try
            {
                var manager = GameManagerFactory.GetGameManager(request.GameVersion);
                if (manager == null)
                {
                    // 未实现
                    return(OperationResult.FromError <GameUserShareResponse>("-3", Resource.Invalid_Game_NotImpl));
                }

                var result = await manager.GameUserShareAsync(request);

                if (string.IsNullOrWhiteSpace(result.errCode) && result.response != null)
                {
                    return(OperationResult.FromResult(result.response));
                }

                return(OperationResult.FromError <GameUserShareResponse>(result.errCode, result.errMsg));
            }
            catch (NotImplementedException e)
            {
                // 未实现
                return(OperationResult.FromError <GameUserShareResponse>("-3", Resource.Invalid_Game_NotImpl));
            }
        }
        GameUserShareAsync(
            GameUserShareRequest request)
        {
            try
            {
                var gameVersion = GameVersion;
                var userId      = request.UserId;
                // 分布式锁
                using (var zklock =
                           new ZooKeeperLock($"/DefaultGameManager/GameUserShareAsync/{gameVersion}/{userId:N}"))
                {
                    if (await zklock.WaitAsync(5000)) //如果锁释放 会立即执行,正常逻辑不会等待5秒钟
                    {
                        var l = await DalGameUserShare.InsertGameUserShareAsync(new GameUserShareModel
                        {
                            ActivityId = gameVersion,
                            UserId     = userId
                        });

                        if (l > 0)
                        {
                            return(null, null, new GameUserShareResponse()
                            {
                            });
                        }

                        return("-10", Resource.Invalid_Game_AlreadyShare, null);
                    }

                    return("-6", Resource.Invalid_Game_TryAgain, null);
                }
            }
            catch (Exception e)
            {
                Logger.Error($"{ManagerName} -> GameUserShareAsync -> {JsonConvert.SerializeObject(request)} ",
                             e.InnerException ?? e);
                throw;
            }
        }
Esempio n. 3
0
 /// <summary>
 ///     用户分享
 ///     -1 -2   程序异常
 ///     -3      此游戏未实现
 ///     -6      获取锁失败
 ///     -10     今天已经分享
 ///     -30     配置异常
 ///     -40     用户信息异常
 ///     -90     活动尚未开始或者活动已经结束
 /// </summary>
 /// <param name="request"></param>
 /// <returns></returns>
 public async Task <OperationResult <GameUserShareResponse> > GameUserShareAsync(GameUserShareRequest request)
 {
     return(await GameManager.GameUserShareAsync(request));
 }