public string SendValidationCode(string mobile, string category, string validateCode, int delaySeconds, int maxTimesEachDay)
        {
            using (var biz = new ValidationMobileBusinessManagement())
            {
                biz.BeginTran();
                using (var manager = new MobileValidationManager())
                {
                    var validation = manager.GetMobileValidation(mobile, category);
                    if (validation != null)
                    {
                        if (DateTime.Today == validation.UpdateTime.Date)
                        {
                            if (validation.SendTimes >= maxTimesEachDay)
                            {
                                throw new Exception(string.Format("今天已发送每天允许的最大限制次数【{0}】次,请明天再试。", maxTimesEachDay));
                            }
                        }
                        var span = validation.UpdateTime.AddSeconds(delaySeconds) - DateTime.Now;
                        if (span.TotalSeconds > 0)
                        {
                            throw new Exception(string.Format("发送短信验证码与上次验证码操作至少间隔【{0}】秒,请稍等【{1}】秒后重试。", delaySeconds, (int)span.TotalSeconds + 1));
                        }
                        validation.SendTimes++;
                        validation.RetryTimes = 0;
                        validation.UpdateTime = DateTime.Now;
                        manager.UpdateMobileValidation(validation);

                        validateCode = validation.ValidateCode;
                    }
                    else
                    {
                        validation = new MobileValidation
                        {
                            Mobile       = mobile,
                            Category     = category,
                            SendTimes    = 1,
                            RetryTimes   = 0,
                            ValidateCode = validateCode,
                        };
                        manager.AddMobileValidation(validation);
                    }
                }
                biz.CommitTran();
            }
            return(validateCode);
        }
 public void UpdateMobileValidation(MobileValidation validation)
 {
     validation.UpdateTime = DateTime.Now;
     Update <MobileValidation>(validation);
 }
 public void DeleteMobileValidation(MobileValidation validation)
 {
     Delete <MobileValidation>(validation);
 }
 public void AddMobileValidation(MobileValidation validation)
 {
     validation.UpdateTime = DateTime.Now;
     Add <MobileValidation>(validation);
 }