【JAVA】java 企业微信信息推送

前言

JAVA中 将信息 推送到企业微信

	// 企微消息推送messageprivate String getMessage(String name, String problemType, String pushResults, Long orderId,java.util.Date submitTime, java.util.Date payTime) {String message = "对接方:+<font color=\"info\">" + name + "</font>" + "\n" + ">问题类型:+<font color=\"info\">"+ problemType + "</font>" + "\n" + ">推送结果:+<font color=\"info\">" + pushResults + "</font>" + "\n"+ ">订单号:+<font color=\"info\">" + orderId + "</font>" + "\n" + ">订单产生时间:+<font color=\"info\">"+ submitTime + "</font>" + "\n" + ">订单支付时间:+<font color=\"info\">" + payTime + "</font>" + "\n"+ ">最后重推时间:+<font color=\"info\">" + new Date() + "</font>";return message;}

业务逻辑实现

                    LoggerFactory.getLogger(CtgExtendController.class).info("企业微信消息发送开始");String message = getMessage(log);String url = ConfigDao.getAppConfig().getConfig("fail_order_push_robot","https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=49308bf4-3e4c-47d8-95a9-1dbfd7984b66");ExceptionMessageModel exceptionMessageModel = new ExceptionMessageModel();exceptionMessageModel.setMessage(message);exceptionMessageModel.setRobotUrl(url);exceptionMessageModel.setTemplateCode(WxEtpRobotMsgEnum.MSG_ORDER_PUSH_H5.msgCode);exceptionMessageModel.setJsonParam(JSONUtility.objectToNotNullJson(resVo));//发送消息实现if (StringUtils.isNotBlank(exceptionMessageModel.getTemplateCode()) && StringUtils.isNotBlank(exceptionMessageModel.getJsonParam())) {//优先取配置项中的模板配置String msg = WxEtpRobotMsgEnum.covertMsg(exceptionMessageModel.getTemplateCode(), exceptionMessageModel.getJsonParam());if(StringUtils.isNotBlank(msg)){exceptionMessageModel.setMessage(msg);}}LoggerFactory.getLogger(CtgExtendController.class).info("异常信息推送埋点进入,入参:"+ exceptionMessageModel.toString());WxRobotUtil.sendMsg(exceptionMessageModel.getRobotUrl(), exceptionMessageModel.getMessage());LoggerFactory.getLogger(CtgExtendController.class).info("企业微信消息发送成功");

public class WxRobotUtil {
    private static final Logger logger= LoggerFactory.getLogger(WxRobotUtil.class);

    public static void sendMsg(String url,String msg){
        new CommonThread("","WxRobotUtil"){
            @Override
            public void run() {
               try {
                   //拼装发送消息
                   Map<String, Object> map = new HashMap<>();
                   Map<String, String> param = new HashMap<>();
                   map.put("msgtype", "markdown");
                   param.put("content","时间:"+new Date().getDateTimeStr()+"\n"+msg);
                   map.put("markdown", param);
                   String result = HttpUtility.doPost(url, JSONUtility.objectToJson(map), ContentType.APPLICATION_JSON.getMimeType());
                   logger.info("微信机器人消息:"+url+"---"+msg);
               }
               catch (Exception e){
                   logger.error("异常:"+url+"---"+msg,e);
               }
            }
        }.start();
    }
}

