当前位置: 首页 > news >正文

网站建设新闻动态seo com

网站建设新闻动态,seo com,wordpress主题文章圆角化,要怎样注册公司项目开发中需要用到钉钉机器人发送任务状态,本来想单独做一个功能就好,但是想着公司用到钉钉机器人发送项目挺多的。所以把这个钉钉机器人抽离成一个组件发布到企业maven仓库,这样可以给其他同事用提高工作效率。 1.目录结构 2.用抽象类&…

项目开发中需要用到钉钉机器人发送任务状态,本来想单独做一个功能就好,但是想着公司用到钉钉机器人发送项目挺多的。所以把这个钉钉机器人抽离成一个组件发布到企业maven仓库,这样可以给其他同事用提高工作效率。

1.目录结构

在这里插入图片描述

2.用抽象类(abstract)规范钉钉发送消息模版

2.1创建一个抽象类
public abstract class BaseMessage {public BaseMessage() {initMsg();}protected String msgType;public String getMsgType() {return msgType;}protected abstract void initMsg();/*** 返回Message对象组装出来的Map对象,供后续JSON序列化** @return Map*/public abstract JSONObject toMessageMap();
}
2.2钉钉(link,text,markdown)类型创建实体继承BaseMessgae

钉钉api文档 添加链接描述

LinkMessage@Data
public class LinkMessage extends BaseMessage {/*** 消息简介*/private String text;/*** 消息标题*/private String title;/*** 封面图片URL*/private String picUrl;/*** 消息跳转URL*/private String messageUrl;public LinkMessage() {}public LinkMessage(String title, String text, String messageUrl) {this.text = text;this.title = title;this.messageUrl = messageUrl;}public LinkMessage(String title, String text, String messageUrl, String picUrl) {this.text = text;this.title = title;this.picUrl = picUrl;this.messageUrl = messageUrl;}@Overrideprotected void initMsg() {this.msgType = DingTalkMsgEnum.LINK.getType();}@Overridepublic JSONObject toMessageMap() {if (StringUtils.isEmpty(this.text) || !DingTalkMsgEnum.LINK.getType().equals(this.msgType)) {throw new IllegalArgumentException("please check the necessary parameters!");}JSONObject resultMap = JSONUtil.createObj();resultMap.put("msgtype", this.msgType);JSONObject linkItems = JSONUtil.createObj();linkItems.put("title", this.title);linkItems.put("text", this.text);linkItems.put("picUrl", this.picUrl);linkItems.put("messageUrl", this.messageUrl);resultMap.put("link", linkItems);return resultMap;}
}TextMessage@Data
public class TextMessage extends BaseMessage {/*** 文本消息的具体内容*/private String content;/*** 可以通过群成员的绑定手机号来艾特具体的群成员*/private String[] atMobiles;/*** 是否艾特所有人* 也可以设置isAtAll=true来艾特所有人*/private boolean isAtAll;public TextMessage() {}public TextMessage(String content) {this.content = content;}public TextMessage(String content, String[] atMobiles) {this.content = content;this.atMobiles = atMobiles;}public TextMessage(String content, boolean isAtAll) {this.content = content;this.isAtAll = isAtAll;}@Overrideprotected void initMsg() {this.msgType = DingTalkMsgEnum.TEXT.getType();}@Overridepublic JSONObject toMessageMap() {if (StringUtils.isEmpty(this.content) || !DingTalkMsgEnum.TEXT.getType().equals(this.msgType)) {throw new IllegalArgumentException("please check the necessary parameters!");}JSONObject resultMap = JSONUtil.createObj();resultMap.put("msgtype", this.msgType);JSONObject textItems = JSONUtil.createObj();textItems.put("content", this.content);resultMap.put("text", textItems);JSONObject atItems = JSONUtil.createObj();atItems.put("atMobiles", this.atMobiles);atItems.put("isAtAll", this.isAtAll);resultMap.put("at", atItems);return resultMap;}
}MarkdownMessage
@Data
public class MarkdownMessage extends BaseMessage {/*** 消息简介*/private String text;/*** 消息标题*/private String title;/*** 可以通过群成员的绑定手机号来艾特具体的群成员*/private String[] atMobiles;/*** 是否艾特所有人* 也可以设置isAtAll=true来艾特所有人*/private boolean isAtAll;public MarkdownMessage() {}public MarkdownMessage(String title, String text) {this.text = text;this.title = title;}public MarkdownMessage(String title, String text, String[] atMobiles) {this.text = text;this.title = title;this.atMobiles = atMobiles;}public MarkdownMessage(String title, String text, boolean isAtAll) {this.text = text;this.title = title;this.isAtAll = isAtAll;}@Overrideprotected void initMsg() {this.msgType = DingTalkMsgEnum.MARKDOWN.getType();}@Overridepublic JSONObject toMessageMap() {if (StringUtils.isEmpty(this.text) || !DingTalkMsgEnum.MARKDOWN.getType().equals(this.msgType)) {throw new IllegalArgumentException("please check the necessary parameters!");}JSONObject resultMap = JSONUtil.createObj();resultMap.put("msgtype", this.msgType);JSONObject markdownItems = JSONUtil.createObj();markdownItems.put("title", this.title);markdownItems.put("text", this.text);resultMap.put("markdown", markdownItems);JSONObject atItems = JSONUtil.createObj();atItems.put("atMobiles", this.atMobiles);atItems.put("isAtAll", this.isAtAll);resultMap.put("at", atItems);return resultMap;}
}

