liu
2 天以前 47dd1ecaf0aafa66b9c39fff9c91abc1c611b02c
yudao-module-wxcp/src/main/java/cn/iocoder/yudao/module/wxcp/service/push/WxCpMessagePushServiceImpl.java
@@ -131,6 +131,52 @@
        }
    }
    @Override
    public WxCpPushResultVO pushVideo(java.io.File file, String title, String description,
                                      Integer scope, String target) {
        if (file == null || !file.exists()) {
            return new WxCpPushResultVO(false, null, "视频文件不存在,无法推送", null, null);
        }
        try {
            // 企业微信视频消息要求先用 video 类型上传换取 mediaId
            WxMediaUploadResult upload = wxCpService.getMediaService().upload("video", file);
            if (upload == null || StrUtil.isBlank(upload.getMediaId())) {
                return new WxCpPushResultVO(false, null, "视频上传企业微信失败", null, null);
            }
            WxCpMessage message = WxCpMessage.VIDEO()
                    .agentId(agentId())
                    .mediaId(upload.getMediaId())
                    .title(StrUtil.blankToDefault(title, "通知视频"))
                    .description(StrUtil.blankToDefault(description, ""))
                    .build();
            return doSend(message, scope, target, "video");
        } catch (Exception e) {
            log.error("[pushVideo][视频上传或推送异常 file={}]", file.getName(), e);
            return new WxCpPushResultVO(false, null, "视频推送异常:" + e.getMessage(), null, null);
        }
    }
    @Override
    public WxCpPushResultVO pushMarkdown(String content, Integer scope, String target) {
        WxCpMessage message = WxCpMessage.MARKDOWN()
                .agentId(agentId())
                .content(content)
                .build();
        return doSend(message, scope, target, "markdown");
    }
    @Override
    public WxCpPushResultVO pushMultiNews(java.util.List<NewArticle> articles, Integer scope, String target) {
        if (articles == null || articles.isEmpty()) {
            return new WxCpPushResultVO(false, null, "图文内容为空,无法推送", null, null);
        }
        WxCpMessage message = WxCpMessage.NEWS()
                .agentId(agentId())
                .articles(articles)
                .build();
        return doSend(message, scope, target, "multi_news");
    }
    /**
     * 统一处理接收者解析、发送与错误包装
     */