package com.qianwen.core.notify.provider.dingtalk; import com.alibaba.fastjson.JSON; import javax.annotation.Nonnull; import com.qianwen.core.notify.DefaultNotifyType; import com.qianwen.core.notify.NotifyType; import com.qianwen.core.notify.Provider; import com.qianwen.core.notify.notifier.NotifierProperties; import com.qianwen.core.notify.notifier.NotifierProvider; 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.ConfigMetadataConstants; import com.qianwen.core.tool.metadata.DataType; import com.qianwen.core.tool.metadata.DefaultConfigMetadata; import com.qianwen.core.tool.metadata.config.ConfigKeyValue; import com.qianwen.core.tool.metadata.types.LongType; import com.qianwen.core.tool.metadata.types.StringType; import org.springframework.stereotype.Component; @Component public class DingTalkNotifierProvider implements NotifierProvider, TemplateProvider { private final TemplateManager templateManager; public static final DefaultConfigMetadata notifierConfig = new DefaultConfigMetadata("通知配置", "").add("appKey", "appKey", "", (DataType) new StringType().expand(new ConfigKeyValue[]{ConfigMetadataConstants.required.value(true)})).add("appSecret", "appSecret", "", new StringType()); public static final DefaultConfigMetadata templateConfig = new DefaultConfigMetadata("模版配置", "").add("agentId", "应用ID", "", (DataType) new LongType().expand(new ConfigKeyValue[]{ConfigMetadataConstants.required.value(true)})).add("title", "标题", "消息标题", new StringType()).add("message", "内容", "最大不超过2048字节", (DataType) new StringType().expand(new ConfigKeyValue[]{ConfigMetadataConstants.maxLength.value(2048L), ConfigMetadataConstants.isMarkdown.value(true)})); public DingTalkNotifierProvider(TemplateManager templateManager) { this.templateManager = templateManager; } @Override // com.qianwen.core.notify.notifier.NotifierProvider, com.qianwen.core.notify.template.TemplateProvider @Nonnull public NotifyType getType() { return DefaultNotifyType.dingTalk; } @Override // com.qianwen.core.notify.notifier.NotifierProvider, com.qianwen.core.notify.template.TemplateProvider @Nonnull public Provider getProvider() { return DingTalkProvider.dingTalkMessage; } @Override // com.qianwen.core.notify.template.TemplateProvider public DingTalkMessageTemplate createTemplate(TemplateProperties properties) { return (DingTalkMessageTemplate) JSON.parseObject(properties.getTemplate(), DingTalkMessageTemplate.class); } @Override // com.qianwen.core.notify.notifier.NotifierProvider @Nonnull public DingTalkNotifier createNotifier(@Nonnull NotifierProperties properties) { return new DingTalkNotifier(properties, this.templateManager); } @Override // com.qianwen.core.notify.notifier.NotifierProvider public ConfigMetadata getNotifierConfigMetadata() { return notifierConfig; } @Override // com.qianwen.core.notify.template.TemplateProvider public ConfigMetadata getTemplateConfigMetadata() { return templateConfig; } }