Java实现倒计时和金山词霸每日一句发送到企业微信
# Java实现倒计时和金山词霸每日一句发送到企业微信> 使用企业微信每天自动发送倒计时和金山词霸每日一句
>根据https://www.52pojie.cn/thread-1436999-1-1.html 修改
## 创建企业微信应用
### 注册企业
用电脑打开[企业微信官网](https://work.weixin.qq.com/),注册一个企业
### 创建应用
注册成功后,点「管理企业」进入管理界面,选择「应用管理」 → 「自建」 → 「创建应用」
!(http://ftp.25wz.cn/study/20210208143228.png)
创建完成后进入应用详情页,可以得到应用ID( `agentid` ),应用Secret( `secret` ),复制并填到上方。
PS:获取应用Secret时,可能会将其推送到企业微信客户端,这时候微信里边是看不到的,需要在企业微信客户端里边才能看到。
!(http://ftp.25wz.cn/study/image-20220108170159732.png)
### 获取企业ID
进入「[我的企业](https://work.weixin.qq.com/wework_admin/frame#profile)」页面,拉到最下边,可以看到企业ID,复制并填到上方。
### 推送消息到微信
进入「我的企业」 → 「[微信插件](https://work.weixin.qq.com/wework_admin/frame#profile/wxPlugin)」,拉到下边扫描二维码,关注以后即可收到推送的消息
!(http://ftp.25wz.cn/study/image-20220108170410955.png)
PS:如果出现接口请求正常,企业微信接受消息正常,个人微信无法收到消息的情况,请确认如下配置:
- 进入「我的企业」 → 「微信插件」,拉到最下方,勾选「允许成员在微信插件中接收和回复聊天消息 」
- 在企业微信客户端 「我」 → 「设置」 → 「新消息通知」中关闭「仅在企业微信中接受消息」限制条件
## 代码实现
### 导入hu-tool依赖
```xml
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.7.15</version>
</dependency>
```
### 代码
#### 实现方法
```java
public void cronWeChatMessage(){
//访问金山词霸接口
String dsapi = HttpRequest.get("https://open.iciba.com/dsapi/").execute().body();
//使用hutool解析
JSONObject dsapiJson = JSONUtil.parseObj(dsapi);
//拼接字符串
String text = dsapiJson.getStr("content") + "\n" + dsapiJson.getStr("note");
//定义结束的时间
String DateStr = "2022-06-07 08:00:00";
Date endDate = DateUtil.parse(DateStr);
//获取当前时间
Date date = DateUtil.date();
//计算时间差
long day = DateUtil.between(date, endDate, DateUnit.DAY);
//企业ID
String corpid = "";
//应用Secret
String corpsecret = "";
//获取token 获取到的token是有时间限制,因为这里每天只会执行一次,所以不用考虑过期的问题,每次执行重新获取token就行了
String tokenBody = HttpRequest.get("https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=" + corpid + "&corpsecret=" + corpsecret).execute().body();
String access_token = (String) JSONUtil.parseObj(tokenBody).get("access_token");
//封装请求信息
Map<String, Object> map = new HashMap<>();
//发送给当前企业微信下的所有人
map.put("touser","@all");
//发送类型
map.put("msgtype","textcard");
//应用ID
map.put("agentid",1000002);
map.put("textcard",new WeChatCentent("距离专升本考试还剩"+ day +"天",text, "","无缺"));
String s = JSONUtil.toJsonStr(map);
HttpResponse response = HttpRequest.post(" https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=" + access_token).body(s).execute();
StaticLog.info("response:{}",response.body());
}
```
#### 实体类
```java
public class WeChatCentent implements Serializable {
private String content;
private String title;
private String description;
private String url;
private String btntxt;
public WeChatCentent(String content) {
this.content = content;
}
public WeChatCentent(String title, String description, String url, String btntxt) {
this.title = title;
this.description = description;
this.url = url;
this.btntxt = btntxt;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getBtntxt() {
return btntxt;
}
public void setBtntxt(String btntxt) {
this.btntxt = btntxt;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}
```
## 实现效果
<img src="http://ftp.25wz.cn/study/image-20220108171309461.png" alt="image-20220108171309461" style="zoom:50%;" />
### 程序包
[蓝奏云](https://wuquejs.lanzout.com/ikf8Jyiuini)
####使用方法
打开jar包
- 在`config\config.properties`文件中添加`corpid`和`corpsecret`
- 在`config\cron.setting`文件中修改定时时间
在jar包当前所在目录下允许
```shell
java -jar cron.jar
```
可以 收藏了 不错,多多分享啊 jar包怎么打开,反编译吗
NCGZS 发表于 2022-5-4 17:01
jar包怎么打开,反编译吗
jar包用WinRAR之类的解压软件就可以打开 能不能出个详细的教程,给我们小白看看,嘿嘿 学习学习 学习一下
页:
[1]