mirror of
https://gitee.com/binary/weixin-java-tools.git
synced 2025-08-23 13:06:54 +08:00
将模板消息相关接口代码移到单独的service,并作相应重构调整,增加单元测试 for issue #63
This commit is contained in:
parent
6682f5ff28
commit
77db3c2dae
@ -3,19 +3,8 @@ package me.chanjar.weixin.mp.api;
|
|||||||
import me.chanjar.weixin.common.bean.WxJsapiSignature;
|
import me.chanjar.weixin.common.bean.WxJsapiSignature;
|
||||||
import me.chanjar.weixin.common.exception.WxErrorException;
|
import me.chanjar.weixin.common.exception.WxErrorException;
|
||||||
import me.chanjar.weixin.common.util.http.RequestExecutor;
|
import me.chanjar.weixin.common.util.http.RequestExecutor;
|
||||||
import me.chanjar.weixin.mp.bean.WxMpIndustry;
|
import me.chanjar.weixin.mp.bean.*;
|
||||||
import me.chanjar.weixin.mp.bean.WxMpMassTagMessage;
|
import me.chanjar.weixin.mp.bean.result.*;
|
||||||
import me.chanjar.weixin.mp.bean.WxMpMassNews;
|
|
||||||
import me.chanjar.weixin.mp.bean.WxMpMassOpenIdsMessage;
|
|
||||||
import me.chanjar.weixin.mp.bean.WxMpMassPreviewMessage;
|
|
||||||
import me.chanjar.weixin.mp.bean.WxMpMassVideo;
|
|
||||||
import me.chanjar.weixin.mp.bean.WxMpSemanticQuery;
|
|
||||||
import me.chanjar.weixin.mp.bean.WxMpTemplateMessage;
|
|
||||||
import me.chanjar.weixin.mp.bean.result.WxMpMassSendResult;
|
|
||||||
import me.chanjar.weixin.mp.bean.result.WxMpMassUploadResult;
|
|
||||||
import me.chanjar.weixin.mp.bean.result.WxMpOAuth2AccessToken;
|
|
||||||
import me.chanjar.weixin.mp.bean.result.WxMpSemanticQueryResult;
|
|
||||||
import me.chanjar.weixin.mp.bean.result.WxMpUser;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 微信API的Service
|
* 微信API的Service
|
||||||
@ -133,16 +122,6 @@ public interface WxMpService {
|
|||||||
*/
|
*/
|
||||||
String shortUrl(String long_url) throws WxErrorException;
|
String shortUrl(String long_url) throws WxErrorException;
|
||||||
|
|
||||||
/**
|
|
||||||
* <pre>
|
|
||||||
* 发送模板消息
|
|
||||||
* 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=模板消息接口
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @return msgid
|
|
||||||
*/
|
|
||||||
String templateSend(WxMpTemplateMessage templateMessage) throws WxErrorException;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <pre>
|
* <pre>
|
||||||
* 语义查询接口
|
* 语义查询接口
|
||||||
@ -266,27 +245,6 @@ public interface WxMpService {
|
|||||||
*/
|
*/
|
||||||
WxMpMassSendResult massMessagePreview(WxMpMassPreviewMessage wxMpMassPreviewMessage) throws Exception;
|
WxMpMassSendResult massMessagePreview(WxMpMassPreviewMessage wxMpMassPreviewMessage) throws Exception;
|
||||||
|
|
||||||
/**
|
|
||||||
* <pre>
|
|
||||||
* 设置所属行业
|
|
||||||
* 官方文档中暂未告知响应内容
|
|
||||||
* 详情请见:http://mp.weixin.qq.com/wiki/5/6dde9eaa909f83354e0094dc3ad99e05.html#.E8.AE.BE.E7.BD.AE.E6.89.80.E5.B1.9E.E8.A1.8C.E4.B8.9A
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @return JsonObject
|
|
||||||
*/
|
|
||||||
String setIndustry(WxMpIndustry wxMpIndustry) throws WxErrorException;
|
|
||||||
|
|
||||||
/***
|
|
||||||
* <pre>
|
|
||||||
* 获取设置的行业信息
|
|
||||||
* 详情请见:http://mp.weixin.qq.com/wiki/5/6dde9eaa909f83354e0094dc3ad99e05.html#.E8.AE.BE.E7.BD.AE.E6.89.80.E5.B1.9E.E8.A1.8C.E4.B8.9A
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @return wxMpIndustry
|
|
||||||
*/
|
|
||||||
WxMpIndustry getIndustry() throws WxErrorException;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取WxMpConfigStorage 对象
|
* 获取WxMpConfigStorage 对象
|
||||||
*
|
*
|
||||||
@ -370,4 +328,11 @@ public interface WxMpService {
|
|||||||
* @return WxMpStoreService
|
* @return WxMpStoreService
|
||||||
*/
|
*/
|
||||||
WxMpStoreService getStoreService();
|
WxMpStoreService getStoreService();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 返回模板消息相关接口方法的实现类对象,以方便调用其各种接口
|
||||||
|
*
|
||||||
|
* @return WxMpTemplateMsgService
|
||||||
|
*/
|
||||||
|
WxMpTemplateMsgService getTemplateMsgService();
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,49 @@
|
|||||||
|
package me.chanjar.weixin.mp.api;
|
||||||
|
|
||||||
|
import me.chanjar.weixin.common.exception.WxErrorException;
|
||||||
|
import me.chanjar.weixin.mp.bean.WxMpIndustry;
|
||||||
|
import me.chanjar.weixin.mp.bean.WxMpTemplateMessage;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <pre>
|
||||||
|
* 模板消息接口
|
||||||
|
* http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1433751277&token=&lang=zh_CN
|
||||||
|
* Created by Binary Wang on 2016-10-14.
|
||||||
|
* @author miller.lin
|
||||||
|
* @author <a href="https://github.com/binarywang">binarywang(Binary Wang)</a>
|
||||||
|
* </pre>
|
||||||
|
*/
|
||||||
|
public interface WxMpTemplateMsgService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <pre>
|
||||||
|
* 设置所属行业
|
||||||
|
* 官方文档中暂未告知响应内容
|
||||||
|
* 详情请见:http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1433751277&token=&lang=zh_CN
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
* @return 是否成功
|
||||||
|
*/
|
||||||
|
boolean setIndustry(WxMpIndustry wxMpIndustry) throws WxErrorException;
|
||||||
|
|
||||||
|
/***
|
||||||
|
* <pre>
|
||||||
|
* 获取设置的行业信息
|
||||||
|
* 详情请见:http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1433751277&token=&lang=zh_CN
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
* @return wxMpIndustry
|
||||||
|
*/
|
||||||
|
WxMpIndustry getIndustry() throws WxErrorException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <pre>
|
||||||
|
* 发送模板消息
|
||||||
|
* 详情请见: http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1433751277&token=&lang=zh_CN
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
* @return 消息Id
|
||||||
|
*/
|
||||||
|
String sendTemplateMsg(WxMpTemplateMessage templateMessage) throws WxErrorException;
|
||||||
|
|
||||||
|
}
|
@ -69,6 +69,8 @@ public class WxMpServiceImpl implements WxMpService {
|
|||||||
|
|
||||||
private WxMpUserBlacklistService blackListService = new WxMpUserBlacklistServiceImpl(this);
|
private WxMpUserBlacklistService blackListService = new WxMpUserBlacklistServiceImpl(this);
|
||||||
|
|
||||||
|
private WxMpTemplateMsgService templateMsgService = new WxMpTemplateMsgServiceImpl(this);
|
||||||
|
|
||||||
private CloseableHttpClient httpClient;
|
private CloseableHttpClient httpClient;
|
||||||
|
|
||||||
private HttpHost httpProxy;
|
private HttpHost httpProxy;
|
||||||
@ -221,35 +223,6 @@ public class WxMpServiceImpl implements WxMpService {
|
|||||||
return tmpJsonElement.getAsJsonObject().get("short_url").getAsString();
|
return tmpJsonElement.getAsJsonObject().get("short_url").getAsString();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String templateSend(WxMpTemplateMessage templateMessage) throws WxErrorException {
|
|
||||||
String url = "https://api.weixin.qq.com/cgi-bin/message/template/send";
|
|
||||||
String responseContent = this.post(url, templateMessage.toJson());
|
|
||||||
final JsonObject jsonObject = JSON_PARSER.parse(responseContent).getAsJsonObject();
|
|
||||||
if (jsonObject.get("errcode").getAsInt() == 0){
|
|
||||||
return jsonObject.get("msgid").getAsString();
|
|
||||||
}
|
|
||||||
|
|
||||||
throw new WxErrorException(WxError.fromJson(responseContent));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String setIndustry(WxMpIndustry wxMpIndustry) throws WxErrorException {
|
|
||||||
if (null == wxMpIndustry.getPrimaryIndustry() || null == wxMpIndustry.getPrimaryIndustry().getId()
|
|
||||||
|| null == wxMpIndustry.getSecondIndustry() || null == wxMpIndustry.getSecondIndustry().getId()) {
|
|
||||||
throw new IllegalArgumentException("industry id is empty");
|
|
||||||
}
|
|
||||||
String url = "https://api.weixin.qq.com/cgi-bin/template/api_set_industry";
|
|
||||||
return this.post(url, wxMpIndustry.toJson());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public WxMpIndustry getIndustry() throws WxErrorException {
|
|
||||||
String url = "https://api.weixin.qq.com/cgi-bin/template/get_industry";
|
|
||||||
String responseContent = this.get(url, null);
|
|
||||||
return WxMpIndustry.fromJson(responseContent);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public WxMpSemanticQueryResult semanticQuery(WxMpSemanticQuery semanticQuery) throws WxErrorException {
|
public WxMpSemanticQueryResult semanticQuery(WxMpSemanticQuery semanticQuery) throws WxErrorException {
|
||||||
String url = "https://api.weixin.qq.com/semantic/semproxy/search";
|
String url = "https://api.weixin.qq.com/semantic/semproxy/search";
|
||||||
@ -562,4 +535,9 @@ public class WxMpServiceImpl implements WxMpService {
|
|||||||
return this.storeService;
|
return this.storeService;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public WxMpTemplateMsgService getTemplateMsgService() {
|
||||||
|
return this.templateMsgService;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,58 @@
|
|||||||
|
package me.chanjar.weixin.mp.api.impl;
|
||||||
|
|
||||||
|
import com.google.gson.JsonObject;
|
||||||
|
import com.google.gson.JsonParser;
|
||||||
|
import me.chanjar.weixin.common.bean.result.WxError;
|
||||||
|
import me.chanjar.weixin.common.exception.WxErrorException;
|
||||||
|
import me.chanjar.weixin.mp.api.WxMpService;
|
||||||
|
import me.chanjar.weixin.mp.api.WxMpTemplateMsgService;
|
||||||
|
import me.chanjar.weixin.mp.bean.WxMpIndustry;
|
||||||
|
import me.chanjar.weixin.mp.bean.WxMpTemplateMessage;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <pre>
|
||||||
|
* Created by Binary Wang on 2016-10-14.
|
||||||
|
* @author <a href="https://github.com/binarywang">binarywang(Binary Wang)</a>
|
||||||
|
* </pre>
|
||||||
|
*/
|
||||||
|
public class WxMpTemplateMsgServiceImpl implements WxMpTemplateMsgService {
|
||||||
|
public static final String API_URL_PREFIX = "https://api.weixin.qq.com/cgi-bin/template";
|
||||||
|
private static final JsonParser JSON_PARSER = new JsonParser();
|
||||||
|
|
||||||
|
private WxMpService wxMpService;
|
||||||
|
|
||||||
|
public WxMpTemplateMsgServiceImpl(WxMpService wxMpService) {
|
||||||
|
this.wxMpService = wxMpService;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String sendTemplateMsg(WxMpTemplateMessage templateMessage) throws WxErrorException {
|
||||||
|
String url = "https://api.weixin.qq.com/cgi-bin/message/template/send";
|
||||||
|
String responseContent = this.wxMpService.post(url, templateMessage.toJson());
|
||||||
|
final JsonObject jsonObject = JSON_PARSER.parse(responseContent).getAsJsonObject();
|
||||||
|
if (jsonObject.get("errcode").getAsInt() == 0) {
|
||||||
|
return jsonObject.get("msgid").getAsString();
|
||||||
|
}
|
||||||
|
throw new WxErrorException(WxError.fromJson(responseContent));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean setIndustry(WxMpIndustry wxMpIndustry) throws WxErrorException {
|
||||||
|
if (null == wxMpIndustry.getPrimaryIndustry() || null == wxMpIndustry.getPrimaryIndustry().getId()
|
||||||
|
|| null == wxMpIndustry.getSecondIndustry() || null == wxMpIndustry.getSecondIndustry().getId()) {
|
||||||
|
throw new IllegalArgumentException("行业Id不能为空,请核实");
|
||||||
|
}
|
||||||
|
|
||||||
|
String url = API_URL_PREFIX + "/api_set_industry";
|
||||||
|
this.wxMpService.post(url, wxMpIndustry.toJson());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public WxMpIndustry getIndustry() throws WxErrorException {
|
||||||
|
String url = API_URL_PREFIX + "/get_industry";
|
||||||
|
String responseContent = this.wxMpService.get(url, null);
|
||||||
|
return WxMpIndustry.fromJson(responseContent);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,38 +0,0 @@
|
|||||||
package me.chanjar.weixin.mp.bean;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author miller
|
|
||||||
* 官方文档中,创建和获取的数据结构不一样。所以采用冗余字段的方式,实现相应的接口
|
|
||||||
*/
|
|
||||||
public class Industry implements Serializable {
|
|
||||||
private static final long serialVersionUID = -1707184885588012142L;
|
|
||||||
private String id;
|
|
||||||
private String firstClass;
|
|
||||||
private String secondClass;
|
|
||||||
|
|
||||||
public String getId() {
|
|
||||||
return this.id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setId(String id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getFirstClass() {
|
|
||||||
return this.firstClass;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setFirstClass(String firstClass) {
|
|
||||||
this.firstClass = firstClass;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getSecondClass() {
|
|
||||||
return this.secondClass;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSecondClass(String secondClass) {
|
|
||||||
this.secondClass = secondClass;
|
|
||||||
}
|
|
||||||
}
|
|
@ -2,6 +2,8 @@ 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;
|
||||||
|
|
||||||
@ -9,31 +11,97 @@ import java.io.Serializable;
|
|||||||
* @author miller
|
* @author miller
|
||||||
*/
|
*/
|
||||||
public class WxMpIndustry implements Serializable {
|
public class WxMpIndustry implements Serializable {
|
||||||
private static final long serialVersionUID = -7700398224795914722L;
|
private static final long serialVersionUID = -7700398224795914722L;
|
||||||
private Industry primaryIndustry;
|
private Industry primaryIndustry;
|
||||||
private Industry secondIndustry;
|
private Industry secondIndustry;
|
||||||
|
|
||||||
public static WxMpIndustry fromJson(String json) {
|
public WxMpIndustry() {
|
||||||
return WxMpGsonBuilder.create().fromJson(json, WxMpIndustry.class);
|
}
|
||||||
|
|
||||||
|
public WxMpIndustry(Industry primaryIndustry, Industry secondIndustry) {
|
||||||
|
this.primaryIndustry = primaryIndustry;
|
||||||
|
this.secondIndustry = secondIndustry;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author miller
|
||||||
|
* 官方文档中,创建和获取的数据结构不一样。所以采用冗余字段的方式,实现相应的接口
|
||||||
|
*/
|
||||||
|
public static class Industry implements Serializable {
|
||||||
|
private static final long serialVersionUID = -1707184885588012142L;
|
||||||
|
private String id;
|
||||||
|
private String firstClass;
|
||||||
|
private String secondClass;
|
||||||
|
|
||||||
|
public Industry() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public String toJson() {
|
public Industry(String id) {
|
||||||
return WxMpGsonBuilder.create().toJson(this);
|
this.id = id;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Industry getPrimaryIndustry() {
|
public Industry(String id, String firstClass, String secondClass) {
|
||||||
return this.primaryIndustry;
|
this.id = id;
|
||||||
|
this.firstClass = firstClass;
|
||||||
|
this.secondClass = secondClass;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setPrimaryIndustry(Industry primaryIndustry) {
|
@Override
|
||||||
this.primaryIndustry = primaryIndustry;
|
public String toString() {
|
||||||
|
return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Industry getSecondIndustry() {
|
public String getId() {
|
||||||
return this.secondIndustry;
|
return this.id;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSecondIndustry(Industry secondIndustry) {
|
public void setId(String id) {
|
||||||
this.secondIndustry = secondIndustry;
|
this.id = id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getFirstClass() {
|
||||||
|
return this.firstClass;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFirstClass(String firstClass) {
|
||||||
|
this.firstClass = firstClass;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSecondClass() {
|
||||||
|
return this.secondClass;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSecondClass(String secondClass) {
|
||||||
|
this.secondClass = secondClass;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static WxMpIndustry fromJson(String json) {
|
||||||
|
return WxMpGsonBuilder.create().fromJson(json, WxMpIndustry.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String toJson() {
|
||||||
|
return WxMpGsonBuilder.create().toJson(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Industry getPrimaryIndustry() {
|
||||||
|
return this.primaryIndustry;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPrimaryIndustry(Industry primaryIndustry) {
|
||||||
|
this.primaryIndustry = primaryIndustry;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Industry getSecondIndustry() {
|
||||||
|
return this.secondIndustry;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSecondIndustry(Industry secondIndustry) {
|
||||||
|
this.secondIndustry = secondIndustry;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,19 +1,11 @@
|
|||||||
package me.chanjar.weixin.mp.util.json;
|
package me.chanjar.weixin.mp.util.json;
|
||||||
|
|
||||||
import java.lang.reflect.Type;
|
import com.google.gson.*;
|
||||||
|
|
||||||
import com.google.gson.JsonDeserializationContext;
|
|
||||||
import com.google.gson.JsonDeserializer;
|
|
||||||
import com.google.gson.JsonElement;
|
|
||||||
import com.google.gson.JsonObject;
|
|
||||||
import com.google.gson.JsonParseException;
|
|
||||||
import com.google.gson.JsonSerializationContext;
|
|
||||||
import com.google.gson.JsonSerializer;
|
|
||||||
|
|
||||||
import me.chanjar.weixin.common.util.json.GsonHelper;
|
import me.chanjar.weixin.common.util.json.GsonHelper;
|
||||||
import me.chanjar.weixin.mp.bean.Industry;
|
|
||||||
import me.chanjar.weixin.mp.bean.WxMpIndustry;
|
import me.chanjar.weixin.mp.bean.WxMpIndustry;
|
||||||
|
|
||||||
|
import java.lang.reflect.Type;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author miller
|
* @author miller
|
||||||
*/
|
*/
|
||||||
@ -42,8 +34,8 @@ public class WxMpIndustryGsonAdapter
|
|||||||
return wxMpIndustry;
|
return wxMpIndustry;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Industry convertFromJson(JsonObject json) {
|
private static WxMpIndustry.Industry convertFromJson(JsonObject json) {
|
||||||
Industry industry = new Industry();
|
WxMpIndustry.Industry industry = new WxMpIndustry.Industry();
|
||||||
industry.setFirstClass(GsonHelper.getString(json, "first_class"));
|
industry.setFirstClass(GsonHelper.getString(json, "first_class"));
|
||||||
industry.setSecondClass(GsonHelper.getString(json, "second_class"));
|
industry.setSecondClass(GsonHelper.getString(json, "second_class"));
|
||||||
return industry;
|
return industry;
|
||||||
|
@ -1,21 +1,13 @@
|
|||||||
package me.chanjar.weixin.mp.api.impl;
|
package me.chanjar.weixin.mp.api.impl;
|
||||||
|
|
||||||
import java.text.SimpleDateFormat;
|
import com.google.inject.Inject;
|
||||||
import java.util.Date;
|
import me.chanjar.weixin.common.api.WxConsts;
|
||||||
|
import me.chanjar.weixin.mp.api.ApiTestModule;
|
||||||
|
import me.chanjar.weixin.mp.api.WxXmlMpInMemoryConfigStorage;
|
||||||
import org.testng.Assert;
|
import org.testng.Assert;
|
||||||
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.WxMpTemplateData;
|
|
||||||
import me.chanjar.weixin.mp.bean.WxMpTemplateMessage;
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Guice(modules = ApiTestModule.class)
|
@Guice(modules = ApiTestModule.class)
|
||||||
public class WxMpServiceImplTest {
|
public class WxMpServiceImplTest {
|
||||||
@ -88,20 +80,6 @@ public class WxMpServiceImplTest {
|
|||||||
Assert.fail("Not yet implemented");
|
Assert.fail("Not yet implemented");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(invocationCount = 100, threadPoolSize = 30)
|
|
||||||
public void testTemplateSend() throws WxErrorException {
|
|
||||||
SimpleDateFormat dateFormat = new SimpleDateFormat(
|
|
||||||
"yyyy-MM-dd HH:mm:ss.SSS");
|
|
||||||
WxXmlMpInMemoryConfigStorage configStorage = (WxXmlMpInMemoryConfigStorage) this.wxService
|
|
||||||
.getWxMpConfigStorage();
|
|
||||||
WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder()
|
|
||||||
.toUser(configStorage.getOpenid())
|
|
||||||
.templateId(configStorage.getTemplateId()).build();
|
|
||||||
templateMessage.addWxMpTemplateData(
|
|
||||||
new WxMpTemplateData("first", dateFormat.format(new Date())));
|
|
||||||
this.wxService.templateSend(templateMessage);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSetIndustry() {
|
public void testSetIndustry() {
|
||||||
Assert.fail("Not yet implemented");
|
Assert.fail("Not yet implemented");
|
||||||
|
@ -0,0 +1,59 @@
|
|||||||
|
package me.chanjar.weixin.mp.api.impl;
|
||||||
|
|
||||||
|
import com.google.inject.Inject;
|
||||||
|
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.WxMpIndustry;
|
||||||
|
import me.chanjar.weixin.mp.bean.WxMpTemplateData;
|
||||||
|
import me.chanjar.weixin.mp.bean.WxMpTemplateMessage;
|
||||||
|
import org.testng.Assert;
|
||||||
|
import org.testng.annotations.Guice;
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <pre>
|
||||||
|
* Created by Binary Wang on 2016-10-14.
|
||||||
|
* @author <a href="https://github.com/binarywang">binarywang(Binary Wang)</a>
|
||||||
|
* </pre>
|
||||||
|
*/
|
||||||
|
@Guice(modules = ApiTestModule.class)
|
||||||
|
public class WxMpTemplateMsgServiceImplTest {
|
||||||
|
@Inject
|
||||||
|
protected WxMpServiceImpl wxService;
|
||||||
|
|
||||||
|
@Test(invocationCount = 10, threadPoolSize = 10)
|
||||||
|
public void testSendTemplateMsg() throws WxErrorException {
|
||||||
|
SimpleDateFormat dateFormat = new SimpleDateFormat(
|
||||||
|
"yyyy-MM-dd HH:mm:ss.SSS");
|
||||||
|
WxXmlMpInMemoryConfigStorage configStorage = (WxXmlMpInMemoryConfigStorage) this.wxService
|
||||||
|
.getWxMpConfigStorage();
|
||||||
|
WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder()
|
||||||
|
.toUser(configStorage.getOpenid())
|
||||||
|
.templateId(configStorage.getTemplateId()).build();
|
||||||
|
templateMessage.addWxMpTemplateData(
|
||||||
|
new WxMpTemplateData("first", dateFormat.format(new Date())));
|
||||||
|
String msgId = this.wxService.getTemplateMsgService().sendTemplateMsg(templateMessage);
|
||||||
|
Assert.assertNotNull(msgId);
|
||||||
|
System.out.println(msgId);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGetIndustry() throws Exception {
|
||||||
|
final WxMpIndustry industry = this.wxService.getTemplateMsgService().getIndustry();
|
||||||
|
Assert.assertNotNull(industry);
|
||||||
|
System.out.println(industry);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testSetIndustry() throws Exception {
|
||||||
|
WxMpIndustry industry = new WxMpIndustry(new WxMpIndustry.Industry("1"),
|
||||||
|
new WxMpIndustry.Industry("04"));
|
||||||
|
boolean result = this.wxService.getTemplateMsgService().setIndustry(industry);
|
||||||
|
Assert.assertTrue(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user