package com.qianwen.core.notify.provider.sms.yunpian; import java.util.List; import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.qianwen.core.log.exception.BizServiceException; import com.qianwen.core.notify.DefaultNotifyType; import com.qianwen.core.notify.NotifyType; import com.qianwen.core.notify.Provider; import com.qianwen.core.notify.notifier.AbstractNotifier; import com.qianwen.core.notify.notifier.NotifierProperties; import com.qianwen.core.notify.provider.sms.SmsProvider; import com.qianwen.core.notify.template.TemplateManager; import com.qianwen.core.tool.api.BizMessage; import com.qianwen.core.tool.metadata.Values; import com.qianwen.core.tool.support.Kv; import com.qianwen.core.tool.utils.PlaceholderUtil; import com.qianwen.core.tool.utils.StringUtil; import com.yunpian.sdk.YunpianClient; import com.yunpian.sdk.model.Result; import com.yunpian.sdk.model.SmsBatchSend; public class YunpianSmsNotifier extends AbstractNotifier { private static final Logger log = LoggerFactory.getLogger(YunpianSmsNotifier.class); private final YunpianClient client; private NotifierProperties notifierProperties; private String notifierId; @Override // com.qianwen.core.notify.notifier.Notifier public NotifierProperties getNotifierProperties() { return this.notifierProperties; } @Override // com.qianwen.core.notify.notifier.Notifier public String getNotifierId() { return this.notifierId; } public YunpianSmsNotifier(NotifierProperties profile, TemplateManager templateManager) { super(templateManager); Map config = profile.getConfiguration(); String appKey = (String) config.getOrDefault("apikey", ""); this.client = new YunpianClient(appKey).init(); this.notifierId = profile.getId(); this.notifierProperties = profile; } @Override // com.qianwen.core.notify.notifier.Notifier public NotifyType getType() { return DefaultNotifyType.sms; } @Override // com.qianwen.core.notify.notifier.Notifier public Provider getProvider() { return SmsProvider.yunpianSms; } public void send(YunpianSmsTemplate template, String traceId, Values context, List notifiedParty) { String templateText = PlaceholderUtil.getResolver("#", "#").resolveByMap(template.getText(), Kv.create().setAll(context.getAllValues())); Map param = this.client.newParam(2); param.put("mobile", StringUtil.join(notifiedParty)); param.put("text", templateText); Result result = this.client.sms().batch_send(param); if (result.getCode().intValue() != 0) { BizMessage bizMessage = new BizMessage(); bizMessage.setMessage(result.getMsg()); bizMessage.setDetail(result.getMsg()); throw new BizServiceException(bizMessage); } } @Override // com.qianwen.core.notify.notifier.Notifier public void close() { this.client.close(); } }