签入版本

This commit is contained in:
2026-09-28 18:51:35 +08:00
commit ab0f064ea6
2692 changed files with 354751 additions and 0 deletions
+28
View File
@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.xiaomayi</groupId>
<artifactId>xiaomayi-common</artifactId>
<version>${revision}</version>
</parent>
<artifactId>xiaomayi-dingtalk</artifactId>
<!-- 依赖声明 -->
<dependencies>
<!-- 核心依赖模块 -->
<dependency>
<groupId>com.xiaomayi</groupId>
<artifactId>xiaomayi-core</artifactId>
</dependency>
<!-- dingtalk钉钉模块 -->
<dependency>
<groupId>cn.snowheart</groupId>
<artifactId>spring-boot-dingtalk-robot-starter</artifactId>
</dependency>
</dependencies>
</project>
@@ -0,0 +1,101 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型,构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值:赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 【知识产权声明】
// | 1. 权属声明:本软件是受《中华人民共和国著作权法》
// | 保护的专有财产,完整版权归小蚂蚁云团队所有
// | 2. 权利范围:所有知识产权(商标、专利、著作权、
// | 商业秘密等)均归小蚂蚁云团队所有,受法律保护
// | 3. 授权性质:用户仅可获得有限的、非独占的使用许可
// | 4. 禁止行为:未经书面授权,禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留:未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 【授权状态说明】
// | 1. 未授权状态:用户未购买有效的商业许可证
// | 2. 商业授权:已购买正式商业许可证的用户
// +======================================================================
// | 【绝对禁止条款】
// | 无论授权状态如何,任何用户均严格禁止以下行为:
// | 1. 逆向工程:对软件进行反编译、反汇编、技术破解或任何形式的逆向分析
// | 2. 版权破坏:移除、修改、遮挡软件中的版权标识、许可控制或技术保护措施
// | 3. 非法传播:复制、分发、出租、出借、转售、再许可本软件或其许可权利
// | 4. 竞争性使用:利用本软件的代码、架构、设计开发直接竞争的产品或服务
// | 5. 侵权使用:将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 【商业授权许可范围】
// | 购买有效商业许可证的用户,在遵守上述禁止条款的前提下,获得:
// | 1. 使用权利:在许可证约定的项目数量、开发者数量范围内使用本软件
// | 2. 技术支持:商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新:在许可证有效期内获取软件更新、安全补丁和功能增强
// | 4. 商业部署:将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 【许可证获取】
// | 1. 获取途径:仅通过小蚂蚁云官方渠道购买(官网、授权代理商),购买记录凭证
// | 2. 转让限制:许可证与购买主体绑定,未经书面同意不得转让
// | 3. 终止情形:许可证到期、违反协议、破产清算等情况下自动终止
// +======================================================================
// | 【合法使用要求】
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法、侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 【免责声明】
// | 因使用本框架导致的以下情况,我们概不负责:
// | 1. 项目研发中的意外、疏忽、违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接、间接、附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 【协议重要提示】
// | 1. 本声明是《小蚂蚁云最终用户许可协议》的摘要版本
// | 2. 下载、安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利,修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本,继续使用视为接受修改
// +======================================================================
// | 【侵权举报与合规】
// | 1. 知识产权侵权举报:请联系官方客服
// | 2. 许可证合规咨询:xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议,我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.dingtalk.dto;
import lombok.Data;
/**
* <p>
* FeedCard消息DTO
* </p>
*
* @author 小蚂蚁云团队
* @since 2024-06-13
*/
@Data
public class DingTalkItemDTO {
/**
* 消息标题
*/
private String title;
/**
* 消息URL
*/
private String messageUrl;
/**
* 消息图片
*/
private String picUrl;
}
@@ -0,0 +1,107 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型,构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值:赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 【知识产权声明】
// | 1. 权属声明:本软件是受《中华人民共和国著作权法》
// | 保护的专有财产,完整版权归小蚂蚁云团队所有
// | 2. 权利范围:所有知识产权(商标、专利、著作权、
// | 商业秘密等)均归小蚂蚁云团队所有,受法律保护
// | 3. 授权性质:用户仅可获得有限的、非独占的使用许可
// | 4. 禁止行为:未经书面授权,禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留:未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 【授权状态说明】
// | 1. 未授权状态:用户未购买有效的商业许可证
// | 2. 商业授权:已购买正式商业许可证的用户
// +======================================================================
// | 【绝对禁止条款】
// | 无论授权状态如何,任何用户均严格禁止以下行为:
// | 1. 逆向工程:对软件进行反编译、反汇编、技术破解或任何形式的逆向分析
// | 2. 版权破坏:移除、修改、遮挡软件中的版权标识、许可控制或技术保护措施
// | 3. 非法传播:复制、分发、出租、出借、转售、再许可本软件或其许可权利
// | 4. 竞争性使用:利用本软件的代码、架构、设计开发直接竞争的产品或服务
// | 5. 侵权使用:将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 【商业授权许可范围】
// | 购买有效商业许可证的用户,在遵守上述禁止条款的前提下,获得:
// | 1. 使用权利:在许可证约定的项目数量、开发者数量范围内使用本软件
// | 2. 技术支持:商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新:在许可证有效期内获取软件更新、安全补丁和功能增强
// | 4. 商业部署:将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 【许可证获取】
// | 1. 获取途径:仅通过小蚂蚁云官方渠道购买(官网、授权代理商),购买记录凭证
// | 2. 转让限制:许可证与购买主体绑定,未经书面同意不得转让
// | 3. 终止情形:许可证到期、违反协议、破产清算等情况下自动终止
// +======================================================================
// | 【合法使用要求】
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法、侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 【免责声明】
// | 因使用本框架导致的以下情况,我们概不负责:
// | 1. 项目研发中的意外、疏忽、违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接、间接、附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 【协议重要提示】
// | 1. 本声明是《小蚂蚁云最终用户许可协议》的摘要版本
// | 2. 下载、安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利,修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本,继续使用视为接受修改
// +======================================================================
// | 【侵权举报与合规】
// | 1. 知识产权侵权举报:请联系官方客服
// | 2. 许可证合规咨询:xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议,我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.dingtalk.dto;
import lombok.Data;
/**
* <p>
* 钉钉超链接消息DTO
* </p>
*
* @author 小蚂蚁云团队
* @since 2024-06-13
*/
@Data
public class DingTalkLinkMessageDTO {
/**
* 消息标题
*/
private String title;
/**
* 消息描述
*/
private String text;
/**
* 超链接地址
*/
private String messageUrl;
/**
* 图片地址
*/
private String picUrl;
}
@@ -0,0 +1,320 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型,构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值:赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 【知识产权声明】
// | 1. 权属声明:本软件是受《中华人民共和国著作权法》
// | 保护的专有财产,完整版权归小蚂蚁云团队所有
// | 2. 权利范围:所有知识产权(商标、专利、著作权、
// | 商业秘密等)均归小蚂蚁云团队所有,受法律保护
// | 3. 授权性质:用户仅可获得有限的、非独占的使用许可
// | 4. 禁止行为:未经书面授权,禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留:未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 【授权状态说明】
// | 1. 未授权状态:用户未购买有效的商业许可证
// | 2. 商业授权:已购买正式商业许可证的用户
// +======================================================================
// | 【绝对禁止条款】
// | 无论授权状态如何,任何用户均严格禁止以下行为:
// | 1. 逆向工程:对软件进行反编译、反汇编、技术破解或任何形式的逆向分析
// | 2. 版权破坏:移除、修改、遮挡软件中的版权标识、许可控制或技术保护措施
// | 3. 非法传播:复制、分发、出租、出借、转售、再许可本软件或其许可权利
// | 4. 竞争性使用:利用本软件的代码、架构、设计开发直接竞争的产品或服务
// | 5. 侵权使用:将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 【商业授权许可范围】
// | 购买有效商业许可证的用户,在遵守上述禁止条款的前提下,获得:
// | 1. 使用权利:在许可证约定的项目数量、开发者数量范围内使用本软件
// | 2. 技术支持:商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新:在许可证有效期内获取软件更新、安全补丁和功能增强
// | 4. 商业部署:将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 【许可证获取】
// | 1. 获取途径:仅通过小蚂蚁云官方渠道购买(官网、授权代理商),购买记录凭证
// | 2. 转让限制:许可证与购买主体绑定,未经书面同意不得转让
// | 3. 终止情形:许可证到期、违反协议、破产清算等情况下自动终止
// +======================================================================
// | 【合法使用要求】
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法、侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 【免责声明】
// | 因使用本框架导致的以下情况,我们概不负责:
// | 1. 项目研发中的意外、疏忽、违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接、间接、附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 【协议重要提示】
// | 1. 本声明是《小蚂蚁云最终用户许可协议》的摘要版本
// | 2. 下载、安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利,修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本,继续使用视为接受修改
// +======================================================================
// | 【侵权举报与合规】
// | 1. 知识产权侵权举报:请联系官方客服
// | 2. 许可证合规咨询:xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议,我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.dingtalk.utils;
import cn.hutool.extra.spring.SpringUtil;
import cn.snowheart.dingtalk.robot.starter.client.DingTalkRobotClient;
import cn.snowheart.dingtalk.robot.starter.entity.*;
import cn.snowheart.dingtalk.robot.starter.type.HideAvatarType;
import com.xiaomayi.dingtalk.dto.DingTalkItemDTO;
import com.xiaomayi.dingtalk.dto.DingTalkLinkMessageDTO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
/**
* <p>
* 钉钉消息工具类
* </p>
*
* @author 小蚂蚁云团队
* @since 2024-06-13
*/
@Slf4j
@Component
public class DingTalkUtils {
/**
* 获取Bean对象
*/
DingTalkRobotClient dingTalkRobotClient = SpringUtil.getBean(DingTalkRobotClient.class);
/**
* 发送文本消息
*
* @param message 消息文本
*/
public void sendMessage(String message) {
DingTalkResponse response = dingTalkRobotClient.sendMessage(new TextMessage(message));
log.info(response.toString());
}
/**
* 发送普通文本消息
*
* @param message 消息文本
*/
public void sendTextMessage(String message) {
sendTextMessage(message, false, false);
}
/**
* 发送文本确认消息
*
* @param message 消息文本
* @param isAtAll 是否待确认:收到、回复
*/
public void sendTextMessage(String message, boolean isAtAll) {
sendTextMessage(message, isAtAll, false);
}
/**
* 发送普通文本消息
*
* @param message 消息文本
* @param isAtAll 是否待确认:收到、回复
* @param isMessage 是否构建消息
*/
public void sendTextMessage(String message, boolean isAtAll, boolean isMessage) {
DingTalkResponse response = null;
if (isMessage) {
response = dingTalkRobotClient.sendTextMessage(new TextMessage(message));
} else {
if (isAtAll) {
response = dingTalkRobotClient.sendTextMessage(message, isAtAll);
log.info(response.toString());
} else {
response = dingTalkRobotClient.sendTextMessage(message);
}
}
log.info(response.toString());
}
/**
* 发送普通文本消息,执行接收者
*
* @param message 消息文本
* @param receiveList 接收人数组
*/
public void sendTextMessage(String message, String[] receiveList) {
DingTalkResponse response = dingTalkRobotClient.sendTextMessage(message, receiveList);
log.info(response.toString());
}
/**
* 发送超链接文本消息
*
* @param dingTalkLinkMessageDTO 消息体DTO
*/
public void sendLinkMessage(DingTalkLinkMessageDTO dingTalkLinkMessageDTO) {
DingTalkResponse response = dingTalkRobotClient.sendLinkMessage(new LinkMessage(dingTalkLinkMessageDTO.getTitle(),
dingTalkLinkMessageDTO.getText(),
dingTalkLinkMessageDTO.getMessageUrl(),
dingTalkLinkMessageDTO.getPicUrl()));
log.info(response.toString());
}
/**
* 发送构建markdown文本推送
*
* @param message 消息对象
*/
public void sendMarkdownMessage(MarkdownMessage message) {
// 构建 markdown 对象用法
DingTalkResponse response = dingTalkRobotClient.sendMarkdownMessage(message);
log.info(response.toString());
}
/**
* 发送构建markdown文本推送
*
* @param title 消息标题
* @param content 消息内容
*/
public void sendMarkdownMessage(String title, String content) {
// 不构建对象
DingTalkResponse response = dingTalkRobotClient.sendMarkdownMessage(title, content);
log.info(response.toString());
}
/**
* 给全部群成员发送Markdown消息
*
* @param title 消息标题
* @param content 消息内容
* @param isAtAll 是否全体发送消息
*/
public void sendMarkdownMessage(String title, String content, boolean isAtAll) {
DingTalkResponse response = dingTalkRobotClient.sendMarkdownMessage(title, content, isAtAll);
log.info(response.toString());
}
/**
* 发送Markdown消息给指定人
*
* @param title 消息标题
* @param content 消息内容
* @param receiveList 接收者
*/
public void sendMarkdownMessage(String title, String content, String[] receiveList) {
DingTalkResponse response = dingTalkRobotClient.sendMarkdownMessage(title, content, receiveList);
log.info(response.toString());
}
/**
* 构建ActionCard推送消息
*
* @param actionCardMessage 消息体对象
*/
public void sendActionCardMessage(ActionCardMessage actionCardMessage) {
DingTalkResponse response = dingTalkRobotClient.sendActionCardMessage(actionCardMessage);
log.info(response.toString());
}
/**
* 发送ActionCard推送消息
*
* @param title 消息标题
* @param content 消息内容
*/
public void sendActionCardMessage(String title, String content) {
sendActionCardMessage(title, content, false);
}
/**
* 发送ActionCard推送消息
*
* @param title 消息标题
* @param content 消息内容
* @param isHide 是否隐藏
*/
public void sendActionCardMessage(String title, String content, boolean isHide) {
DingTalkResponse response = dingTalkRobotClient.sendActionCardMessage(
title,
content,
isHide ? HideAvatarType.HIDE : HideAvatarType.UNHIDE);
log.info(response.toString());
}
/**
* 发送ActionCard推送消息
*
* @param title 消息标题
* @param content 消息内容
* @param actionURL 消息连接
*/
public void sendActionCardMessage(String title, String content, String actionURL) {
sendActionCardMessage(title, content, actionURL, false);
}
/**
* 发送ActionCard推送消息
*
* @param title 消息标题
* @param content 消息内容
* @param actionURL 消息连接
* @param isHide 是否隐藏
*/
public void sendActionCardMessage(String title, String content, String actionURL, boolean isHide) {
DingTalkResponse response = dingTalkRobotClient.sendActionCardMessage(
title,
content,
isHide ? HideAvatarType.HIDE : HideAvatarType.UNHIDE,
ActionCardButton.defaultReadButton(actionURL));
log.info(response.toString());
}
/**
* 发送FeedCard消息推送
*
* @param dingTalkItemDTOList 钉钉图文对象
* @param isMessage 是否构建消息体
*/
public void sendFeedCardMessage(List<DingTalkItemDTO> dingTalkItemDTOList, boolean isMessage) {
// 消息元素列表
List<FeedCardMessageItem> items = new ArrayList<>();
// 遍历元素数据源
for (DingTalkItemDTO dingTalkItemDTO : dingTalkItemDTOList) {
// 消息对象
FeedCardMessageItem messageItem = new FeedCardMessageItem();
// 消息标题
messageItem.setTitle(dingTalkItemDTO.getTitle());
// 消息文本连接
messageItem.setMessageURL(dingTalkItemDTO.getMessageUrl());
// 消息图片
messageItem.setPicURL(dingTalkItemDTO.getPicUrl());
// 加入列表
items.add(messageItem);
}
DingTalkResponse response = null;
// 发送钉钉消息
if (isMessage) {
response = dingTalkRobotClient.sendFeedCardMessage(new FeedCardMessage(items));
} else {
response = dingTalkRobotClient.sendFeedCardMessage(items);
}
log.info(response.toString());
}
}