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));
        }