private void GivePrize(List <GameRankInfoModel> rankList) { //1.遍历排行榜 调用接口发放奖品 using (var client = new GameClient()) { foreach (var item in rankList) { try { var lootRequest = new GameUserLootRequest() { UserId = item.UserID, PrizeId = item.Rank, GameVersion = GameVersionEnum.BUMBLEBEE, }; var userLootResult = client.GameUserLoot(lootRequest); if (!userLootResult.Success) { Logger.Warn($"GameGivePrizeJob => GameUserLoot失败,:{JsonConvert.SerializeObject(item)},ErrorMessage:{userLootResult.ErrorMessage} "); } //等待 Thread.Sleep(50); } catch (Exception ex) { Logger.Error($"GameGivePrizeJob => GameUserLoot异常,:{JsonConvert.SerializeObject(item)}, ", ex); } } } }
/// <summary> /// 用户领取奖品 /// </summary> /// <param name="request"></param> /// <returns></returns> public static async Task <OperationResult <GameUserLootResponse> > GameUserLootAsync(GameUserLootRequest request) { try { var manager = GameManagerFactory.GetGameManager(request.GameVersion); if (manager == null) { // 未实现 return(OperationResult.FromError <GameUserLootResponse>("-3", Resource.Invalid_Game_NotImpl)); } var result = await manager.GameUserLootAsync(request); if (string.IsNullOrWhiteSpace(result.errCode) && result.response != null) { return(OperationResult.FromResult(result.response)); } return(OperationResult.FromError <GameUserLootResponse>(result.errCode, result.errMsg)); } catch (NotImplementedException e) { // 未实现 return(OperationResult.FromError <GameUserLootResponse>("-3", Resource.Invalid_Game_NotImpl)); } }
/// <summary> /// 用户兑换奖品 /// </summary> /// <param name="request"></param> /// <returns></returns> public abstract Task <(string errCode, string errMsg, GameUserLootResponse response)> GameUserLootAsync( GameUserLootRequest request);
/// <summary> /// 用户领取奖品 /// -1 -2 程序异常 /// -9 非法提交 /// -10 没有奖品了 /// -15 奖品异常 /// -20 不足以兑换奖品 /// -30 配置异常 /// -40 用户信息异常 /// -45 您的积分不足 /// -50 发放奖品失败 /// -60 已领取过 /// -90 活动尚未开始或者活动已经结束 /// </summary> /// <param name="request"></param> /// <returns></returns> public async Task <OperationResult <GameUserLootResponse> > GameUserLootAsync(GameUserLootRequest request) { return(await GameManager.GameUserLootAsync(request)); }