Browse Source

添加对客服消息发送(点击跳转到图文消息页面) 图文消息的支持 #67

master
Binary Wang 8 years ago
parent
commit
b23b76457c
7 changed files with 216 additions and 130 deletions
  1. +10
    -9
      weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxConsts.java
  2. +5
    -9
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpMaterialNews.java
  3. +33
    -0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/custombuilder/MpNewsBuilder.java
  4. +110
    -63
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/WxMpKefuMessage.java
  5. +6
    -0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMpKefuMessageGsonAdapter.java
  6. +22
    -19
      weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpKefuServiceImplTest.java
  7. +30
    -30
      weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpMaterialServiceImplTest.java

+ 10
- 9
weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxConsts.java View File

@@ -23,14 +23,15 @@ public class WxConsts {
/////////////////////// ///////////////////////
// 主动发送消息(即客服消息)的消息类型 // 主动发送消息(即客服消息)的消息类型
/////////////////////// ///////////////////////
public static final String CUSTOM_MSG_TEXT = "text";
public static final String CUSTOM_MSG_IMAGE = "image";
public static final String CUSTOM_MSG_VOICE = "voice";
public static final String CUSTOM_MSG_VIDEO = "video";
public static final String CUSTOM_MSG_MUSIC = "music";
public static final String CUSTOM_MSG_NEWS = "news";
public static final String CUSTOM_MSG_FILE = "file";
public static final String CUSTOM_MSG_WXCARD = "wxcard";
public static final String CUSTOM_MSG_TEXT = "text";//文本消息
public static final String CUSTOM_MSG_IMAGE = "image";//图片消息
public static final String CUSTOM_MSG_VOICE = "voice";//语音消息
public static final String CUSTOM_MSG_VIDEO = "video";//视频消息
public static final String CUSTOM_MSG_MUSIC = "music";//音乐消息
public static final String CUSTOM_MSG_NEWS = "news";//图文消息(点击跳转到外链)
public static final String CUSTOM_MSG_MPNEWS = "mpnews";//图文消息(点击跳转到图文消息页面)
public static final String CUSTOM_MSG_FILE = "file";//发送文件(CP专用)
public static final String CUSTOM_MSG_WXCARD = "wxcard";//卡券消息
public static final String CUSTOM_MSG_TRANSFER_CUSTOMER_SERVICE = "transfer_customer_service"; public static final String CUSTOM_MSG_TRANSFER_CUSTOMER_SERVICE = "transfer_customer_service";
public static final String CUSTOM_MSG_SAFE_NO = "0"; public static final String CUSTOM_MSG_SAFE_NO = "0";
public static final String CUSTOM_MSG_SAFE_YES = "1"; public static final String CUSTOM_MSG_SAFE_YES = "1";
@@ -193,7 +194,7 @@ public class WxConsts {
* 弹出授权页面,可通过openid拿到昵称、性别、所在地。并且,即使在未关注的情况下,只要用户授权,也能获取其信息 * 弹出授权页面,可通过openid拿到昵称、性别、所在地。并且,即使在未关注的情况下,只要用户授权,也能获取其信息
*/ */
public static final String OAUTH2_SCOPE_USER_INFO = "snsapi_userinfo"; public static final String OAUTH2_SCOPE_USER_INFO = "snsapi_userinfo";
/** /**
* 网页应用登录授权作用域 snsapi_login * 网页应用登录授权作用域 snsapi_login
*/ */


+ 5
- 9
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpMaterialNews.java View File

@@ -1,17 +1,16 @@
package me.chanjar.weixin.mp.bean; package me.chanjar.weixin.mp.bean;


import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder; import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;


import java.io.Serializable; import java.io.Serializable;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;


public class WxMpMaterialNews implements Serializable { public class WxMpMaterialNews implements Serializable {

/**
*
*/
private static final long serialVersionUID = -3283203652013494976L; private static final long serialVersionUID = -3283203652013494976L;

private List<WxMpMaterialNewsArticle> articles = new ArrayList<>(); private List<WxMpMaterialNewsArticle> articles = new ArrayList<>();


public List<WxMpMaterialNewsArticle> getArticles() { public List<WxMpMaterialNewsArticle> getArticles() {
@@ -81,7 +80,6 @@ public class WxMpMaterialNews implements Serializable {


/** /**
* 点击图文消息跳转链接 * 点击图文消息跳转链接
* @return
*/ */
private String url; private String url;


@@ -159,14 +157,12 @@ public class WxMpMaterialNews implements Serializable {


@Override @Override
public String toString() { public String toString() {
return "WxMpMassNewsArticle [" + "thumbMediaId=" + this.thumbMediaId + "thumbUrl=" + this.thumbUrl + ", author=" + this.author + ", title=" + this.title +
", contentSourceUrl=" + this.contentSourceUrl + ", content=" + this.content + ", digest=" + this.digest +
", showCoverPic=" + this.showCoverPic +", url=" + this.url + "]";
return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE);
} }
} }


@Override @Override
public String toString() { public String toString() {
return "WxMpMaterialNews [" + "articles=" + this.articles + "]";
return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE);
} }
} }

+ 33
- 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/custombuilder/MpNewsBuilder.java View File

@@ -0,0 +1,33 @@
package me.chanjar.weixin.mp.bean.custombuilder;

import me.chanjar.weixin.common.api.WxConsts;
import me.chanjar.weixin.mp.bean.kefu.WxMpKefuMessage;

/**
* 图文消息builder
* <pre>
* 用法:
* WxMpKefuMessage m = WxMpKefuMessage.NEWS().mediaId("xxxxx").toUser(...).build();
* </pre>
* @author Binary Wang
*
*/
public final class MpNewsBuilder extends BaseBuilder<MpNewsBuilder> {
private String mediaId;

public MpNewsBuilder() {
this.msgType = WxConsts.CUSTOM_MSG_MPNEWS;
}

public MpNewsBuilder mediaId(String mediaId) {
this.mediaId = mediaId;
return this;
}

@Override
public WxMpKefuMessage build() {
WxMpKefuMessage m = super.build();
m.setMpNewsMediaId(this.mediaId);
return m;
}
}

+ 110
- 63
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/WxMpKefuMessage.java View File

@@ -1,16 +1,23 @@
package me.chanjar.weixin.mp.bean.kefu; package me.chanjar.weixin.mp.bean.kefu;


import me.chanjar.weixin.mp.bean.custombuilder.*;
import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;

import java.io.Serializable; import java.io.Serializable;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;


import me.chanjar.weixin.mp.bean.custombuilder.ImageBuilder;
import me.chanjar.weixin.mp.bean.custombuilder.MpNewsBuilder;
import me.chanjar.weixin.mp.bean.custombuilder.MusicBuilder;
import me.chanjar.weixin.mp.bean.custombuilder.NewsBuilder;
import me.chanjar.weixin.mp.bean.custombuilder.TextBuilder;
import me.chanjar.weixin.mp.bean.custombuilder.VideoBuilder;
import me.chanjar.weixin.mp.bean.custombuilder.VoiceBuilder;
import me.chanjar.weixin.mp.bean.custombuilder.WxCardBuilder;
import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;

/** /**
* 客服消息 * 客服消息
* @author chanjarster
* *
* @author chanjarster
*/ */
public class WxMpKefuMessage implements Serializable { public class WxMpKefuMessage implements Serializable {
private static final long serialVersionUID = -9196732086954365246L; private static final long serialVersionUID = -9196732086954365246L;
@@ -26,18 +33,85 @@ public class WxMpKefuMessage implements Serializable {
private String hqMusicUrl; private String hqMusicUrl;
private String kfAccount; private String kfAccount;
private String cardId; private String cardId;
private String mpNewsMediaId;
private List<WxArticle> articles = new ArrayList<>(); private List<WxArticle> articles = new ArrayList<>();


/**
* 获得文本消息builder
*/
public static TextBuilder TEXT() {
return new TextBuilder();
}

/**
* 获得图片消息builder
*/
public static ImageBuilder IMAGE() {
return new ImageBuilder();
}

/**
* 获得语音消息builder
*/
public static VoiceBuilder VOICE() {
return new VoiceBuilder();
}

/**
* 获得视频消息builder
*/
public static VideoBuilder VIDEO() {
return new VideoBuilder();
}

/**
* 获得音乐消息builder
*/
public static MusicBuilder MUSIC() {
return new MusicBuilder();
}

/**
* 获得图文消息(点击跳转到外链)builder
*/
public static NewsBuilder NEWS() {
return new NewsBuilder();
}

/**
* 获得图文消息(点击跳转到图文消息页面)builder
*/
public static MpNewsBuilder MPNEWS() {
return new MpNewsBuilder();
}

/**
* 获得卡券消息builder
*/
public static WxCardBuilder WXCARD() {
return new WxCardBuilder();
}

public String getToUser() { public String getToUser() {
return this.toUser; return this.toUser;
} }

public void setToUser(String toUser) { public void setToUser(String toUser) {
this.toUser = toUser; this.toUser = toUser;
} }

public String getMsgType() { public String getMsgType() {
return this.msgType; return this.msgType;
} }


public String getMpNewsMediaId() {
return this.mpNewsMediaId;
}

public void setMpNewsMediaId(String mpNewsMediaId) {
this.mpNewsMediaId = mpNewsMediaId;
}

/** /**
* <pre> * <pre>
* 请使用 * 请使用
@@ -47,52 +121,68 @@ public class WxMpKefuMessage implements Serializable {
* {@link me.chanjar.weixin.common.api.WxConsts#CUSTOM_MSG_MUSIC} * {@link me.chanjar.weixin.common.api.WxConsts#CUSTOM_MSG_MUSIC}
* {@link me.chanjar.weixin.common.api.WxConsts#CUSTOM_MSG_VIDEO} * {@link me.chanjar.weixin.common.api.WxConsts#CUSTOM_MSG_VIDEO}
* {@link me.chanjar.weixin.common.api.WxConsts#CUSTOM_MSG_NEWS} * {@link me.chanjar.weixin.common.api.WxConsts#CUSTOM_MSG_NEWS}
* {@link me.chanjar.weixin.common.api.WxConsts#CUSTOM_MSG_MPNEWS}
* {@link me.chanjar.weixin.common.api.WxConsts#CUSTOM_MSG_WXCARD} * {@link me.chanjar.weixin.common.api.WxConsts#CUSTOM_MSG_WXCARD}
* </pre> * </pre>
*
* @param msgType * @param msgType
*/ */
public void setMsgType(String msgType) { public void setMsgType(String msgType) {
this.msgType = msgType; this.msgType = msgType;
} }

public String getContent() { public String getContent() {
return this.content; return this.content;
} }

public void setContent(String content) { public void setContent(String content) {
this.content = content; this.content = content;
} }

public String getMediaId() { public String getMediaId() {
return this.mediaId; return this.mediaId;
} }

public void setMediaId(String mediaId) { public void setMediaId(String mediaId) {
this.mediaId = mediaId; this.mediaId = mediaId;
} }

public String getThumbMediaId() { public String getThumbMediaId() {
return this.thumbMediaId; return this.thumbMediaId;
} }

public void setThumbMediaId(String thumbMediaId) { public void setThumbMediaId(String thumbMediaId) {
this.thumbMediaId = thumbMediaId; this.thumbMediaId = thumbMediaId;
} }

public String getTitle() { public String getTitle() {
return this.title; return this.title;
} }

public void setTitle(String title) { public void setTitle(String title) {
this.title = title; this.title = title;
} }

public String getDescription() { public String getDescription() {
return this.description; return this.description;
} }

public void setDescription(String description) { public void setDescription(String description) {
this.description = description; this.description = description;
} }

public String getMusicUrl() { public String getMusicUrl() {
return this.musicUrl; return this.musicUrl;
} }

public void setMusicUrl(String musicUrl) { public void setMusicUrl(String musicUrl) {
this.musicUrl = musicUrl; this.musicUrl = musicUrl;
} }

public String getHqMusicUrl() { public String getHqMusicUrl() {
return this.hqMusicUrl; return this.hqMusicUrl;
} }

public void setHqMusicUrl(String hqMusicUrl) { public void setHqMusicUrl(String hqMusicUrl) {
this.hqMusicUrl = hqMusicUrl; this.hqMusicUrl = hqMusicUrl;
} }
@@ -108,6 +198,7 @@ public class WxMpKefuMessage implements Serializable {
public List<WxArticle> getArticles() { public List<WxArticle> getArticles() {
return this.articles; return this.articles;
} }

public void setArticles(List<WxArticle> articles) { public void setArticles(List<WxArticle> articles) {
this.articles = articles; this.articles = articles;
} }
@@ -116,8 +207,15 @@ public class WxMpKefuMessage implements Serializable {
return WxMpGsonBuilder.INSTANCE.create().toJson(this); return WxMpGsonBuilder.INSTANCE.create().toJson(this);
} }


public static class WxArticle {
public String getKfAccount() {
return this.kfAccount;
}


public void setKfAccount(String kfAccount) {
this.kfAccount = kfAccount;
}

public static class WxArticle {
private String title; private String title;
private String description; private String description;
private String url; private String url;
@@ -126,85 +224,34 @@ public class WxMpKefuMessage implements Serializable {
public String getTitle() { public String getTitle() {
return this.title; return this.title;
} }

public void setTitle(String title) { public void setTitle(String title) {
this.title = title; this.title = title;
} }

public String getDescription() { public String getDescription() {
return this.description; return this.description;
} }

public void setDescription(String description) { public void setDescription(String description) {
this.description = description; this.description = description;
} }

public String getUrl() { public String getUrl() {
return this.url; return this.url;
} }

public void setUrl(String url) { public void setUrl(String url) {
this.url = url; this.url = url;
} }

public String getPicUrl() { public String getPicUrl() {
return this.picUrl; return this.picUrl;
} }

public void setPicUrl(String picUrl) { public void setPicUrl(String picUrl) {
this.picUrl = picUrl; this.picUrl = picUrl;
} }


} }

/**
* 获得文本消息builder
*/
public static TextBuilder TEXT() {
return new TextBuilder();
}

/**
* 获得图片消息builder
*/
public static ImageBuilder IMAGE() {
return new ImageBuilder();
}

/**
* 获得语音消息builder
*/
public static VoiceBuilder VOICE() {
return new VoiceBuilder();
}

/**
* 获得视频消息builder
*/
public static VideoBuilder VIDEO() {
return new VideoBuilder();
}

/**
* 获得音乐消息builder
*/
public static MusicBuilder MUSIC() {
return new MusicBuilder();
}

/**
* 获得图文消息builder
*/
public static NewsBuilder NEWS() {
return new NewsBuilder();
}


/**
* 获得卡券消息builder
*/
public static WxCardBuilder WXCARD() {
return new WxCardBuilder();
}

public String getKfAccount() {
return this.kfAccount;
}

public void setKfAccount(String kfAccount) {
this.kfAccount = kfAccount;
}
} }

+ 6
- 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMpKefuMessageGsonAdapter.java View File

@@ -75,6 +75,12 @@ public class WxMpKefuMessageGsonAdapter implements JsonSerializer<WxMpKefuMessag
messageJson.add("news", newsJsonObject); messageJson.add("news", newsJsonObject);
} }


if (WxConsts.CUSTOM_MSG_MPNEWS.equals(message.getMsgType())) {
JsonObject json = new JsonObject();
json.addProperty("media_id", message.getMpNewsMediaId());
messageJson.add("mpnews", json);
}

if (WxConsts.CUSTOM_MSG_WXCARD.equals(message.getMsgType())) { if (WxConsts.CUSTOM_MSG_WXCARD.equals(message.getMsgType())) {
JsonObject wxcard = new JsonObject(); JsonObject wxcard = new JsonObject();
wxcard.addProperty("card_id", message.getCardId()); wxcard.addProperty("card_id", message.getCardId());


+ 22
- 19
weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpKefuServiceImplTest.java View File

@@ -1,29 +1,21 @@
package me.chanjar.weixin.mp.api.impl; package me.chanjar.weixin.mp.api.impl;


import java.io.File;
import java.util.Date;

import com.google.inject.Inject;
import me.chanjar.weixin.common.api.WxConsts;
import me.chanjar.weixin.common.exception.WxErrorException;
import me.chanjar.weixin.mp.api.ApiTestModule;
import me.chanjar.weixin.mp.api.WxXmlMpInMemoryConfigStorage;
import me.chanjar.weixin.mp.bean.kefu.WxMpKefuMessage; import me.chanjar.weixin.mp.bean.kefu.WxMpKefuMessage;
import me.chanjar.weixin.mp.bean.kefu.request.WxMpKfAccountRequest;
import me.chanjar.weixin.mp.bean.kefu.result.*;
import org.joda.time.DateTime; import org.joda.time.DateTime;
import org.testng.Assert; import org.testng.Assert;
import org.testng.annotations.DataProvider; import org.testng.annotations.DataProvider;
import org.testng.annotations.Guice; import org.testng.annotations.Guice;
import org.testng.annotations.Test; import org.testng.annotations.Test;


import com.google.inject.Inject;

import me.chanjar.weixin.common.api.WxConsts;
import me.chanjar.weixin.common.exception.WxErrorException;
import me.chanjar.weixin.mp.api.ApiTestModule;
import me.chanjar.weixin.mp.api.WxXmlMpInMemoryConfigStorage;
import me.chanjar.weixin.mp.bean.kefu.request.WxMpKfAccountRequest;
import me.chanjar.weixin.mp.bean.kefu.result.WxMpKfInfo;
import me.chanjar.weixin.mp.bean.kefu.result.WxMpKfList;
import me.chanjar.weixin.mp.bean.kefu.result.WxMpKfMsgList;
import me.chanjar.weixin.mp.bean.kefu.result.WxMpKfOnlineList;
import me.chanjar.weixin.mp.bean.kefu.result.WxMpKfSessionGetResult;
import me.chanjar.weixin.mp.bean.kefu.result.WxMpKfSessionList;
import me.chanjar.weixin.mp.bean.kefu.result.WxMpKfSessionWaitCaseList;
import java.io.File;
import java.util.Date;


/** /**
* 测试客服相关接口 * 测试客服相关接口
@@ -37,7 +29,18 @@ public class WxMpKefuServiceImplTest {
@Inject @Inject
protected WxMpServiceImpl wxService; protected WxMpServiceImpl wxService;


public void testSendCustomMessage() throws WxErrorException {
public void testSendKefuMpNewsMessage() throws WxErrorException {
WxXmlMpInMemoryConfigStorage configStorage = (WxXmlMpInMemoryConfigStorage) this.wxService
.getWxMpConfigStorage();
WxMpKefuMessage message = new WxMpKefuMessage();
message.setMsgType(WxConsts.CUSTOM_MSG_MPNEWS);
message.setToUser(configStorage.getOpenid());
message.setMpNewsMediaId("52R6dL2FxDpM9N1rCY3sYBqHwq-L7K_lz1sPI71idMg");

this.wxService.getKefuService().sendKefuMessage(message);
}

public void testSendKefuMessage() throws WxErrorException {
WxXmlMpInMemoryConfigStorage configStorage = (WxXmlMpInMemoryConfigStorage) this.wxService WxXmlMpInMemoryConfigStorage configStorage = (WxXmlMpInMemoryConfigStorage) this.wxService
.getWxMpConfigStorage(); .getWxMpConfigStorage();
WxMpKefuMessage message = new WxMpKefuMessage(); WxMpKefuMessage message = new WxMpKefuMessage();
@@ -49,7 +52,7 @@ public class WxMpKefuServiceImplTest {
this.wxService.getKefuService().sendKefuMessage(message); this.wxService.getKefuService().sendKefuMessage(message);
} }


public void testSendCustomMessageWithKfAccount() throws WxErrorException {
public void testSendKefuMessageWithKfAccount() throws WxErrorException {
WxXmlMpInMemoryConfigStorage configStorage = (WxXmlMpInMemoryConfigStorage) this.wxService WxXmlMpInMemoryConfigStorage configStorage = (WxXmlMpInMemoryConfigStorage) this.wxService
.getWxMpConfigStorage(); .getWxMpConfigStorage();
WxMpKefuMessage message = new WxMpKefuMessage(); WxMpKefuMessage message = new WxMpKefuMessage();


+ 30
- 30
weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpMaterialServiceImplTest.java View File

@@ -98,41 +98,40 @@ public class WxMpMaterialServiceImplTest {


@Test(dependsOnMethods = {"testUploadMaterial"}) @Test(dependsOnMethods = {"testUploadMaterial"})
public void testAddNews() throws WxErrorException { public void testAddNews() throws WxErrorException {

// 单图文消息 // 单图文消息
WxMpMaterialNews wxMpMaterialNewsSingle = new WxMpMaterialNews(); WxMpMaterialNews wxMpMaterialNewsSingle = new WxMpMaterialNews();
WxMpMaterialNews.WxMpMaterialNewsArticle mpMaterialNewsArticleSingle = new WxMpMaterialNews.WxMpMaterialNewsArticle();
mpMaterialNewsArticleSingle.setAuthor("author");
mpMaterialNewsArticleSingle.setThumbMediaId(this.thumbMediaId);
mpMaterialNewsArticleSingle.setTitle("single title");
mpMaterialNewsArticleSingle.setContent("single content");
mpMaterialNewsArticleSingle.setContentSourceUrl("content url");
mpMaterialNewsArticleSingle.setShowCoverPic(true);
mpMaterialNewsArticleSingle.setDigest("single news");
wxMpMaterialNewsSingle.addArticle(mpMaterialNewsArticleSingle);
WxMpMaterialNews.WxMpMaterialNewsArticle article = new WxMpMaterialNews.WxMpMaterialNewsArticle();
article.setAuthor("author");
article.setThumbMediaId(this.thumbMediaId);
article.setTitle("single title");
article.setContent("single content");
article.setContentSourceUrl("content url");
article.setShowCoverPic(true);
article.setDigest("single news");
wxMpMaterialNewsSingle.addArticle(article);


// 多图文消息 // 多图文消息
WxMpMaterialNews wxMpMaterialNewsMultiple = new WxMpMaterialNews(); WxMpMaterialNews wxMpMaterialNewsMultiple = new WxMpMaterialNews();
WxMpMaterialNews.WxMpMaterialNewsArticle wxMpMaterialNewsArticleMultiple1 = new WxMpMaterialNews.WxMpMaterialNewsArticle();
wxMpMaterialNewsArticleMultiple1.setAuthor("author1");
wxMpMaterialNewsArticleMultiple1.setThumbMediaId(this.thumbMediaId);
wxMpMaterialNewsArticleMultiple1.setTitle("multi title1");
wxMpMaterialNewsArticleMultiple1.setContent("content 1");
wxMpMaterialNewsArticleMultiple1.setContentSourceUrl("content url");
wxMpMaterialNewsArticleMultiple1.setShowCoverPic(true);
wxMpMaterialNewsArticleMultiple1.setDigest("");
WxMpMaterialNews.WxMpMaterialNewsArticle wxMpMaterialNewsArticleMultiple2 = new WxMpMaterialNews.WxMpMaterialNewsArticle();
wxMpMaterialNewsArticleMultiple2.setAuthor("author2");
wxMpMaterialNewsArticleMultiple2.setThumbMediaId(this.thumbMediaId);
wxMpMaterialNewsArticleMultiple2.setTitle("multi title2");
wxMpMaterialNewsArticleMultiple2.setContent("content 2");
wxMpMaterialNewsArticleMultiple2.setContentSourceUrl("content url");
wxMpMaterialNewsArticleMultiple2.setShowCoverPic(true);
wxMpMaterialNewsArticleMultiple2.setDigest("");
wxMpMaterialNewsMultiple.addArticle(wxMpMaterialNewsArticleMultiple1);
wxMpMaterialNewsMultiple.addArticle(wxMpMaterialNewsArticleMultiple2);
WxMpMaterialNews.WxMpMaterialNewsArticle article1 = new WxMpMaterialNews.WxMpMaterialNewsArticle();
article1.setAuthor("author1");
article1.setThumbMediaId(this.thumbMediaId);
article1.setTitle("multi title1");
article1.setContent("content 1");
article1.setContentSourceUrl("content url");
article1.setShowCoverPic(true);
article1.setDigest("");
WxMpMaterialNews.WxMpMaterialNewsArticle article2 = new WxMpMaterialNews.WxMpMaterialNewsArticle();
article2.setAuthor("author2");
article2.setThumbMediaId(this.thumbMediaId);
article2.setTitle("multi title2");
article2.setContent("content 2");
article2.setContentSourceUrl("content url");
article2.setShowCoverPic(true);
article2.setDigest("");
wxMpMaterialNewsMultiple.addArticle(article1);
wxMpMaterialNewsMultiple.addArticle(article2);


WxMpMaterialUploadResult resSingle = this.wxService.getMaterialService().materialNewsUpload(wxMpMaterialNewsSingle); WxMpMaterialUploadResult resSingle = this.wxService.getMaterialService().materialNewsUpload(wxMpMaterialNewsSingle);
this.singleNewsMediaId = resSingle.getMediaId(); this.singleNewsMediaId = resSingle.getMediaId();
@@ -268,6 +267,7 @@ public class WxMpMaterialServiceImplTest {


// 以下为media接口的测试 // 以下为media接口的测试
private List<String> mediaIdsToDownload = new ArrayList<>(); private List<String> mediaIdsToDownload = new ArrayList<>();

@Test(dataProvider="mediaFiles") @Test(dataProvider="mediaFiles")
public void testUploadMedia(String mediaType, String fileType, String fileName) throws WxErrorException, IOException { public void testUploadMedia(String mediaType, String fileType, String fileName) throws WxErrorException, IOException {
try(InputStream inputStream = ClassLoader.getSystemResourceAsStream(fileName)){ try(InputStream inputStream = ClassLoader.getSystemResourceAsStream(fileName)){


Loading…
Cancel
Save