package com.qianwen.smartman.modules.notify.controller;
|
|
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiParam;
|
import java.util.Arrays;
|
import java.util.HashMap;
|
import java.util.Map;
|
import java.util.Optional;
|
import com.qianwen.core.boot.ctrl.BladeController;
|
import com.qianwen.core.log.exception.ServiceException;
|
import com.qianwen.core.log.utils.LogTraceUtil;
|
import com.qianwen.core.notify.DefaultNotifyType;
|
import com.qianwen.core.notify.notifier.Notifier;
|
import com.qianwen.core.notify.notifier.NotifierManager;
|
import com.qianwen.core.notify.template.Template;
|
import com.qianwen.core.notify.template.TemplateManager;
|
import com.qianwen.core.scanner.modular.annotation.PostResource;
|
import com.qianwen.core.scanner.modular.stereotype.ApiResource;
|
import com.qianwen.core.tool.api.R;
|
import com.qianwen.core.tool.metadata.Values;
|
import com.qianwen.core.tool.utils.Func;
|
import com.qianwen.smartman.modules.notify.api.DingTalkApi;
|
import com.qianwen.smartman.modules.notify.dto.SendNotifyRequest;
|
import com.qianwen.smartman.modules.notify.entity.NotifyTemplateEntity;
|
import org.springframework.web.bind.annotation.PathVariable;
|
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RestController;
|
|
@ApiResource({"blade-notify/notifier"})
|
@Api(value = "通知在线调试", tags = {"通知在线调试"})
|
@RestController
|
/* loaded from: blade-api.jar:BOOT-INF/classes/org/springblade/modules/notify/controller/NotifierController.class */
|
public class NotifierController extends BladeController {
|
private final NotifierManager notifierManager;
|
private final TemplateManager templateManager;
|
private final DingTalkApi dingTalkApi;
|
|
public NotifierController(final NotifierManager notifierManager, final TemplateManager templateManager, final DingTalkApi dingTalkApi) {
|
this.notifierManager = notifierManager;
|
this.templateManager = templateManager;
|
this.dingTalkApi = dingTalkApi;
|
}
|
|
@ApiOperationSupport(order = 1)
|
@PostResource({"/{notifierId}/send"})
|
@ApiOperation("发送消息通知")
|
public R<String> sendNotify(@PathVariable("notifierId") @ApiParam(value = "通知配置ID", required = true) String notifierId, @RequestBody SendNotifyRequest mono) {
|
NotifyTemplateEntity relatedTemplate = new NotifyTemplateEntity();
|
relatedTemplate.setType(mono.getType());
|
relatedTemplate.setTemplate(mono.getTemplate());
|
relatedTemplate.setProvider(mono.getProvider());
|
if (Func.equals(mono.getType(), DefaultNotifyType.dingTalk.name())) {
|
String userId = this.dingTalkApi.getUserIdByMobile(mono.getNotifiedParty());
|
mono.setNotifiedParty(userId);
|
}
|
DefaultNotifyType valueOf = DefaultNotifyType.valueOf(relatedTemplate.getType());
|
try {
|
Notifier notifier = (Notifier) Optional.ofNullable(this.notifierManager.getNotifier(valueOf, notifierId)).orElseThrow(() -> {
|
return new ServiceException("通知器[" + notifierId + "]不存在");
|
});
|
Template template = this.templateManager.createTemplate(valueOf, relatedTemplate.toTemplateProperties());
|
Map context = new HashMap();
|
if (Func.isNotEmpty(mono.getNotifiedParty())) {
|
notifier.send(template, LogTraceUtil.getTraceId(), Values.of(context), Arrays.asList(mono.getNotifiedParty().split(",")));
|
}
|
return R.success("");
|
} catch (NullPointerException e) {
|
return R.fail("通知器[" + notifierId + "]不存在");
|
}
|
}
|
}
|