public Task <string> RequiredCode(string channel, string type) { var provider = GetSecurityCodeProvider(type); var record = GetCurrentCode(channel, type); if (record == null) { //不存在,生成 record = new SecurityCodeRecord(); record.Channel = channel; record.Code = GenerateCodeHelper.GetRandomDigital(provider.GetLenth()); record.CodeType = type; record.CreateOn = DateTime.Now; record.ExpireTime = provider.GetExpireTime(); record.ServiceProvider = _smsChannel.GetSMSProvider(); record.IsValid = false; _repository.CreateRecord(record); _repository.Flush(); } else { //存在,更新过期时间 record.ExpireTime = provider.GetExpireTime(); _repository.UpdateRecord(record); _repository.Flush(); } return(Task.FromResult(record.Code)); }