public class WxRobotUtil {private static final Logger logger= LoggerFactory.getLogger(WxRobotUtil.class);public static void sendMsg(String url,String msg){new CommonThread("","WxRobotUtil"){@Overridepublic void run() {try {//拼装发送消息Map<String, Object> map = new HashMap<>();Map<String, String> param = new HashMap<>();map.put("msgtype", "markdown");param.put("content","时间:"+new Date().getDateTimeStr()+"\n"+msg);map.put("markdown", param);String result = HttpUtility.doPost(url, JSONUtility.objectToJson(map), ContentType.APPLICATION_JSON.getMimeType());logger.info("微信机器人消息:"+url+"---"+msg);}catch (Exception e){logger.error("异常:"+url+"---"+msg,e);}}}.start();}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/6108.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

AI代币是什么?AI与Web3结合的未来方向在哪里?

近两年随着人工智能的崛起&#xff0c;AI已经渗透到制造业、电商、广告、医药等各个行业&#xff0c;加密货币领域也不例外&#xff0c;人工智能与区块链的融合&#xff0c;让我们看到了独特的数字资产 — AI加密代币。 它的流行始于2022年底&#xff0c;随着OpenAI智能聊天机…

MySQL数据库中的视图

视图 ​ 本篇将开始介绍有关数据库中视图的相关知识点&#xff0c;其中主要包含视图的基本使用&#xff0c;视图规则和限制。 ​ 视图是一个虚拟表&#xff0c;其内容由查询定义。同真实的表一样&#xff0c;视图包含一系列带有名称的列和行数据&#xff0c;视图的数据变化会…

Linux基础(八):EXT与XFS文件系统简介

磁盘与文件系统管理 1.文件系统与分区2. inode、block和superblock3.EXT2的文件系统3.1 data block3.2 inode Table3.2.1 inode记录的内容3.2.2 inode特点 3.3 Superblock3.4 Filesystem Description(文件系统描述说明)3.5 block bitmap &#xff08; 区块对照表&#xff09;3.…

clion远程配置docker ros2

CLION与docker中的ROS2环境构建远程连接 设备前提开启SSH服务CLION配置CLION配置CLION IDE远程连接过程实现CLION SSH 远程部署 开启fastlio2debug之旅 设备前提 本地宿主机&#xff1a;UBUNTU 20.04 docker container:ros2_container (内置环境ROS2 humble) 通过之前的tcp连接…

Midjourney从入门到精通教程,10分钟让你从小白变大神!【珍藏版】

前言&#xff1a; 《Midjourney使用教程&#xff1a;从入门到精通》旨在带领你一步步掌握这款强大的AI创作工具。无论你是设计小白还是有一定基础的创作者&#xff0c;本教程都将为你揭开Midjourney的神秘面纱。从基本操作到高级技巧&#xff0c;我们将逐一解析&#xff0c;让…

JAVA开源项目 网上租赁系统 计算机毕业设计

本文项目编号 T 050 &#xff0c;文末自助获取源码 \color{red}{T050&#xff0c;文末自助获取源码} T050&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析5.4 用例设计5.4.1 用…

面试经典 150 题:189、383

189. 轮转数组 【参考代码】 class Solution { public:void rotate(vector<int>& nums, int k) {int size nums.size();if(1 size){return;}vector<int> temp(size);//k k % size;for(int i0; i<size; i){temp[(i k) % size] nums[i];}nums temp; }…

基于MATLAB的混沌序列图像加密程序

设计目的 图像信息生动形象&#xff0c;它已成为人类表达信息的重要手段之一&#xff0c;网络上的图像数据很多是要求发送方和接受都要进行加密通信&#xff0c;信息的安全与保密显得尤为重要&#xff0c;因此我想运用异或运算将数据进行隐藏&#xff0c;连续使用同一数据对图…

史上最大应用层DDoS攻击 H2 Rapid Reset攻击研究

前言 2023年10月Cloudflare、Google、AWS等厂商公布了一种利用HTTP/2快速重置进行应用层DDoS攻击的0day漏洞(CVE-2023-44487)[1][2]&#xff0c;即H2 Rapid Reset DDoS。Google宣传其监控到此种攻击峰值超过每秒3.98亿个请求&#xff0c;打破互联网历史最大应用层DDoS攻击记录…

Python 如何在 Web 环境中使用 Matplotlib 进行数据可视化

Python Matplotlib 在 Web 环境中的可视化 数据可视化是数据科学和分析中一个至关重要的部分&#xff0c;它能帮助我们更好地理解和解释数据。在现代应用中&#xff0c;越来越多的开发者希望能够将数据可视化结果展示在网页上。Matplotlib 是 Python 中最常用的数据可视化库之…

JavaWeb项目-----博客系统

一.设计数据库 1.创建数据库 create database if not exists java108_blog_system character set utf8; drop table if exists user; drop table if exists blog;2.创建博客列表 create table blog(blogId int primary key auto_increment,title varchar(20),content varcha…

算法练习——双指针

前言&#xff1a;大佬写博客给别人看&#xff0c;菜鸟写博客给自己看&#xff0c;我是菜鸟。 学前须知&#xff08;对自己&#xff09;&#xff1a;这里的指针不一定指地址&#xff01;也可能是数组下标。 1&#xff1a;移动零(双指针) 题目要求&#xff1a; 解题思路&#x…

vue3实现一个无缝衔接、滚动平滑的列表自动滚屏效果,支持鼠标移入停止移出滚动

文章目录 前言一、滚动元素相关属性回顾一、实现分析二、代码实现示例&#xff1a;2、继续添加功能&#xff0c;增加鼠标移入停止滚动、移出继续滚动效果2、继续完善 前言 列表自动滚屏效果常见于大屏开发场景中&#xff0c;本文将讲解用vue3实现一个无缝衔接、滚动平滑的列表自…

vscode翻译插件

vscode翻译插件 需求 &#xff1a; 在编写代码的时候&#xff0c; 打印或者定义变量的时候总是想不起来英文名称&#xff0c; 所有就开发了一款中文转换为英文的插件。 功能 1、目前支持选中中文&#xff0c;右键选择打印或者变量进行转换。 2、目前支持选中中文&#xff0…

Linux -- 初识线程

目录 线程的初步认识 为什么需要线程 怎么让代码分成多个执行流并发执行呢&#xff1f; 管理线程 线程的初步认识 线程是进程内部的一个执行分支&#xff0c;线程是CPU调度的基本单位。 在Linux操作系统中&#xff0c;线程是程序执行流的最小单位。一个进程可以包含多个线…

基于IM场景下的Wasm初探:提升Web应用性能|得物技术

一、何为Wasm &#xff1f; Wasm&#xff0c;全称 WebAssembly&#xff0c;官网描述是一种用于基于堆栈的虚拟机的二进制指令格式。Wasm被设计为一个可移植的目标&#xff0c;用于编译C/C/Rust等高级语言&#xff0c;支持在Web上部署客户端和服务器应用程序。 Wasm 的开发者参…

Linux SSH免密登入以及配置脚本

一、ssh原理简单介绍 客户端生成一对公钥和私钥&#xff0c;并将自己的公钥发送到服务器上 其中公钥用来加密&#xff0c;私钥用来解密。 二、ssh免密登入实现步骤详解 我这就以服务器controller和客户端compute来做为例子 2.1、首先在controller上输入ssh-keygen -t rsa …

Flutter 获取照片权限的时候是否要获取存储权限?

获取存储权限 Permission.storage.request(); 获取照片权限通常意味着访问相册&#xff0c;而访问相册可能还需要外部存储权限&#xff0c;因为照片通常存储在设备的外部存储中。所以&#xff0c;当你请求照片权限时&#xff0c;你也需要检查并请求外部存储权限。 是不是所有…

一个基于Rust适用于 Web、桌面、移动设备等的全栈应用程序框架

大家好&#xff0c;今天给大家分享一个用 Rust 语言编写的、受 React 启发的前端框架Dioxus&#xff0c;旨在为构建跨平台的用户界面提供高效、高性能的解决方案。 项目介绍 Dioxus项目的诞生源于开发者们对于更高效、更灵活的跨平台UI解决方案的渴望。 随着技术的发展&#…

IntelliJ Idea设置自定义快捷键

我IDEA的快捷键是自己修改成了和Eclipse相似&#xff0c;然后想要跳转到某个方法的上层抽象方法没有对应的快捷键&#xff0c;IDEA默认的是Ctrl U &#xff08;Windows/Linux 系统&#xff09; 或 Command U &#xff08;Mac 系统&#xff09;&#xff0c;但是我的不起作用&a…