Selaa lähdekoodia

规范化小程序模块的部分代码

master
Binary Wang 7 vuotta sitten
vanhempi
commit
447c73e43a
17 muutettua tiedostoa jossa 77 lisäystä ja 37 poistoa
  1. +2
    -1
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaMsgServiceImpl.java
  2. +5
    -4
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaServiceImpl.java
  3. +2
    -2
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaUserServiceImpl.java
  4. +3
    -2
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/AbstractWxMaQrcodeWrapper.java
  5. +1
    -0
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaCodeLineColor.java
  6. +2
    -2
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaKefuMessage.java
  7. +1
    -1
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaQrcode.java
  8. +4
    -2
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaWxcode.java
  9. +4
    -2
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaWxcodeLimit.java
  10. +2
    -2
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/builder/ImageBuilder.java
  11. +1
    -0
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/config/WxMaInMemoryConfig.java
  12. +34
    -3
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/constant/WxMaConstants.java
  13. +6
    -6
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/message/WxMaMessageRouter.java
  14. +1
    -1
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/message/WxMaMessageRouterRule.java
  15. +3
    -3
      weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/util/http/QrCodeRequestExecutor.java
  16. +2
    -2
      weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/bean/WxMaKefuMessageTest.java
  17. +4
    -4
      weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/demo/WxMaDemoServer.java

+ 2
- 1
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaMsgServiceImpl.java Näytä tiedosto

