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