public async Task <IHttpActionResult> SendSmSCode([FromBody] SendSMSCodeViewModel sendSmsCode) { JsonResult <string> result = new JsonResult <string>(); result.code = 1; result.msg = "OK"; if (sendSmsCode == null) { result.code = 0; result.msg = "参数错误"; return(Ok(result)); } string requestTimeskey = "AccountController.SendSmSCode"; double times = RedisBase.SortedSet_ZSCORE <string>(requestTimeskey, sendSmsCode.token); //if (times > 0) //{ // result.code = 0; // result.msg = "验证码已失效"; // return Ok(result); //} if (string.IsNullOrEmpty(sendSmsCode.token) || !RedisBase.ContainsKey(sendSmsCode.token)) { result.code = 0; result.msg = "验证码已过期"; return(Ok(result)); } if (sendSmsCode.type == 0 && !sendSmsCode.tel.IsMobile()) { result.code = 0; result.msg = "invalid tel"; return(Ok(result)); } await Task.Run(() => { RedisBase.SortedSet_Zincrby <string>(requestTimeskey, sendSmsCode.token, 1); RedisBase.SortedSet_SetExpire(requestTimeskey, DateTime.Now.AddMinutes(10)); VerCodePic codepic = RedisBase.Item_Get <VerCodePic>(sendSmsCode.token); if (Math.Abs(codepic.Font1.X - sendSmsCode.x1) > 0.5 || Math.Abs(codepic.Font1.Y - sendSmsCode.y1) > 0.5 || Math.Abs(codepic.Font2.X - sendSmsCode.x2) > 0.5 || Math.Abs(codepic.Font2.Y - sendSmsCode.y2) > 0.5 || Math.Abs(codepic.Font3.X - sendSmsCode.x3) > 0.5 || Math.Abs(codepic.Font3.Y - sendSmsCode.y3) > 0.5 || Math.Abs(codepic.Font4.X - sendSmsCode.x4) > 0.5 || Math.Abs(codepic.Font4.Y - sendSmsCode.y4) > 0.5) { result.code = 0; result.msg = "验证码错误"; } else { //产生短信验证码 int code = Utils.GetRandom(100000, 999999); string key = cookieKey(); RedisBase.Item_Set(key, code.TryToString()); RedisBase.ExpireEntryAt(key, DateTime.Now.AddMinutes(10)); string tel = sendSmsCode.tel; if (sendSmsCode.type == 1) { tel = RedisBase.Item_Get <string>(sendSmsCode.tel); } bool isSend = Utils.SendSMSVCode(code.TryToString(), tel); if (isSend) { result.Result = key; } else { result.code = 0; result.msg = "发送失败"; } } }); return(Ok(result)); }