yangys
2024-04-04 ed4a5236bab800094be4a8378f5098eebe3de6ac
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
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 + "]不存在");
        }
    }
}