Procházet zdrojové kódy

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

master
IOMan před 7 roky
committed by Binary Wang
rodič
revize
8a733d947f
10 změnil soubory, kde provedl 380 přidání a 0 odebrání
  1. +6
    -0
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaService.java
  2. +89
    -0
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaTemplateService.java
  3. +6
    -0
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaServiceImpl.java
  4. +101
    -0
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaTemplateServiceImpl.java
  5. +20
    -0
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/template/WxMaTemplateAddResult.java
  6. +31
    -0
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/template/WxMaTemplateLibraryGetResult.java
  7. +28
    -0
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/template/WxMaTemplateLibraryListResult.java
  8. +29
    -0
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/template/WxMaTemplateListResult.java
  9. +70
    -0
      weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/api/impl/WxMaTemplateServiceImplTest.java
  10. +0
    -0
      weixin-java-miniapp/src/test/resources/test-config-sample.xml

+ 6
- 0
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaService.java Zobrazit soubor

@@ -121,6 +121,12 @@ public interface WxMaService {
*/
WxMaQrcodeService getQrcodeService();

/**
* 返回模板配置相关接口方法的实现类对象, 以方便调用其各个接口
* @return WxMaTemplateService
*/
WxMaTemplateService getTemplateService();

/**
* 初始化http请求对象
*/


+ 89
- 0
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaTemplateService.java Zobrazit soubor

@@ -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;
}

+ 6
- 0
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaServiceImpl.java Zobrazit soubor

@@ -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;
}
}

+ 101
- 0
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaTemplateServiceImpl.java Zobrazit soubor

@@ -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);
}
}
}

+ 20
- 0
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/template/WxMaTemplateAddResult.java Zobrazit soubor

@@ -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);
}
}

+ 31
- 0
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/template/WxMaTemplateLibraryGetResult.java Zobrazit soubor

@@ -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);
}
}

+ 28
- 0
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/template/WxMaTemplateLibraryListResult.java Zobrazit soubor

@@ -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;
}
}

+ 29
- 0
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/template/WxMaTemplateListResult.java Zobrazit soubor

@@ -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;
}
}

+ 70
- 0
weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/api/impl/WxMaTemplateServiceImplTest.java Zobrazit soubor

@@ -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());
}
}

weixin-java-miniapp/src/test/resources/test-config.sample.xml → weixin-java-miniapp/src/test/resources/test-config-sample.xml Zobrazit soubor


Načítá se…
Zrušit
Uložit