public async Task <GameResponesViewModel <GameViewModel> > GamePrize([FromBody] GameRequestViweModel obj) { GameResponesViewModel <GameViewModel> response = null; GameViewModel result = new GameViewModel(); obj = JsonHelper.DeserializeJsonToObject <GameRequestViweModel>(Content(User.Identity.Name).Content); var sysCode = SysCode.Ok; GameLogDto gameLog = new GameLogDto() { Amount = decimal.Parse((string)obj.data.amount), Createtime = DateTime.Now, Description = (string)obj.data.description, Game_key = (string)obj.data.gameKey, Game_setId = (string)obj.data.gameSetId, Operate_time = (string)obj.data.operateTime, Order_id = (string)obj.data.orderId, Types = 2, User_id = long.Parse((string)obj.data.userId) }; result.amount = double.Parse(gameLog.Amount.ToString()); if (!await _game.RecordGameLog(gameLog)) { sysCode = SysCode.Err; } response = new GameResponesViewModel <GameViewModel>(sysCode, sysCode == SysCode.Ok ? result : null, _sys, obj.appKey, obj.requestId, obj.nonce); return(response); }
/// <summary> /// Ons the action executing. /// </summary> /// <param name="context">Filter context.</param> public override void OnActionExecuting(ActionExecutingContext context) { GameRequestViweModel request = null; var _sys = context.HttpContext.RequestServices.GetService <ISystems>(); string sign = string.Empty; //本地签名信息 var route = context.RouteData.Values; var controller = route["controller"]; var action = route["action"]; try { context.HttpContext.Request.Body.Seek(0, SeekOrigin.Begin); using (var sr = new StreamReader(context.HttpContext.Request.Body)) { request = JsonHelper.DeserializeJsonToObject <GameRequestViweModel>(sr.ReadToEnd()); } } catch (Exception ex) { //缺少公共参数 GameResponesViewModel <Object> response = new GameResponesViewModel <object>(SysCode.LackParameter, null, _sys, "", "", ""); context.Result = new JsonResult(response); return; } if (string.IsNullOrEmpty(request.appKey) || string.IsNullOrEmpty(request.sign) || string.IsNullOrEmpty(request.requestId) || string.IsNullOrEmpty(request.timestamp) || string.IsNullOrEmpty(request.nonce) || string.IsNullOrEmpty(request.signType) ) { //公共参数必填项为空 GameResponesViewModel <Object> response = new GameResponesViewModel <object>(SysCode.EmptyParameter, null, _sys, "", "", ""); context.Result = new JsonResult(response); return; } long time = 0; try { time = long.Parse(request.timestamp); time = TimeHelper.ConvertDateTimeToInt(DateTime.Now) - time; if (time > 1200) { //非法时间戳 GameResponesViewModel <Object> response = new GameResponesViewModel <object>(SysCode.TimestampErr, null, _sys, "", "", ""); context.Result = new JsonResult(response); return; } } catch (Exception) { //非法时间戳 GameResponesViewModel <Object> response = new GameResponesViewModel <object>(SysCode.TimestampErr, null, _sys, request.appKey, request.requestId, request.nonce); context.Result = new JsonResult(response); return; } var appConfigDto = _sys.GetAppConfig(request.appKey); if (appConfigDto == null) { //无效appkey GameResponesViewModel <Object> response = new GameResponesViewModel <object>(SysCode.AppKey, null, _sys, request.appKey, request.requestId, request.nonce); context.Result = new JsonResult(response); return; } sign = _sys.Sha512Encode($"{appConfigDto.Keys}{appConfigDto.Secret}{request.data}{request.nonce}{request.timestamp}"); if (!request.sign.Equals(sign)) { //签名验证失败 GameResponesViewModel <Object> response = new GameResponesViewModel <object>(SysCode.SignCheckErr, null, _sys, request.appKey, request.requestId, request.nonce); context.Result = new JsonResult(response); return; } if (!string.IsNullOrEmpty((string)request.data) && request.data != null) { (string json, var code) = _sys.Base64Decode(Encoding.UTF8, (string)request.data); if (code != SysCode.Ok) { //base64解码失败 GameResponesViewModel <Object> response = new GameResponesViewModel <object>(SysCode.Base64DecodeErr, null, _sys, request.appKey, request.requestId, request.nonce); context.Result = new JsonResult(response); return; } else { request.data = JsonHelper.DeserializeJsonToObject <dynamic>(json); } } var claimsIdentity = new ClaimsIdentity(new Claim[] { new Claim(ClaimTypes.Name, JsonHelper.SerializeObject(request)), }, "Basic"); var claimsPrincipal = new ClaimsPrincipal(claimsIdentity); context.HttpContext.User = claimsPrincipal; if (true) { GameResponesViewModel <Object> response = new GameResponesViewModel <object> (_sys.CheckParameters(request.data, action.ToString()), null, _sys, request.appKey, request.requestId, request.nonce); if (response.code != 0) { context.Result = new JsonResult(response); return; } } }