3. 钉钉异常错误类

public class DingTalkResponse {/*** 错误码*/private Integer errcode;/*** 错误信息*/private String errmsg;public Integer getErrcode() {return errcode;}public void setErrcode(Integer errcode) {this.errcode = errcode;}public String getErrmsg() {return errmsg;}public void setErrmsg(String errmsg) {this.errmsg = errmsg;}@Overridepublic String toString() {return "DingTalkResponse{" +"errcode=" + errcode +", errmsg='" + errmsg + '\'' +'}';}
}

4.钉钉类型枚举

@Getter
public enum DingTalkMsgEnum {LINK("link"),TEXT("text"),MARKDOWN("markdown");private final String type;DingTalkMsgEnum(String type) {this.type = type;}}

5.实现类方法

public class DingTalkRobotClient {/*** 钉钉机器人WebHook地址的access_token*/private String accessToken;private static String DING_TALK_PATH = "https://oapi.dingtalk.com/robot/send?access_token=ACCESS_TOKEN";public DingTalkRobotClient(String token) {if(StringUtils.isEmpty(token)){throw new ServiceException("accessToken获取失败!");}this.accessToken = token;}private DingTalkResponse sendMessage(BaseMessage message) {String result = HttpUtil.post(DING_TALK_PATH.replace("ACCESS_TOKEN", this.accessToken), message.toMessageMap().toString());DingTalkResponse dingTalkResponse = JSON.parseObject(result, DingTalkResponse.class);// 对DingTalkResponse为空情况做异常封装if (dingTalkResponse == null) {throw new ServiceException("请求钉钉报错!");}if (dingTalkResponse.getErrcode() != 0) {throw new ServiceException(String.format("错误码:%s;%s", dingTalkResponse.getErrcode(), dingTalkResponse.getErrmsg()));}return dingTalkResponse;}/*** 发送文本消息到钉钉** @param message* @return*/public DingTalkResponse sendTextMessage(TextMessage message) {return this.sendMessage(message);}/*** 发送文本消息到钉钉** @param content* @return*/public DingTalkResponse sendTextMessage(String content) {return this.sendMessage(new TextMessage(content));}/*** 发送文本消息到钉钉** @param content* @param atMobiles* @return*/public DingTalkResponse sendTextMessage(String content, String[] atMobiles) {return this.sendMessage(new TextMessage(content, atMobiles));}/*** 发送文本消息到钉钉** @param content* @param isAtAll* @return*/public DingTalkResponse sendTextMessage(String content, boolean isAtAll) {return this.sendMessage(new TextMessage(content, isAtAll));}/*** 发送Link消息到钉钉** @param message* @return*/public DingTalkResponse sendLinkMessage(LinkMessage message) {return this.sendMessage(message);}/*** 发送Link消息到钉钉** @param title* @param text* @param messageUrl* @return*/public DingTalkResponse sendLinkMessage(String title, String text, String messageUrl) {return this.sendMessage(new LinkMessage(title, text, messageUrl));}/*** 发送Link消息到钉钉** @param title* @param text* @param messageUrl* @param picUrl* @return*/public DingTalkResponse sendLinkMessage(String title, String text, String messageUrl, String picUrl) {return this.sendMessage(new LinkMessage(title, text, messageUrl, picUrl));}/*** 发送MarkDown消息到钉钉** @param message* @return*/public DingTalkResponse sendMarkdownMessage(MarkdownMessage message) {return this.sendMessage(message);}/*** 发送MarkDown消息到钉钉** @param title* @param text* @return*/public DingTalkResponse sendMarkdownMessage(String title, String text) {return this.sendMessage(new MarkdownMessage(title, text));}/*** 发送MarkDown消息到钉钉** @param title* @param text* @param atMobiles* @return*/public DingTalkResponse sendMarkdownMessage(String title, String text, String[] atMobiles) {return this.sendMessage(new MarkdownMessage(title, text, atMobiles));}/*** 发送MarkDown消息到钉钉** @param title* @param text* @param isAtAll* @return*/public DingTalkResponse sendMarkdownMessage(String title, String text, boolean isAtAll) {return this.sendMessage(new MarkdownMessage(title, text, isAtAll));}public static void main(String[] args) {new DingTalkRobotClient("accessToken").sendMarkdownMessage("构建任务","#### 杭州天气 @156xxxx8827\n" +"> 9度,西北风1级,空气良89,相对温度73%\n\n" +"> ![screenshot](https://gw.alicdn.com/tfs/TB1ut3xxbsrBKNjSZFpXXcXhFXa-846-786.png)\n"  +"> ###### 10点20分发布 [天气](http://www.thinkpage.cn/) \n");}

6. DingTalkConfig配置

@ConfigurationProperties(prefix = "dingtalk")
@Configuration
@Data
public class DingTalkConfig {private String accessToken;@Beanpublic DingTalkRobotClient dingTalkRobotClient(){return new DingTalkRobotClient(accessToken);}
}
http://www.hkea.cn/news/233114/

相关文章:

