public async Task <ResponseMessage> LotteryBet(Models.UserInfo user, [FromBody] LotteryBetRequest request) { Logger.Trace($"彩票开始开奖"); var response = new ResponseMessage(); if (!ModelState.IsValid) { response.Code = ResponseCodeDefines.ModelStateInvalid; response.Message = "模型验证失败" + ModelState.GetAllErrors(); Logger.Warn("彩票投注型验证失败:\r\n{0}", response.Message ?? ""); return(response); } var prefixs = new string[] { "lottery" }; var key = "lottery"; try { // 防止同时重复提交 await _cache.LockSubmit(prefixs, key, "lottery", HttpContext.RequestAborted); response = await _giftManager.LotteryBetAsync(user, request, HttpContext.RequestAborted); if (response.Code != ResponseCodeDefines.SuccessCode) { Logger.Warn($"彩票投注,失败:{JsonHelper.ToJson(response)}"); } } catch (Exception e) { response.Code = ResponseCodeDefines.ServiceError; response.Message = e.Message; Logger.Error($"彩票投注,报错:{e.Message}\r\n{e.StackTrace}"); } finally { // 成功失败都要移除 await _cache.UnlockSubmit(prefixs, key); } return(response); }