#470 增加小程序模板配置相关接口

This commit is contained in:
IOMan
2018-02-26 17:03:22 +08:00
committed by Binary Wang
parent 2629f63a8e
commit 8a733d947f
10 changed files with 380 additions and 0 deletions

View File

@@ -121,6 +121,12 @@ public interface WxMaService {
*/
WxMaQrcodeService getQrcodeService();
/**
* 返回模板配置相关接口方法的实现类对象, 以方便调用其各个接口
* @return WxMaTemplateService
*/
WxMaTemplateService getTemplateService();
/**
* 初始化http请求对象
*/

View File

@@ -0,0 +1,89 @@
package cn.binarywang.wx.miniapp.api;
import cn.binarywang.wx.miniapp.bean.template.WxMaTemplateAddResult;
import cn.binarywang.wx.miniapp.bean.template.WxMaTemplateLibraryGetResult;
import cn.binarywang.wx.miniapp.bean.template.WxMaTemplateLibraryListResult;
import cn.binarywang.wx.miniapp.bean.template.WxMaTemplateListResult;
import me.chanjar.weixin.common.exception.WxErrorException;
import java.util.List;
public interface WxMaTemplateService {
//获取小程序模板库标题列表
String TEMPLATE_LIBRARY_LIST_URL = "https://api.weixin.qq.com/cgi-bin/wxopen/template/library/list";
//获取模板库某个模板标题下关键词库
String TEMPLATE_LIBRARY_KEYWORD_URL = "https://api.weixin.qq.com/cgi-bin/wxopen/template/library/get";
//组合模板并添加至帐号下的个人模板库
String TEMPLATE_ADD_URL = "https://api.weixin.qq.com/cgi-bin/wxopen/template/add";
//获取帐号下已存在的模板列表
String TEMPLATE_LIST_URL = "https://api.weixin.qq.com/cgi-bin/wxopen/template/list";
//删除帐号下的某个模板
String TEMPLATE_DEL_URL = "https://api.weixin.qq.com/cgi-bin/wxopen/template/del";
/**
* <pre>
* 获取小程序模板库标题列表
*
* 详情请见: <a href="https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1500465446_j4CgR&token=&lang=zh_CN">获取小程序模板库标题列表</a>
* 接口url格式: https://api.weixin.qq.com/cgi-bin/wxopen/template/library/list?access_token=ACCESS_TOKEN
* </pre>
* @param offset
* @param count
* @return
*/
WxMaTemplateLibraryListResult findTemplateLibraryList(int offset, int count) throws WxErrorException;
/**
* <pre>
* 获取模板库某个模板标题下关键词库
*
* 详情请见: <a href="https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1500465446_j4CgR&token=&lang=zh_CN">获取小程序模板库标题列表</a>
* 接口url格式: https://api.weixin.qq.com/cgi-bin/wxopen/template/library/get?access_token=ACCESS_TOKEN
* </pre>
* @param id
* @return
*/
WxMaTemplateLibraryGetResult findTemplateLibraryKeywordList(String id) throws WxErrorException;
/**
* <pre>
* 组合模板并添加至帐号下的个人模板库
*
* 详情请见: <a href="https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1500465446_j4CgR&token=&lang=zh_CN">获取小程序模板库标题列表</a>
* 接口url格式: https://api.weixin.qq.com/cgi-bin/wxopen/template/add?access_token=ACCESS_TOKEN
* </pre>
* @param id
* @param keywordIdList
* @return
*/
WxMaTemplateAddResult addTemplate(String id, List<Integer> keywordIdList) throws WxErrorException;
/**
* <pre>
* 获取帐号下已存在的模板列表
*
* 详情请见: <a href="https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1500465446_j4CgR&token=&lang=zh_CN">获取小程序模板库标题列表</a>
* 接口url格式: https://api.weixin.qq.com/cgi-bin/wxopen/template/list?access_token=ACCESS_TOKEN
* </pre>
* @param offset
* @param count
* @return
*/
WxMaTemplateListResult findTemplateList(int offset, int count) throws WxErrorException;
/**
* <pre>
* 删除帐号下的某个模板
*
* 详情请见: <a href="https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1500465446_j4CgR&token=&lang=zh_CN">获取小程序模板库标题列表</a>
* 接口url格式: https://api.weixin.qq.com/cgi-bin/wxopen/template/list?access_token=ACCESS_TOKEN
* </pre>
* @param templateId
*/
boolean delTemplate(String templateId) throws WxErrorException;
}

View File

@@ -38,6 +38,7 @@ public class WxMaServiceImpl implements WxMaService, RequestHttp<CloseableHttpCl
private WxMaMediaService materialService = new WxMaMediaServiceImpl(this);
private WxMaUserService userService = new WxMaUserServiceImpl(this);
private WxMaQrcodeService qrCodeService = new WxMaQrcodeServiceImpl(this);
private WxMaTemplateService templateService = new WxMaTemplateServiceImpl(this);
private int retrySleepMillis = 1000;
private int maxRetryTimes = 5;
@@ -259,4 +260,9 @@ public class WxMaServiceImpl implements WxMaService, RequestHttp<CloseableHttpCl
public WxMaQrcodeService getQrcodeService() {
return this.qrCodeService;
}
@Override
public WxMaTemplateService getTemplateService() {
return this.templateService;
}
}

