package com.qianwen.core.notify.provider.internal.message; 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.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.ConfigMetadataConstants; import com.qianwen.core.tool.metadata.DataType; import com.qianwen.core.tool.metadata.DefaultConfigMetadata; import com.qianwen.core.tool.metadata.SimplePropertyMetadata; import com.qianwen.core.tool.metadata.config.ConfigKeyValue; import com.qianwen.core.tool.metadata.types.ArrayType; import com.qianwen.core.tool.metadata.types.FileType; import com.qianwen.core.tool.metadata.types.ObjectType; 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 DefaultInternalMessageProvider implements NotifierProvider, TemplateProvider { private final TemplateManager templateManager; public static final DefaultConfigMetadata templateConfig; private static final Logger log = LoggerFactory.getLogger(DefaultInternalMessageProvider.class); public static final DefaultConfigMetadata notifierConfig = null; static { SimplePropertyMetadata name = new SimplePropertyMetadata(); name.setId("name"); name.setName("文件名"); name.setValueType(new StringType()); SimplePropertyMetadata location = new SimplePropertyMetadata(); location.setId("location"); location.setName("文件地址"); location.setValueType((DataType) new FileType().bodyType(FileType.BodyType.url).expand(new ConfigKeyValue[]{ConfigMetadataConstants.allowInput.value(true)})); templateConfig = new DefaultConfigMetadata("站内信模版", "").add("subject", "标题", "标题,可使用变量", (DataType) new StringType().expand(new ConfigKeyValue[]{ConfigMetadataConstants.maxLength.value(255L)})).add("content", "内容", "", (DataType) new StringType().expand(new ConfigKeyValue[]{ConfigMetadataConstants.maxLength.value(5120L), ConfigMetadataConstants.isRichText.value(true)})).add("attachments", "附件列表", "", new ArrayType().elementType(new ObjectType().addPropertyMetadata(name).addPropertyMetadata(location))); } public DefaultInternalMessageProvider(final TemplateManager templateManager) { this.templateManager = templateManager; } @Override // com.qianwen.core.notify.notifier.NotifierProvider, com.qianwen.core.notify.template.TemplateProvider public NotifyType getType() { return DefaultNotifyType.internalMessage; } @Override // com.qianwen.core.notify.notifier.NotifierProvider, com.qianwen.core.notify.template.TemplateProvider public Provider getProvider() { return InternalMessageProvider.systemDefault; } @Override // com.qianwen.core.notify.template.TemplateProvider public Template createTemplate(TemplateProperties properties) { return (Template) JSON.parseObject(properties.getTemplate(), DefaultInternalMessageTemplate.class); } @Override // com.qianwen.core.notify.notifier.NotifierProvider public Notifier createNotifier(NotifierProperties notifierProperties) { return new DefaultInternalMessageNotifier(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; } }