国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

設(shè)計門戶網(wǎng)站站內(nèi)seo和站外seo區(qū)別

設(shè)計門戶網(wǎng)站,站內(nèi)seo和站外seo區(qū)別,學(xué)校網(wǎng)站模板html,網(wǎng)絡(luò)營銷文案標(biāo)題項目開發(fā)中需要用到釘釘機器人發(fā)送任務(wù)狀態(tài),本來想單獨做一個功能就好,但是想著公司用到釘釘機器人發(fā)送項目挺多的。所以把這個釘釘機器人抽離成一個組件發(fā)布到企業(yè)maven倉庫,這樣可以給其他同事用提高工作效率。 1.目錄結(jié)構(gòu) 2.用抽象類&…

項目開發(fā)中需要用到釘釘機器人發(fā)送任務(wù)狀態(tài),本來想單獨做一個功能就好,但是想著公司用到釘釘機器人發(fā)送項目挺多的。所以把這個釘釘機器人抽離成一個組件發(fā)布到企業(yè)maven倉庫,這樣可以給其他同事用提高工作效率。

1.目錄結(jié)構(gòu)

在這里插入圖片描述

2.用抽象類(abstract)規(guī)范釘釘發(fā)送消息模版

2.1創(chuàng)建一個抽象類
public abstract class BaseMessage {public BaseMessage() {initMsg();}protected String msgType;public String getMsgType() {return msgType;}protected abstract void initMsg();/*** 返回Message對象組裝出來的Map對象,供后續(xù)JSON序列化** @return Map*/public abstract JSONObject toMessageMap();
}
2.2釘釘(link,text,markdown)類型創(chuàng)建實體繼承BaseMessgae

釘釘api文檔 添加鏈接描述

LinkMessage@Data
public class LinkMessage extends BaseMessage {/*** 消息簡介*/private String text;/*** 消息標(biāo)題*/private String title;/*** 封面圖片URL*/private String picUrl;/*** 消息跳轉(zhuǎn)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 {/*** 文本消息的具體內(nèi)容*/private String content;/*** 可以通過群成員的綁定手機號來艾特具體的群成員*/private String[] atMobiles;/*** 是否艾特所有人* 也可以設(shè)置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;/*** 消息標(biāo)題*/private String title;/*** 可以通過群成員的綁定手機號來艾特具體的群成員*/private String[] atMobiles;/*** 是否艾特所有人* 也可以設(shè)置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.實現(xiàn)類方法

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;}/*** 發(fā)送文本消息到釘釘** @param message* @return*/public DingTalkResponse sendTextMessage(TextMessage message) {return this.sendMessage(message);}/*** 發(fā)送文本消息到釘釘** @param content* @return*/public DingTalkResponse sendTextMessage(String content) {return this.sendMessage(new TextMessage(content));}/*** 發(fā)送文本消息到釘釘** @param content* @param atMobiles* @return*/public DingTalkResponse sendTextMessage(String content, String[] atMobiles) {return this.sendMessage(new TextMessage(content, atMobiles));}/*** 發(fā)送文本消息到釘釘** @param content* @param isAtAll* @return*/public DingTalkResponse sendTextMessage(String content, boolean isAtAll) {return this.sendMessage(new TextMessage(content, isAtAll));}/*** 發(fā)送Link消息到釘釘** @param message* @return*/public DingTalkResponse sendLinkMessage(LinkMessage message) {return this.sendMessage(message);}/*** 發(fā)送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));}/*** 發(fā)送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));}/*** 發(fā)送MarkDown消息到釘釘** @param message* @return*/public DingTalkResponse sendMarkdownMessage(MarkdownMessage message) {return this.sendMessage(message);}/*** 發(fā)送MarkDown消息到釘釘** @param title* @param text* @return*/public DingTalkResponse sendMarkdownMessage(String title, String text) {return this.sendMessage(new MarkdownMessage(title, text));}/*** 發(fā)送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));}/*** 發(fā)送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("構(gòu)建任務(wù)","#### 杭州天氣 @156xxxx8827\n" +"> 9度,西北風(fēng)1級,空氣良89,相對溫度73%\n\n" +"> ![screenshot](https://gw.alicdn.com/tfs/TB1ut3xxbsrBKNjSZFpXXcXhFXa-846-786.png)\n"  +"> ###### 10點20分發(fā)布 [天氣](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://m.aloenet.com.cn/news/1428.html

相關(guān)文章:

  • 電銷管理系統(tǒng)軟件seo技術(shù)培訓(xùn)中心
  • 咸寧網(wǎng)站設(shè)計自制網(wǎng)頁
  • 旅游網(wǎng)站組織結(jié)構(gòu)圖怎么做小廣告網(wǎng)頁
  • 天津企商網(wǎng)站建設(shè)公司自動點擊器免費下載
  • 企業(yè)網(wǎng)站模板建站流程百度如何購買關(guān)鍵詞
  • 做蝦網(wǎng)站該起啥名好百度指數(shù)關(guān)鍵詞工具
  • 臺州企業(yè)網(wǎng)站搭建電話南寧seo怎么做優(yōu)化團隊
  • 阜新住房建設(shè)委員會網(wǎng)站湖南企業(yè)seo優(yōu)化
  • 化妝品產(chǎn)品的自建網(wǎng)站喲哪些申請自己的網(wǎng)站
  • 網(wǎng)站建設(shè)尾款營銷咨詢公司排名前十
  • 哪些網(wǎng)站是做食品nba交易最新消息
  • 山東鑫泰建設(shè)集團網(wǎng)站微信營銷推廣公司
  • 買了個域名怎么做網(wǎng)站網(wǎng)絡(luò)輿情分析師
  • 英文網(wǎng)站建設(shè)小程序開發(fā)
  • 360seo排名點擊軟件逆冬seo
  • 微信平臺公眾號開發(fā)廊坊網(wǎng)站seo
  • 威遠(yuǎn)移動網(wǎng)站建設(shè)黃石seo診斷
  • 賀州網(wǎng)站制作吸引顧客的營銷策略
  • 一條龍網(wǎng)站建設(shè)哪家好游戲推廣員是做什么的
  • 六安建設(shè)廳網(wǎng)站青島網(wǎng)站seo診斷
  • 住建局證件查詢系統(tǒng)怎么做關(guān)鍵詞優(yōu)化排名
  • 網(wǎng)站用gbk還是utf8惡意點擊軟件哪個好
  • 在putty做網(wǎng)站要拷貝什么seo點擊優(yōu)化
  • photoshop做圖網(wǎng)站常德seo
  • 自己做網(wǎng)站收費么成都網(wǎng)站設(shè)計公司
  • 成都哪家公司做網(wǎng)站最好建立一個網(wǎng)站的費用
  • 建網(wǎng)站注冊培訓(xùn)心得體會2000字
  • 網(wǎng)站建設(shè)的經(jīng)濟可行性怎樣做網(wǎng)站賣自己的產(chǎn)品
  • 網(wǎng)站備案信息真實性核驗網(wǎng)頁版百度云
  • 黃渡網(wǎng)站建設(shè)百度網(wǎng)盤網(wǎng)頁版登錄