package com.qianwen.core.notify.provider.sms.yunpian; import com.alibaba.fastjson.JSON; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.qianwen.core.notify.DefaultNotifyType; import com.qianwen.core.notify.NotifyType; import com.qianwen.core.notify.Provider; import com.qianwen.core.notify.notifier.Notifier; import com.qianwen.core.notify.notifier.NotifierProperties; import com.qianwen.core.notify.notifier.NotifierProvider; import com.qianwen.core.notify.provider.sms.SmsProvider; import com.qianwen.core.notify.template.Template; import com.qianwen.core.notify.template.TemplateManager; import com.qianwen.core.notify.template.TemplateProperties; import com.qianwen.core.notify.template.TemplateProvider; import com.qianwen.core.tool.metadata.ConfigMetadata; import com.qianwen.core.tool.metadata.DefaultConfigMetadata; import com.qianwen.core.tool.metadata.types.StringType; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.stereotype.Component; @ConditionalOnBean({TemplateManager.class}) @Component public class YunpianNotifierProvider implements NotifierProvider, TemplateProvider { private final TemplateManager templateManager; private static final Logger log = LoggerFactory.getLogger(YunpianNotifierProvider.class); public static final DefaultConfigMetadata templateConfig = new DefaultConfigMetadata("云片短信模版", "https://www.yunpian.com/dev-doc").add("text", "模版编码", "", new StringType()); public static final DefaultConfigMetadata notifierConfig = new DefaultConfigMetadata("云片短信API配置", "https://www.yunpian.com/doc/zh_CN/introduction/download.html").add("apikey", "密钥", "", new StringType()); public YunpianNotifierProvider(final TemplateManager templateManager) { this.templateManager = templateManager; } @Override // com.qianwen.core.notify.notifier.NotifierProvider, com.qianwen.core.notify.template.TemplateProvider public NotifyType getType() { return DefaultNotifyType.sms; } @Override // com.qianwen.core.notify.notifier.NotifierProvider, com.qianwen.core.notify.template.TemplateProvider public Provider getProvider() { return SmsProvider.yunpianSms; } @Override // com.qianwen.core.notify.template.TemplateProvider public Template createTemplate(TemplateProperties properties) { return (Template) JSON.parseObject(properties.getTemplate(), YunpianSmsTemplate.class); } @Override // com.qianwen.core.notify.notifier.NotifierProvider public Notifier createNotifier(NotifierProperties notifierProperties) { return new YunpianSmsNotifier(notifierProperties, this.templateManager); } @Override // com.qianwen.core.notify.template.TemplateProvider public ConfigMetadata getTemplateConfigMetadata() { return templateConfig; } @Override // com.qianwen.core.notify.notifier.NotifierProvider public ConfigMetadata getNotifierConfigMetadata() { return notifierConfig; } }