/// <summary> /// /// </summary> /// <param name="destMobile"></param> /// <param name="codeType">0-注册验证码</param> /// <returns>0-发送成功 1-1分钟内不能重复发送 2-今日发送达到上限 3-发送失败</returns> public int SendVerifyCode(string destMobile, int codeType) { string code = RandomUtil.GenerateVerfiyCode(); SmsVerifyCode smsVerifyCode = DataBase.Get <SmsVerifyCode>(e => e.Mobile == destMobile && e.CodeType == codeType); if (smsVerifyCode != null) { //判断有没有连续发送 bool isSendTooFast = IsSendTooFast(smsVerifyCode); if (isSendTooFast) { return(1); } //判断今天是否已经达到发送上限 bool isOverLimited = IsSendVerifyCodeLimited(smsVerifyCode); if (isOverLimited) { return(2); } string nowCurrentData = DateTime.Now.ToString("yyyy-MM-dd"); if (nowCurrentData == smsVerifyCode.CurrentDate) { smsVerifyCode.SendAmount += 1; } else { smsVerifyCode.SendAmount = 1; smsVerifyCode.CurrentDate = nowCurrentData; } smsVerifyCode.Code = code; smsVerifyCode.IsUsed = false; smsVerifyCode.UpdateDate = DateTime.Now; smsVerifyCode.TimeOut = DateUtility.ConvertDateTimeLong(DateTime.UtcNow.AddSeconds(MiddleTier.BusinessConfig.VerifyCodeTimeOut)); smsVerifyCode.NextSendTime = DateUtility.ConvertDateTimeLong(DateTime.UtcNow.AddSeconds(MiddleTier.BusinessConfig.VerifyCodeSendInterval)); DataBase.Update <SmsVerifyCode>(smsVerifyCode); } else { smsVerifyCode = new SmsVerifyCode(); smsVerifyCode.Code = code; smsVerifyCode.Mobile = destMobile; smsVerifyCode.CodeType = codeType; smsVerifyCode.CreateDate = DateTime.Now; smsVerifyCode.CurrentDate = DateTime.Now.ToString("yyyy-MM-dd"); smsVerifyCode.IsUsed = false; smsVerifyCode.SendAmount = 1; smsVerifyCode.TimeOut = DateUtility.ConvertDateTimeLong(DateTime.UtcNow.AddSeconds(MiddleTier.BusinessConfig.VerifyCodeTimeOut)); smsVerifyCode.NextSendTime = DateUtility.ConvertDateTimeLong(DateTime.UtcNow.AddSeconds(MiddleTier.BusinessConfig.VerifyCodeSendInterval)); smsVerifyCode.UpdateDate = DateTime.Now; DataBase.Save <SmsVerifyCode>(smsVerifyCode); } //提交到短信网关 try { SendSms(destMobile, code); } catch { return(3); } return(0); }