From 5c266d546f2982b81b3d7eec227712f13a4589de Mon Sep 17 00:00:00 2001 From: GeXiangDong Date: Wed, 6 Nov 2024 21:29:01 +0800 Subject: [PATCH] =?UTF-8?q?:art:=20=E3=80=90=E5=B0=8F=E7=A8=8B=E5=BA=8F?= =?UTF-8?q?=E3=80=91=E5=90=8C=E5=9F=8E=E9=85=8D=E9=80=81=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E9=97=A8=E5=BA=97=E4=BD=99=E9=A2=9D=E6=8E=A5=E5=8F=A3=E8=A1=A5?= =?UTF-8?q?=E5=85=85=E4=BA=86=E5=87=A0=E4=B8=AA=E9=81=97=E6=BC=8F=E5=B1=9E?= =?UTF-8?q?=E6=80=A7=EF=BC=8C=E5=90=8C=E6=97=B6=E4=BC=98=E5=8C=96=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=EF=BC=8C=E9=81=BF=E5=85=8D=E5=8F=AF=E8=83=BD=E5=87=BA?= =?UTF-8?q?=E7=8E=B0=E7=9A=84NPE=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../miniapp/api/impl/BaseWxMaServiceImpl.java | 13 ++- .../bean/intractiy/WxMaStoreBalance.java | 52 +++++++++++- .../impl/WxMaIntracityServiceImpleTest.java | 81 +++++++++++++++++++ 3 files changed, 138 insertions(+), 8 deletions(-) diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/BaseWxMaServiceImpl.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/BaseWxMaServiceImpl.java index 00f848e31..9385cad46 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/BaseWxMaServiceImpl.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/BaseWxMaServiceImpl.java @@ -302,7 +302,7 @@ public abstract class BaseWxMaServiceImpl implements WxMaService, RequestH if (isApiSignatureRequired(url)) { // 接口需要签名 log.debug("已经配置接口需要签名,接口{}将走加密访问路径", url); - JsonObject jsonObject = GSON.fromJson(postData, JsonObject.class); + JsonObject jsonObject = GSON.fromJson(postData == null ? "{}" : postData, JsonObject.class); return postWithSignature(url, jsonObject); } else { return execute(SimplePostRequestExecutor.create(this), url, postData); @@ -323,12 +323,12 @@ public abstract class BaseWxMaServiceImpl implements WxMaService, RequestH @Override public String post(String url, ToJson obj) throws WxErrorException { - return this.post(url, obj.toJson()); + return this.post(url, obj == null ? "{}" : obj.toJson()); } @Override public String post(String url, JsonObject jsonObject) throws WxErrorException { - return this.post(url, jsonObject.toString()); + return this.post(url, jsonObject == null ? "{}" : jsonObject.toString()); } @Override @@ -845,7 +845,12 @@ public abstract class BaseWxMaServiceImpl implements WxMaService, RequestH new GsonBuilder() .setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES) .create(); - JsonObject jsonObject = gson.toJsonTree(obj).getAsJsonObject(); + JsonObject jsonObject; + if (obj == null) { + jsonObject = gson.fromJson("{}", JsonObject.class); + } else { + jsonObject = gson.toJsonTree(obj).getAsJsonObject(); + } return this.postWithSignature(url, jsonObject); } diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/intractiy/WxMaStoreBalance.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/intractiy/WxMaStoreBalance.java index 783c76fcd..defc7b275 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/intractiy/WxMaStoreBalance.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/intractiy/WxMaStoreBalance.java @@ -13,7 +13,7 @@ public class WxMaStoreBalance { private String appid; private int allBalance; - private List balanceDetail; + private List balanceDetail; public String getWxStoreId() { return wxStoreId; @@ -39,11 +39,11 @@ public class WxMaStoreBalance { this.allBalance = allBalance; } - public List getBalanceDetail() { + public List getBalanceDetail() { return balanceDetail; } - public void setBalanceDetail(List balanceDetail) { + public void setBalanceDetail(List balanceDetail) { this.balanceDetail = balanceDetail; } @@ -52,7 +52,51 @@ public class WxMaStoreBalance { return ToStringBuilder.reflectionToString(this); } - public static class Detail { + public static class BalanceDetail { + private int balance; + private String serviceTransId; + private String serviceTransName; + private List orderList; + + public int getBalance() { + return balance; + } + + public void setBalance(int balance) { + this.balance = balance; + } + + public String getServiceTransId() { + return serviceTransId; + } + + public void setServiceTransId(String serviceTransId) { + this.serviceTransId = serviceTransId; + } + + public String getServiceTransName() { + return serviceTransName; + } + + public void setServiceTransName(String serviceTransName) { + this.serviceTransName = serviceTransName; + } + + public List getOrderList() { + return orderList; + } + + public void setOrderList(List orderList) { + this.orderList = orderList; + } + + @Override + public String toString() { + return ToStringBuilder.reflectionToString(this); + } + } + + public static class OrderDetail { private String payorderId; private int chargeAmt; private int unusedAmt; diff --git a/weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/api/impl/WxMaIntracityServiceImpleTest.java b/weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/api/impl/WxMaIntracityServiceImpleTest.java index 51ad846e9..9828542a4 100644 --- a/weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/api/impl/WxMaIntracityServiceImpleTest.java +++ b/weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/api/impl/WxMaIntracityServiceImpleTest.java @@ -8,9 +8,11 @@ import cn.binarywang.wx.miniapp.bean.openapi.WxMiniGetApiQuotaResult; import cn.binarywang.wx.miniapp.constant.WxMaApiUrlConstants; import cn.binarywang.wx.miniapp.test.ApiTestModule; import cn.binarywang.wx.miniapp.test.TestConfig; +import com.google.gson.JsonObject; import com.google.inject.Inject; import java.util.ArrayList; import java.util.List; +import me.chanjar.weixin.common.bean.ToJson; import me.chanjar.weixin.common.error.WxErrorException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -35,6 +37,85 @@ public class WxMaIntracityServiceImpleTest { logger.info("apply 额度剩余 :{}", result.getQuota()); } + @Test + public void testApiGetPostNullData() throws Exception { + try { + wxService.get(WxMaApiUrlConstants.Analysis.GET_USER_PORTRAIT_URL, null); + } catch (NullPointerException npe) { + logger.error("NullPointerException", npe); + fail("遇到空指针 get(url, null)"); + } catch (WxErrorException wxErrorException) { + // 这个是正常的,因为这里的调用没按照接口规则 + } + // 走加密路径url + try { + wxService.post(WxMaApiUrlConstants.OpenApi.CLEAR_QUOTA, (Object) null); + } catch (NullPointerException npe) { + logger.error("NullPointerException", npe); + fail("遇到空指针 post(url, Object null)"); + } catch (WxErrorException wxErrorException) { + // 这个是正常的,因为这里的调用没按照接口规则 + } + try { + wxService.post(WxMaApiUrlConstants.OpenApi.CLEAR_QUOTA, (String) null); + } catch (NullPointerException npe) { + logger.error("NullPointerException", npe); + fail("遇到空指针 post(url, String null)"); + } catch (WxErrorException wxErrorException) { + // 这个是正常的,因为这里的调用没按照接口规则 + } + try { + wxService.post(WxMaApiUrlConstants.OpenApi.CLEAR_QUOTA, (JsonObject) null); + } catch (NullPointerException npe) { + logger.error("NullPointerException", npe); + fail("遇到空指针 post(url, JsonObject null)"); + } catch (WxErrorException wxErrorException) { + // 这个是正常的,因为这里的调用没按照接口规则 + } + try { + wxService.post(WxMaApiUrlConstants.OpenApi.CLEAR_QUOTA, (ToJson) null); + } catch (NullPointerException npe) { + logger.error("NullPointerException", npe); + fail("遇到空指针 post(url, ToJson null)"); + } catch (WxErrorException wxErrorException) { + // 这个是正常的,因为这里的调用没按照接口规则 + } + + // 不走加密路径URL + try { + wxService.post(WxMaApiUrlConstants.Intracity.APPLY_URL, (Object) null); + } catch (NullPointerException npe) { + logger.error("NullPointerException", npe); + fail("遇到空指针 post(url, Object null)"); + } catch (WxErrorException wxErrorException) { + // 这个是正常的,因为这里的调用没按照接口规则 + } + try { + wxService.post(WxMaApiUrlConstants.Intracity.APPLY_URL, (String) null); + } catch (NullPointerException npe) { + logger.error("NullPointerException", npe); + fail("遇到空指针 post(url, String null)"); + } catch (WxErrorException wxErrorException) { + // 这个是正常的,因为这里的调用没按照接口规则 + } + try { + wxService.post(WxMaApiUrlConstants.Intracity.APPLY_URL, (JsonObject) null); + } catch (NullPointerException npe) { + logger.error("NullPointerException", npe); + fail("遇到空指针 post(url, JsonObject null)"); + } catch (WxErrorException wxErrorException) { + // 这个是正常的,因为这里的调用没按照接口规则 + } + try { + wxService.post(WxMaApiUrlConstants.Intracity.APPLY_URL, (ToJson) null); + } catch (NullPointerException npe) { + logger.error("NullPointerException", npe); + fail("遇到空指针 post(url, ToJson null)"); + } catch (WxErrorException wxErrorException) { + // 这个是正常的,因为这里的调用没按照接口规则 + } + } + @Test public void testApply() throws Exception { logger.debug("testApply");