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 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 + "]不存在"); } } }