mirror of
https://gitee.com/binary/weixin-java-tools.git
synced 2025-04-05 17:38:05 +08:00
🎨 #2851【公众号】群发消息支持多图片群发
This commit is contained in:
parent
62490c77b6
commit
512975fb86
@ -223,6 +223,7 @@ public class WxConsts {
|
||||
public static final String TEXT = "text";
|
||||
public static final String VOICE = "voice";
|
||||
public static final String IMAGE = "image";
|
||||
public static final String IMAGES = "images";
|
||||
public static final String MPVIDEO = "mpvideo";
|
||||
}
|
||||
|
||||
|
@ -36,6 +36,10 @@ public class WxMpMassOpenIdsMessage implements Serializable {
|
||||
private String msgType;
|
||||
private String content;
|
||||
private String mediaId;
|
||||
/**
|
||||
* 图片列表
|
||||
*/
|
||||
private List<String> mediaIds;
|
||||
/**
|
||||
* 文章被判定为转载时,是否继续进行群发操作。
|
||||
*/
|
||||
|
@ -5,6 +5,7 @@ import me.chanjar.weixin.common.api.WxConsts;
|
||||
import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 按标签群发的消息.
|
||||
@ -34,6 +35,10 @@ public class WxMpMassTagMessage implements Serializable {
|
||||
private String msgType;
|
||||
private String content;
|
||||
private String mediaId;
|
||||
/**
|
||||
* 图片列表
|
||||
*/
|
||||
private List<String> mediaIds;
|
||||
/**
|
||||
* 是否群发给所有用户.
|
||||
*/
|
||||
|
@ -1,11 +1,13 @@
|
||||
package me.chanjar.weixin.mp.util.json;
|
||||
|
||||
import com.google.gson.*;
|
||||
|
||||
import me.chanjar.weixin.common.api.WxConsts;
|
||||
import me.chanjar.weixin.mp.bean.WxMpMassOpenIdsMessage;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author someone
|
||||
@ -39,8 +41,17 @@ public class WxMpMassOpenIdsMessageGsonAdapter implements JsonSerializer<WxMpMas
|
||||
}
|
||||
if (WxConsts.MassMsgType.IMAGE.equals(message.getMsgType())) {
|
||||
JsonObject sub = new JsonObject();
|
||||
sub.addProperty("media_id", message.getMediaId());
|
||||
messageJson.add(WxConsts.MassMsgType.IMAGE, sub);
|
||||
List<String> mediaIds = message.getMediaIds();
|
||||
if (mediaIds != null && !mediaIds.isEmpty() ) {
|
||||
JsonArray json = new JsonArray();
|
||||
mediaIds.forEach(json::add);
|
||||
sub.add("media_ids", json);
|
||||
messageJson.add(WxConsts.MassMsgType.IMAGES, sub);
|
||||
} else {
|
||||
String mediaId = message.getMediaId();
|
||||
sub.addProperty("media_id", mediaId);
|
||||
messageJson.add(WxConsts.MassMsgType.IMAGE, sub);
|
||||
}
|
||||
}
|
||||
if (WxConsts.MassMsgType.MPVIDEO.equals(message.getMsgType())) {
|
||||
JsonObject sub = new JsonObject();
|
||||
@ -64,4 +75,7 @@ public class WxMpMassOpenIdsMessageGsonAdapter implements JsonSerializer<WxMpMas
|
||||
return messageJson;
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -1,14 +1,13 @@
|
||||
package me.chanjar.weixin.mp.util.json;
|
||||
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.JsonSerializationContext;
|
||||
import com.google.gson.JsonSerializer;
|
||||
import com.google.gson.*;
|
||||
|
||||
import me.chanjar.weixin.common.api.WxConsts;
|
||||
import me.chanjar.weixin.mp.bean.WxMpMassTagMessage;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 群发消息json转换适配器.
|
||||
@ -47,8 +46,17 @@ public class WxMpMassTagMessageGsonAdapter implements JsonSerializer<WxMpMassTag
|
||||
}
|
||||
if (WxConsts.MassMsgType.IMAGE.equals(message.getMsgType())) {
|
||||
JsonObject sub = new JsonObject();
|
||||
sub.addProperty("media_id", message.getMediaId());
|
||||
messageJson.add(WxConsts.MassMsgType.IMAGE, sub);
|
||||
List<String> mediaIds = message.getMediaIds();
|
||||
if (mediaIds != null && !mediaIds.isEmpty() ) {
|
||||
JsonArray json = new JsonArray();
|
||||
mediaIds.forEach(json::add);
|
||||
sub.add("media_ids", json);
|
||||
messageJson.add(WxConsts.MassMsgType.IMAGES, sub);
|
||||
} else {
|
||||
String mediaId = message.getMediaId();
|
||||
sub.addProperty("media_id", mediaId);
|
||||
messageJson.add(WxConsts.MassMsgType.IMAGE, sub);
|
||||
}
|
||||
}
|
||||
if (WxConsts.MassMsgType.MPVIDEO.equals(message.getMsgType())) {
|
||||
JsonObject sub = new JsonObject();
|
||||
|
@ -1,6 +1,7 @@
|
||||
package me.chanjar.weixin.mp.api.impl;
|
||||
|
||||
import com.google.inject.Inject;
|
||||
|
||||
import me.chanjar.weixin.common.api.WxConsts;
|
||||
import me.chanjar.weixin.common.bean.result.WxMediaUploadResult;
|
||||
import me.chanjar.weixin.common.error.WxErrorException;
|
||||
@ -21,6 +22,8 @@ import org.testng.annotations.Test;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import static org.testng.Assert.assertNotNull;
|
||||
|
||||
@ -38,7 +41,7 @@ public class WxMpMassMessageServiceImplTest {
|
||||
@Test
|
||||
public void testTextMassOpenIdsMessageSend() throws WxErrorException {
|
||||
// 发送群发消息
|
||||
TestConfigStorage configProvider = (TestConfigStorage) this.wxService .getWxMpConfigStorage();
|
||||
TestConfigStorage configProvider = (TestConfigStorage) this.wxService.getWxMpConfigStorage();
|
||||
WxMpMassOpenIdsMessage massMessage = new WxMpMassOpenIdsMessage();
|
||||
massMessage.setMsgType(WxConsts.MassMsgType.TEXT);
|
||||
massMessage.setContent("测试群发消息\n欢迎欢迎\n换行测试\n超链接:<a href=\"http://www.baidu.com\">Hello World</a>");
|
||||
@ -63,6 +66,30 @@ public class WxMpMassMessageServiceImplTest {
|
||||
assertNotNull(massResult.getMsgId());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testImagesMassOpenIdsMessageSend() throws WxErrorException {
|
||||
// 发送群发消息
|
||||
List<String> massMsg = new ArrayList<>();
|
||||
for (int i = 0; i < 2; i++) {
|
||||
try (InputStream inputStream = ClassLoader
|
||||
.getSystemResourceAsStream(i + ".jpeg")) {
|
||||
WxMediaUploadResult uploadMediaRes = this.wxService.getMaterialService().mediaUpload(WxConsts.MediaFileType.IMAGE, TestConstants.FILE_JPG, inputStream);
|
||||
assertNotNull(uploadMediaRes);
|
||||
assertNotNull(uploadMediaRes.getMediaId());
|
||||
massMsg.add(uploadMediaRes.getMediaId());
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
WxMpMassTagMessage massMessage = new WxMpMassTagMessage();
|
||||
massMessage.setMsgType(WxConsts.MassMsgType.IMAGE);
|
||||
massMessage.setMediaIds(new ArrayList<>(massMsg));
|
||||
massMessage.setSendAll(true);
|
||||
WxMpMassSendResult massResult = this.wxService.getMassMessageService().massGroupMessageSend(massMessage);
|
||||
assertNotNull(massResult);
|
||||
assertNotNull(massResult.getMsgId());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTextMassGroupMessageSend() throws WxErrorException {
|
||||
WxMpMassTagMessage massMessage = new WxMpMassTagMessage();
|
||||
@ -77,7 +104,7 @@ public class WxMpMassMessageServiceImplTest {
|
||||
}
|
||||
|
||||
@Test(dataProvider = "massMessages")
|
||||
public void testMediaMassGroupMessageSend(String massMsgType, String mediaId) throws WxErrorException {
|
||||
public void testMediaMassGroupMessageSend(String massMsgType, String mediaId) throws WxErrorException {
|
||||
WxMpMassTagMessage massMessage = new WxMpMassTagMessage();
|
||||
massMessage.setMsgType(massMsgType);
|
||||
massMessage.setMediaId(mediaId);
|
||||
@ -123,7 +150,8 @@ public class WxMpMassMessageServiceImplTest {
|
||||
.mediaUpload(WxConsts.MediaFileType.IMAGE, TestConstants.FILE_JPG, inputStream);
|
||||
assertNotNull(uploadMediaRes);
|
||||
assertNotNull(uploadMediaRes.getMediaId());
|
||||
messages[1] = new Object[]{WxConsts.MassMsgType.IMAGE, uploadMediaRes.getMediaId()};
|
||||
messages[1] = new Object[]{WxConsts.MassMsgType.IMAGE, uploadMediaRes.getMediaId()
|
||||
};
|
||||
}
|
||||
|
||||
/*
|
||||
|
BIN
weixin-java-mp/src/test/resources/0.jpeg
Normal file
BIN
weixin-java-mp/src/test/resources/0.jpeg
Normal file
Binary file not shown.
After Width: | Height: | Size: 60 KiB |
BIN
weixin-java-mp/src/test/resources/1.jpeg
Normal file
BIN
weixin-java-mp/src/test/resources/1.jpeg
Normal file
Binary file not shown.
After Width: | Height: | Size: 75 KiB |
Loading…
Reference in New Issue
Block a user