  • 荆州网站建设流程网站设计培训
  • 网站支付怎么做的seo职业技能培训班
  • 做csgo直播网站上海知名网站制作公司
  • 深圳住建局官方网站seo网站关键词优化快速官网
  • 网站建设需要php吗企业的互联网推广
  • 苏中建设集团官方网站电商软文广告经典案例
  • 网站开发需要什么开发工具代做百度首页排名价格
  • 北京网站设计多少钱微信引流推广
  • 网站建设实施背景分析百度指数里的资讯指数是什么
  • 小程序定制开发深圳公司网站的优化seo
  • 构建一个网站域名查询平台
  • 蚌埠网站关键词优化推广下载
  • 看房地产的app在哪看aso安卓优化
  • 网站与域名的区别扬州整站seo
  • 哪些网站可以进行域名注册公司关键词seo
  • 如何申请一个网站 做视频百度小说搜索热度排行榜
  • 天津做网站选择津坤科技b重庆seo教程搜索引擎优化
  • 什么网站做热能表好百度一下电脑版首页网址
  • 点击图片直接进入网站怎么做如何使用免费b站推广网站
  • 手机网站建设软件怎么在百度上做广告推广
  • 南京做网站团队手机app免费制作平台
  • 17173游戏网搜索优化指的是什么
  • 公司做网站需要给百度交钱吗百度竞价推广方案
  • 网站建设的关键seo推广小分享
  • 写小说的小网站百度关键词排名优化
  • 制作网站的成本规划公司如何建立网站
  • html语言做网站石嘴山网站seo
  • 做最好的言情网站官网seo优化
  • 云南建设监理协会网站营销失败案例分析
  • 怎么样做淘宝优惠券网站搜索引擎营销的优缺点