View File

@@ -0,0 +1,101 @@
package cn.binarywang.wx.miniapp.api.impl;
import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.api.WxMaTemplateService;
import cn.binarywang.wx.miniapp.bean.template.WxMaTemplateAddResult;
import cn.binarywang.wx.miniapp.bean.template.WxMaTemplateLibraryGetResult;
import cn.binarywang.wx.miniapp.bean.template.WxMaTemplateLibraryListResult;
import cn.binarywang.wx.miniapp.bean.template.WxMaTemplateListResult;
import me.chanjar.weixin.common.bean.result.WxError;
import me.chanjar.weixin.common.exception.WxErrorException;
import me.chanjar.weixin.common.util.json.WxGsonBuilder;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class WxMaTemplateServiceImpl implements WxMaTemplateService {
private WxMaService wxMaService;
public WxMaTemplateServiceImpl(WxMaService wxMaService){
this.wxMaService = wxMaService;
}
@Override
public WxMaTemplateLibraryListResult findTemplateLibraryList(int offset, int count) throws WxErrorException {
Map<String, Integer> params = new HashMap<>();
params.put("offset", offset);
params.put("count", count);
String responseText = this.wxMaService.post(TEMPLATE_LIBRARY_LIST_URL, WxGsonBuilder.create().toJson(params));
WxError wxError = WxError.fromJson(responseText);
if(wxError.getErrorCode() == 0){
return WxMaTemplateLibraryListResult.fromJson(responseText);
}else {
throw new WxErrorException(wxError);
}
}
@Override
public WxMaTemplateLibraryGetResult findTemplateLibraryKeywordList(String id) throws WxErrorException {
Map<String, String> params = new HashMap<>();
params.put("id", id);
String responseText = this.wxMaService.post(TEMPLATE_LIBRARY_KEYWORD_URL, WxGsonBuilder.create().toJson(params));
WxError wxError = WxError.fromJson(responseText);
if(wxError.getErrorCode() == 0){
return WxMaTemplateLibraryGetResult.fromJson(responseText);
}else {
throw new WxErrorException(wxError);
}
}
@Override
public WxMaTemplateAddResult addTemplate(String id, List<Integer> keywordIdList) throws WxErrorException {
Map<String, Object> params = new HashMap<>();
params.put("id", id);
params.put("keyword_id_list", keywordIdList.toArray());
String responseText = this.wxMaService.post(TEMPLATE_ADD_URL, WxGsonBuilder.create().toJson(params));
WxError wxError = WxError.fromJson(responseText);
if(wxError.getErrorCode() == 0){
return WxMaTemplateAddResult.fromJson(responseText);
}else {
throw new WxErrorException(wxError);
}
}
@Override
public WxMaTemplateListResult findTemplateList(int offset, int count) throws WxErrorException {
Map<String, Integer> params = new HashMap<>();
params.put("offset", offset);
params.put("count", count);
String responseText = this.wxMaService.post(TEMPLATE_LIST_URL, WxGsonBuilder.create().toJson(params));
WxError wxError = WxError.fromJson(responseText);
if(wxError.getErrorCode() == 0){
return WxMaTemplateListResult.fromJson(responseText);
}else {
throw new WxErrorException(wxError);
}
}
@Override
public boolean delTemplate(String templateId) throws WxErrorException {
Map<String, String> params = new HashMap<>();
params.put("template_id", templateId);
String responseText = this.wxMaService.post(TEMPLATE_DEL_URL, WxGsonBuilder.create().toJson(params));
WxError wxError = WxError.fromJson(responseText);
if(wxError.getErrorCode() == 0){
return true;
}else {
throw new WxErrorException(wxError);
}
}
}

View File

@@ -0,0 +1,20 @@
package cn.binarywang.wx.miniapp.bean.template;
import com.google.gson.annotations.SerializedName;
import lombok.Data;
import me.chanjar.weixin.common.util.json.WxGsonBuilder;
import java.io.Serializable;
@Data
public class WxMaTemplateAddResult implements Serializable{
private static final long serialVersionUID = 872250961973834465L;
@SerializedName("template_id")
private String templateId;
public static WxMaTemplateAddResult fromJson(String json){
return WxGsonBuilder.create().fromJson(json, WxMaTemplateAddResult.class);
}
}