@@ -4,6 +4,7 @@ import cn.binarywang.wx.miniapp.api.WxMaMsgService;
import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.bean.WxMaKefuMessage;
import cn.binarywang.wx.miniapp.bean.WxMaTemplateMessage;
import cn.binarywang.wx.miniapp.constant.WxMaConstants;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import me.chanjar.weixin.common.bean.result.WxError;
@@ -30,7 +31,7 @@ public class WxMaMsgServiceImpl implements WxMaMsgService {
public void sendTemplateMsg(WxMaTemplateMessage templateMessage) throws WxErrorException {
String responseContent = this.wxMaService.post(TEMPLATE_MSG_SEND_URL, templateMessage.toJson());
JsonObject jsonObject = JSON_PARSER.parse(responseContent).getAsJsonObject();
if (jsonObject.get("errcode").getAsInt() != 0) {
if (jsonObject.get(WxMaConstants.ERRCODE).getAsInt() != 0) {
throw new WxErrorException(WxError.fromJson(responseContent));
}
}


+ 5
- 4
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaServiceImpl.java Näytä tiedosto

@@ -2,6 +2,7 @@ package cn.binarywang.wx.miniapp.api.impl;

import cn.binarywang.wx.miniapp.api.*;
import cn.binarywang.wx.miniapp.config.WxMaConfig;
import cn.binarywang.wx.miniapp.constant.WxMaConstants;
import com.google.gson.JsonParser;
import me.chanjar.weixin.common.bean.WxAccessToken;
import me.chanjar.weixin.common.bean.result.WxError;
@@ -147,6 +148,7 @@ public class WxMaServiceImpl implements WxMaService, RequestHttp<CloseableHttpCl
/**
* 向微信端发送请求,在这里执行的策略是当发生access_token过期时才去刷新,然后重新执行请求,而不是全局定时请求
*/
@Override
public <T, E> T execute(RequestExecutor<T, E> executor, String uri, E data) throws WxErrorException {
int retryTimes = 0;
do {
@@ -195,11 +197,10 @@ public class WxMaServiceImpl implements WxMaService, RequestHttp<CloseableHttpCl
WxError error = e.getError();
/*
* 发生以下情况时尝试刷新access_token
* 40001 获取access_token时AppSecret错误,或者access_token无效
* 42001 access_token超时
* 40014 不合法的access_token,请开发者认真比对access_token的有效性(如是否过期)
*/
if (error.getErrorCode() == 42001 || error.getErrorCode() == 40001 || error.getErrorCode() == 40014) {
if (error.getErrorCode() == WxMaConstants.ErrorCode.ERR_40001
|| error.getErrorCode() == WxMaConstants.ErrorCode.ERR_42001
|| error.getErrorCode() == WxMaConstants.ErrorCode.ERR_40014) {
// 强制设置wxMpConfigStorage它的access token过期了,这样在下一次请求里就会刷新access token
this.getWxMaConfig().expireAccessToken();
if (this.getWxMaConfig().autoRefreshToken()) {


+ 2
- 2
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaUserServiceImpl.java Näytä tiedosto

@@ -19,14 +19,14 @@ import java.util.Map;
public class WxMaUserServiceImpl implements WxMaUserService {
private WxMaService service;

WxMaUserServiceImpl(WxMaService service) {
public WxMaUserServiceImpl(WxMaService service) {
this.service = service;
}

@Override
public WxMaJscode2SessionResult getSessionInfo(String jsCode) throws WxErrorException {
final WxMaConfig config = service.getWxMaConfig();
Map<String, String> params = new HashMap<>();
Map<String, String> params = new HashMap<>(8);
params.put("appid", config.getAppid());
params.put("secret", config.getSecret());
params.put("js_code", jsCode);


weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaQrcodeWrapper.java → weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/AbstractWxMaQrcodeWrapper.java Näytä tiedosto

@@ -4,9 +4,10 @@ import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder;

/**
* 微信二维码(小程序码)包装器
* Created by Element on 2017/7/27.
*
* @author Element
*/
public abstract class WxMaQrcodeWrapper {
public abstract class AbstractWxMaQrcodeWrapper {

@Override
public String toString() {

+ 1
- 0
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaCodeLineColor.java Näytä tiedosto

@@ -6,6 +6,7 @@ package cn.binarywang.wx.miniapp.bean;
* 用于描述二维码(小程序码)颜色(RGB参数值),
* 详情请查看文档 https://mp.weixin.qq.com/debug/wxadoc/dev/api/qrcode.html
* </pre>
* @author Element
*/
public class WxMaCodeLineColor {
private String r = "0", g = "0", b = "0";


+ 2
- 2
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaKefuMessage.java Näytä tiedosto

@@ -25,14 +25,14 @@ public class WxMaKefuMessage implements Serializable {
/**
* 获得文本消息builder
*/
public static TextBuilder TEXT() {
public static TextBuilder newTextBuilder() {
return new TextBuilder();
}

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



+ 1
- 1
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaQrcode.java Näytä tiedosto

@@ -7,7 +7,7 @@ import java.io.Serializable;
/**
* @author <a href="https://github.com/binarywang">Binary Wang</a>
*/
public class WxMaQrcode extends WxMaQrcodeWrapper implements Serializable {
public class WxMaQrcode extends AbstractWxMaQrcodeWrapper implements Serializable {
private static final long serialVersionUID = 5777119669111011584L;
private String path;
private int width = 430;


+ 4
- 2
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaWxcode.java Näytä tiedosto

@@ -6,9 +6,11 @@ import com.google.gson.annotations.SerializedName;
import java.io.Serializable;

/**
* Created by Element on 2017/7/27.
*
* @author Element
* @date 2017/7/27
*/
public class WxMaWxcode extends WxMaQrcodeWrapper implements Serializable {
public class WxMaWxcode extends AbstractWxMaQrcodeWrapper implements Serializable {

private static final long serialVersionUID = 1287399621649210322L;
private String path;


+ 4
- 2
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaWxcodeLimit.java Näytä tiedosto

@@ -6,9 +6,11 @@ import com.google.gson.annotations.SerializedName;
import java.io.Serializable;

/**
* Created by Element on 2017/7/27.
*
* @author Element
* @date 2017/7/27
*/
public class WxMaWxcodeLimit extends WxMaQrcodeWrapper implements Serializable {
public class WxMaWxcodeLimit extends AbstractWxMaQrcodeWrapper implements Serializable {
private static final long serialVersionUID = 4782193774524960401L;
private String scene;
private String page;


+ 2
- 2
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/builder/ImageBuilder.java Näytä tiedosto

@@ -13,8 +13,8 @@ public final class ImageBuilder extends BaseBuilder<ImageBuilder> {
this.msgType = WxMaConstants.KefuMsgType.IMAGE;
}

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



+ 1
- 0
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/config/WxMaInMemoryConfig.java Näytä tiedosto

@@ -175,6 +175,7 @@ public class WxMaInMemoryConfig implements WxMaConfig {
return true;
}

@Override
public String getAppid() {
return appid;
}


+ 34
- 3
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/constant/WxMaConstants.java Näytä tiedosto

@@ -8,11 +8,19 @@ package cn.binarywang.wx.miniapp.constant;
* @author <a href="https://github.com/binarywang">Binary Wang</a>
*/
public class WxMaConstants {
/**
* 微信接口返回的参数errcode
*/
public static final String ERRCODE = "errcode";

/**
* 素材类型
*/
public static class MediaType {
public static final String IMAGE = "image";//图片
/**
* 图片
*/
public static final String IMAGE = "image";
}

/**
@@ -27,7 +35,30 @@ public class WxMaConstants {
* 客服消息的消息类型
*/
public static class KefuMsgType {
public static final String TEXT = "text";//文本消息
public static final String IMAGE = "image";//图片消息
/**
* 文本消息
*/
public static final String TEXT = "text";
/**
* 图片消息
*/
public static final String IMAGE = "image";
}

public static final class ErrorCode {
/**
* 40001 获取access_token时AppSecret错误,或者access_token无效
*/
public static final int ERR_40001 = 40001;

/**
* 42001 access_token超时
*/
public static final int ERR_42001 = 42001;

/**
* 40014 不合法的access_token,请开发者认真比对access_token的有效性(如是否过期)
*/
public static final int ERR_40014 = 40014;
}
}

+ 6
- 6
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/message/WxMaMessageRouter.java Näytä tiedosto

@@ -2,6 +2,7 @@ package cn.binarywang.wx.miniapp.message;

import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.bean.WxMaMessage;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import me.chanjar.weixin.common.api.WxErrorExceptionHandler;
import me.chanjar.weixin.common.api.WxMessageDuplicateChecker;
import me.chanjar.weixin.common.api.WxMessageInMemoryDuplicateChecker;
@@ -17,10 +18,7 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.*;

/**
* @author <a href="https://github.com/binarywang">Binary Wang</a>
@@ -42,7 +40,9 @@ public class WxMaMessageRouter {

public WxMaMessageRouter(WxMaService wxMaService) {
this.wxMaService = wxMaService;
this.executorService = Executors.newFixedThreadPool(DEFAULT_THREAD_POOL_SIZE);
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder().setNameFormat("WxMaMessageRouter-pool-%d").build();
this.executorService = new ThreadPoolExecutor(DEFAULT_THREAD_POOL_SIZE, DEFAULT_THREAD_POOL_SIZE,
0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>(), namedThreadFactory);
this.messageDuplicateChecker = new WxMessageInMemoryDuplicateChecker();
this.sessionManager = new StandardSessionManager();
this.exceptionHandler = new LogExceptionHandler();
@@ -159,7 +159,7 @@ public class WxMaMessageRouter {
}

public void route(final WxMaMessage wxMessage) {
this.route(wxMessage, new HashMap<String, Object>());
this.route(wxMessage, new HashMap<String, Object>(2));
}

/**


+ 1
- 1
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/message/WxMaMessageRouterRule.java Näytä tiedosto

@@ -196,7 +196,7 @@ public class WxMaMessageRouterRule {
WxSessionManager sessionManager,
WxErrorExceptionHandler exceptionHandler) {
if (context == null) {
context = new HashMap<>();
context = new HashMap<>(16);
}

try {


+ 3
- 3
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/util/http/QrCodeRequestExecutor.java Näytä tiedosto

@@ -1,6 +1,6 @@
package cn.binarywang.wx.miniapp.util.http;

import cn.binarywang.wx.miniapp.bean.WxMaQrcodeWrapper;
import cn.binarywang.wx.miniapp.bean.AbstractWxMaQrcodeWrapper;
import me.chanjar.weixin.common.bean.result.WxError;
import me.chanjar.weixin.common.exception.WxErrorException;
import me.chanjar.weixin.common.util.fs.FileUtils;
@@ -25,7 +25,7 @@ import java.util.UUID;
/**
* @author <a href="https://github.com/binarywang">Binary Wang</a>
*/
public class QrCodeRequestExecutor implements RequestExecutor<File, WxMaQrcodeWrapper> {
public class QrCodeRequestExecutor implements RequestExecutor<File, AbstractWxMaQrcodeWrapper> {
protected RequestHttp<CloseableHttpClient, HttpHost> requestHttp;

public QrCodeRequestExecutor(RequestHttp requestHttp) {
@@ -33,7 +33,7 @@ public class QrCodeRequestExecutor implements RequestExecutor<File, WxMaQrcodeWr
}

@Override
public File execute(String uri, WxMaQrcodeWrapper ticket) throws WxErrorException, IOException {
public File execute(String uri, AbstractWxMaQrcodeWrapper ticket) throws WxErrorException, IOException {
HttpPost httpPost = new HttpPost(uri);
if (requestHttp.getRequestHttpProxy() != null) {
httpPost


+ 2
- 2
weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/bean/WxMaKefuMessageTest.java Näytä tiedosto

@@ -19,7 +19,7 @@ public class WxMaKefuMessageTest {
}

public void testTextBuild() {
WxMaKefuMessage reply = WxMaKefuMessage.TEXT().toUser("OPENID").content("sfsfdsdf").build();
WxMaKefuMessage reply = WxMaKefuMessage.newTextBuilder().toUser("OPENID").content("sfsfdsdf").build();
Assert.assertEquals(reply.toJson(), "{\"touser\":\"OPENID\",\"msgtype\":\"text\",\"text\":{\"content\":\"sfsfdsdf\"}}");
}

@@ -32,7 +32,7 @@ public class WxMaKefuMessageTest {
}

public void testImageBuild() {
WxMaKefuMessage reply = WxMaKefuMessage.IMAGE().toUser("OPENID").mediaId("MEDIA_ID").build();
WxMaKefuMessage reply = WxMaKefuMessage.newImageBuilder().toUser("OPENID").mediaId("MEDIA_ID").build();
Assert.assertEquals(reply.toJson(), "{\"touser\":\"OPENID\",\"msgtype\":\"image\",\"image\":{\"media_id\":\"MEDIA_ID\"}}");
}



+ 4
- 4
weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/demo/WxMaDemoServer.java Näytä tiedosto

@@ -34,7 +34,7 @@ public class WxMaDemoServer {
public void handle(WxMaMessage wxMessage, Map<String, Object> context,
WxMaService service, WxSessionManager sessionManager) throws WxErrorException {
System.out.println("收到消息:" + wxMessage.toString());
service.getMsgService().sendKefuMsg(WxMaKefuMessage.TEXT().content("收到信息为:" + wxMessage.toJson())
service.getMsgService().sendKefuMsg(WxMaKefuMessage.newTextBuilder().content("收到信息为:" + wxMessage.toJson())
.toUser(wxMessage.getFromUser()).build());
}
};
@@ -44,7 +44,7 @@ public class WxMaDemoServer {
public void handle(WxMaMessage wxMessage, Map<String, Object> context,
WxMaService service, WxSessionManager sessionManager)
throws WxErrorException {
service.getMsgService().sendKefuMsg(WxMaKefuMessage.TEXT().content("回复文本消息")
service.getMsgService().sendKefuMsg(WxMaKefuMessage.newTextBuilder().content("回复文本消息")
.toUser(wxMessage.getFromUser()).build());
}

@@ -60,7 +60,7 @@ public class WxMaDemoServer {
ClassLoader.getSystemResourceAsStream("tmp.png"));
service.getMsgService().sendKefuMsg(
WxMaKefuMessage
.IMAGE()
.newImageBuilder()
.mediaId(uploadResult.getMediaId())
.toUser(wxMessage.getFromUser())
.build());
@@ -79,7 +79,7 @@ public class WxMaDemoServer {
WxMediaUploadResult uploadResult = service.getMediaService().uploadMedia(WxMaConstants.MediaType.IMAGE, file);
service.getMsgService().sendKefuMsg(
WxMaKefuMessage
.IMAGE()
.newImageBuilder()
.mediaId(uploadResult.getMediaId())
.toUser(wxMessage.getFromUser())
.build());


Ladataan…
Peruuta
Tallenna