Skip to content

Commit 293ef25

Browse files
committed
Merge branch 'develop'
2 parents 14c82c1 + 8485af0 commit 293ef25

30 files changed

+1038
-131
lines changed

README.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ weixin-java-tools
1717
<dependency>
1818
<groupId>me.chanjar</groupId>
1919
<artifactId>weixin-java-mp</artifactId>
20-
<version>1.2.0</version>
20+
<version>1.3.0</version>
2121
</dependency>
2222
```
2323

@@ -27,7 +27,7 @@ weixin-java-tools
2727
<dependency>
2828
<groupId>me.chanjar</groupId>
2929
<artifactId>weixin-java-cp</artifactId>
30-
<version>1.2.0</version>
30+
<version>1.3.0</version>
3131
</dependency>
3232
```
3333

@@ -54,3 +54,5 @@ weixin-java-tools
5454
## 关于Pull Request
5555

5656
非常欢迎和感谢对本项目发起Pull Request的同学,不过本项目基于[git flow](https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow)开发流程,因此在发起Pull Request的时候请选择develop分支。
57+
58+
且本项目代码风格是用2个空格代表一个tab,因此在发起PR时注意一下,否则很容易发生在IDE格式化代码后与原代码产生大量diff,这样我在阅读PR的时候就很困难。

pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<modelVersion>4.0.0</modelVersion>
66
<groupId>me.chanjar</groupId>
77
<artifactId>weixin-java-parent</artifactId>
8-
<version>1.2.0</version>
8+
<version>1.3.0</version>
99
<packaging>pom</packaging>
1010
<name>WeiXin Java Tools - Parent</name>
1111
<description>微信公众号、企业号上级POM</description>
@@ -41,7 +41,7 @@
4141
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
4242
<downloadJavadocs>true</downloadJavadocs>
4343
<downloadSources>true</downloadSources>
44-
<httpclient.version>4.3.5</httpclient.version>
44+
<httpclient.version>4.5</httpclient.version>
4545
<slf4j.version>1.7.10</slf4j.version>
4646
<logback.version>1.1.2</logback.version>
4747
</properties>

weixin-java-common/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<parent>
77
<groupId>me.chanjar</groupId>
88
<artifactId>weixin-java-parent</artifactId>
9-
<version>1.2.0</version>
9+
<version>1.3.0</version>
1010
</parent>
1111

1212
<artifactId>weixin-java-common</artifactId>

weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxConsts.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ public class WxConsts {
2929
public static final String CUSTOM_MSG_MUSIC = "music";
3030
public static final String CUSTOM_MSG_NEWS = "news";
3131
public static final String CUSTOM_MSG_FILE = "file";
32+
public static final String CUSTOM_MSG_TRANSFER_CUSTOMER_SERVICE = "transfer_customer_service";
3233

3334
///////////////////////
3435
// 群发消息的消息类型

weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/WxJsapiSignature.java

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,10 @@
66
* jspai signature
77
*/
88
public class WxJsapiSignature implements Serializable {
9-
9+
private String appid;
10+
1011
private String noncestr;
1112

12-
private String jsapiTicket;
13-
1413
private long timestamp;
1514

1615
private String url;
@@ -33,14 +32,6 @@ public void setNoncestr(String noncestr) {
3332
this.noncestr = noncestr;
3433
}
3534

36-
public String getJsapiTicket() {
37-
return jsapiTicket;
38-
}
39-
40-
public void setJsapiTicket(String jsapiTicket) {
41-
this.jsapiTicket = jsapiTicket;
42-
}
43-
4435
public long getTimestamp() {
4536
return timestamp;
4637
}
@@ -57,4 +48,12 @@ public void setUrl(String url) {
5748
this.url = url;
5849
}
5950

51+
public String getAppid() {
52+
return appid;
53+
}
54+
55+
public void setAppid(String appid) {
56+
this.appid = appid;
57+
}
58+
6059
}

weixin-java-common/src/main/java/me/chanjar/weixin/common/bean/result/WxError.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public static WxError fromJson(String json) {
4949

5050
@Override
5151
public String toString() {
52-
return "微信错误 errcode=" + errorCode + ", errmsg=" + errorMsg + "\njson:" + json;
52+
return "微信错误: errcode=" + errorCode + ", errmsg=" + errorMsg + "\njson:" + json;
5353
}
5454

5555
}

weixin-java-cp/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<parent>
77
<groupId>me.chanjar</groupId>
88
<artifactId>weixin-java-parent</artifactId>
9-
<version>1.2.0</version>
9+
<version>1.3.0</version>
1010
</parent>
1111

1212
<artifactId>weixin-java-cp</artifactId>

weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpService.java

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -408,7 +408,7 @@ WxMediaUploadResult mediaUpload(String mediaType, String fileType, InputStream i
408408
* </pre>
409409
* @param redirectUri
410410
* @param state
411-
* @return code
411+
* @return url
412412
*/
413413
String oauth2buildAuthorizationUrl(String redirectUri, String state);
414414

@@ -556,4 +556,26 @@ WxMediaUploadResult mediaUpload(String mediaType, String fileType, InputStream i
556556
* @param sessionManager
557557
*/
558558
void setSessionManager(WxSessionManager sessionManager);
559+
560+
/**
561+
* 上传部门列表覆盖企业号上的部门信息
562+
* @param mediaId
563+
* @throws WxErrorException
564+
*/
565+
String replaceParty(String mediaId) throws WxErrorException;
566+
567+
/**
568+
* 上传用户列表覆盖企业号上的用户信息
569+
* @param mediaId
570+
* @throws WxErrorException
571+
*/
572+
String replaceUser(String mediaId) throws WxErrorException;
573+
574+
/**
575+
* 获取异步任务结果
576+
* @param joinId
577+
* @return
578+
* @throws WxErrorException
579+
*/
580+
String getTaskResult(String joinId) throws WxErrorException;
559581
}

weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpServiceImpl.java

Lines changed: 48 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
package me.chanjar.weixin.cp.api;
22

3-
import com.google.gson.JsonArray;
4-
import com.google.gson.JsonElement;
5-
import com.google.gson.JsonObject;
6-
import com.google.gson.JsonPrimitive;
7-
import com.google.gson.internal.Streams;
8-
import com.google.gson.reflect.TypeToken;
9-
import com.google.gson.stream.JsonReader;
10-
import com.sun.media.sound.SoftTuning;
3+
import java.io.File;
4+
import java.io.IOException;
5+
import java.io.InputStream;
6+
import java.io.StringReader;
7+
import java.math.BigDecimal;
8+
import java.security.NoSuchAlgorithmException;
9+
import java.util.List;
10+
import java.util.UUID;
11+
1112
import me.chanjar.weixin.common.bean.WxAccessToken;
1213
import me.chanjar.weixin.common.bean.WxJsapiSignature;
1314
import me.chanjar.weixin.common.bean.WxMenu;
@@ -21,13 +22,19 @@
2122
import me.chanjar.weixin.common.util.StringUtils;
2223
import me.chanjar.weixin.common.util.crypto.SHA1;
2324
import me.chanjar.weixin.common.util.fs.FileUtils;
24-
import me.chanjar.weixin.common.util.http.*;
25+
import me.chanjar.weixin.common.util.http.MediaDownloadRequestExecutor;
26+
import me.chanjar.weixin.common.util.http.MediaUploadRequestExecutor;
27+
import me.chanjar.weixin.common.util.http.RequestExecutor;
28+
import me.chanjar.weixin.common.util.http.SimpleGetRequestExecutor;
29+
import me.chanjar.weixin.common.util.http.SimplePostRequestExecutor;
30+
import me.chanjar.weixin.common.util.http.URIUtil;
2531
import me.chanjar.weixin.common.util.json.GsonHelper;
2632
import me.chanjar.weixin.cp.bean.WxCpDepart;
2733
import me.chanjar.weixin.cp.bean.WxCpMessage;
2834
import me.chanjar.weixin.cp.bean.WxCpTag;
2935
import me.chanjar.weixin.cp.bean.WxCpUser;
3036
import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;
37+
3138
import org.apache.http.HttpHost;
3239
import org.apache.http.auth.AuthScope;
3340
import org.apache.http.auth.UsernamePasswordCredentials;
@@ -43,14 +50,13 @@
4350
import org.slf4j.Logger;
4451
import org.slf4j.LoggerFactory;
4552

46-
import java.io.File;
47-
import java.io.IOException;
48-
import java.io.InputStream;
49-
import java.io.StringReader;
50-
import java.math.BigDecimal;
51-
import java.security.NoSuchAlgorithmException;
52-
import java.util.List;
53-
import java.util.UUID;
53+
import com.google.gson.JsonArray;
54+
import com.google.gson.JsonElement;
55+
import com.google.gson.JsonObject;
56+
import com.google.gson.JsonPrimitive;
57+
import com.google.gson.internal.Streams;
58+
import com.google.gson.reflect.TypeToken;
59+
import com.google.gson.stream.JsonReader;
5460

5561
public class WxCpServiceImpl implements WxCpService {
5662

@@ -243,7 +249,6 @@ public WxMediaUploadResult mediaUpload(String mediaType, File file) throws WxErr
243249

244250
public File mediaDownload(String media_id) throws WxErrorException {
245251
String url = "https://qyapi.weixin.qq.com/cgi-bin/media/get";
246-
247252
return execute(new MediaDownloadRequestExecutor(wxCpConfigStorage.getTmpDirFile()), url, "media_id=" + media_id);
248253
}
249254

@@ -551,6 +556,9 @@ public <T, E> T execute(RequestExecutor<T, E> executor, String uri, E data) thro
551556
}
552557

553558
protected <T, E> T executeInternal(RequestExecutor<T, E> executor, String uri, E data) throws WxErrorException {
559+
if (uri.indexOf("access_token=") != -1) {
560+
throw new IllegalArgumentException("uri参数中不允许有access_token: " + uri);
561+
}
554562
String accessToken = getAccessToken(false);
555563

556564
String uriWithAccessToken = uri;
@@ -647,6 +655,28 @@ public void setSessionManager(WxSessionManager sessionManager) {
647655
this.sessionManager = sessionManager;
648656
}
649657

658+
@Override
659+
public String replaceParty(String mediaId) throws WxErrorException {
660+
String url = "https://qyapi.weixin.qq.com/cgi-bin/batch/replaceparty";
661+
JsonObject jsonObject = new JsonObject();
662+
jsonObject.addProperty("media_id", mediaId);
663+
return post(url, jsonObject.toString());
664+
}
665+
666+
@Override
667+
public String replaceUser(String mediaId) throws WxErrorException {
668+
String url = "https://qyapi.weixin.qq.com/cgi-bin/batch/replaceuser";
669+
JsonObject jsonObject = new JsonObject();
670+
jsonObject.addProperty("media_id", mediaId);
671+
return post(url, jsonObject.toString());
672+
}
673+
674+
@Override
675+
public String getTaskResult(String joinId) throws WxErrorException {
676+
String url = "https://qyapi.weixin.qq.com/cgi-bin/batch/getresult?jobid="+joinId;
677+
return get(url, null);
678+
}
679+
650680
public File getTmpDirFile() {
651681
return tmpDirFile;
652682
}

weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/WxCpUser.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ public class WxCpUser implements Serializable {
2424
private String weiXinId;
2525
private String avatar;
2626
private Integer status;
27+
private Integer enable;
2728
private final List<Attr> extAttrs = new ArrayList<Attr>();
2829

2930
public String getUserId() {
@@ -114,6 +115,14 @@ public void setStatus(Integer status) {
114115
this.status = status;
115116
}
116117

118+
public Integer getEnable() {
119+
return enable;
120+
}
121+
122+
public void setEnable(Integer enable) {
123+
this.enable = enable;
124+
}
125+
117126
public void addExtAttr(String name, String value) {
118127
this.extAttrs.add(new Attr(name, value));
119128
}

0 commit comments

Comments
 (0)