View File

@@ -0,0 +1,31 @@
package cn.binarywang.wx.miniapp.bean.template;
import com.google.gson.annotations.SerializedName;
import lombok.Data;
import me.chanjar.weixin.common.util.json.WxGsonBuilder;
import java.io.Serializable;
import java.util.List;
@Data
public class WxMaTemplateLibraryGetResult implements Serializable{
private static final long serialVersionUID = -190847592776636744L;
private String id;
private String title;
@SerializedName("keyword_list")
private List<KeywordInfo> keywordList;
@Data
public static class KeywordInfo{
@SerializedName("keyword_id")
private int keywordId;
private String name;
private String example;
}
public static WxMaTemplateLibraryGetResult fromJson(String json){
return WxGsonBuilder.create().fromJson(json, WxMaTemplateLibraryGetResult.class);
}
}

View File

@@ -0,0 +1,28 @@
package cn.binarywang.wx.miniapp.bean.template;
import com.google.gson.annotations.SerializedName;
import lombok.Data;
import me.chanjar.weixin.common.util.json.WxGsonBuilder;
import java.io.Serializable;
import java.util.List;
@Data
public class WxMaTemplateLibraryListResult implements Serializable{
private static final long serialVersionUID = -2780782521447602209L;
@SerializedName("total_count")
private int totalCount;
private List<TemplateItem> list;
public static WxMaTemplateLibraryListResult fromJson(String json){
return WxGsonBuilder.create().fromJson(json, WxMaTemplateLibraryListResult.class);
}
@Data
public static class TemplateItem{
private String id;
private String title;
}
}

View File

@@ -0,0 +1,29 @@
package cn.binarywang.wx.miniapp.bean.template;
import com.google.gson.annotations.SerializedName;
import lombok.Data;
import me.chanjar.weixin.common.util.json.WxGsonBuilder;
import java.io.Serializable;
import java.util.List;
@Data
public class WxMaTemplateListResult implements Serializable{
private static final long serialVersionUID = -7430535579782184537L;
private List<TemplateInfo> list;
public static WxMaTemplateListResult fromJson(String json){
return WxGsonBuilder.create().fromJson(json, WxMaTemplateListResult.class);
}
@Data
public static class TemplateInfo{
@SerializedName("template_id")
private String templateId;
private String title;
private String content;
private String example;
}
}

View File

@@ -0,0 +1,70 @@
package cn.binarywang.wx.miniapp.api.impl;
import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.bean.template.WxMaTemplateAddResult;
import cn.binarywang.wx.miniapp.bean.template.WxMaTemplateLibraryGetResult;
import cn.binarywang.wx.miniapp.bean.template.WxMaTemplateLibraryListResult;
import cn.binarywang.wx.miniapp.bean.template.WxMaTemplateListResult;
import cn.binarywang.wx.miniapp.test.ApiTestModule;
import com.google.inject.Inject;
import org.assertj.core.util.Lists;
import org.testng.Assert;
import org.testng.annotations.Guice;
import org.testng.annotations.Test;
import java.util.List;
@Test
@Guice(modules = ApiTestModule.class)
public class WxMaTemplateServiceImplTest {
@Inject
protected WxMaService wxService;
@Test
public void testFindTemplateLibraryList() throws Exception {
WxMaTemplateLibraryListResult result = this.wxService.getTemplateService().findTemplateLibraryList(0, 20);
Assert.assertEquals(20, result.getList().size());
}
@Test
public void testFindTemplateLibraryKeywordList() throws Exception {
WxMaTemplateLibraryGetResult result = this.wxService.getTemplateService().findTemplateLibraryKeywordList("AT0004");
Assert.assertEquals("AT0004", result.getId());
Assert.assertEquals("交易提醒", result.getTitle());
Assert.assertEquals(100, result.getKeywordList().size());
}
@Test
public void testAddTemplate() throws Exception{
List<Integer> list = Lists.newArrayList();
list.add(1);
list.add(20);
list.add(84);
WxMaTemplateAddResult result = this.wxService.getTemplateService().addTemplate("AT0004", list);
Assert.assertNotNull(result.getTemplateId());
System.out.println(result);
}
@Test
public void testFindTemplateList() throws Exception{
WxMaTemplateListResult result = this.wxService.getTemplateService().findTemplateList(0, 20);
System.out.println(result);
}
@Test
public void testDelTemplate() throws Exception {
//add
List<Integer> list = Lists.newArrayList();
list.add(1);
list.add(20);
list.add(84);
WxMaTemplateAddResult result = this.wxService.getTemplateService().addTemplate("AT0004", list);
//delete
this.wxService.getTemplateService().delTemplate(result.getTemplateId());
}
}