From c805444154029e08a4e94da2d18c014e385c7834 Mon Sep 17 00:00:00 2001 From: Binary Wang Date: Sun, 14 Jul 2019 15:17:08 +0800 Subject: [PATCH] =?UTF-8?q?#1095=20=E4=BF=AE=E5=A4=8D=E5=BE=AE=E4=BF=A1?= =?UTF-8?q?=E8=90=A5=E9=94=80=E6=8E=A5=E5=8F=A3=E4=B8=AD=E6=9C=89=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E7=9A=84=E5=9B=9E=E4=BC=A0=E6=95=B0=E6=8D=AE=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../weixin/mp/api/WxMpMarketingService.java | 12 +++---- .../mp/api/impl/WxMpMarketingServiceImpl.java | 10 ++---- .../mp/bean/marketing/WxMpUserAction.java | 34 +++++++++++++++++-- .../impl/WxMpMarketingServiceImplTest.java | 30 ++++++++++++++++ .../mp/bean/marketing/WxMpUserActionTest.java | 28 +++++++++++++++ 5 files changed, 98 insertions(+), 16 deletions(-) create mode 100644 weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpMarketingServiceImplTest.java create mode 100644 weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/marketing/WxMpUserActionTest.java diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMarketingService.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMarketingService.java index c35a135c..d82a9e32 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMarketingService.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMarketingService.java @@ -11,16 +11,14 @@ import java.util.Date; import java.util.List; /** - *
- * 微信营销接口
- * 
+ * 微信营销接口. * * @author 007 */ public interface WxMpMarketingService { /** *
-   * 创建数据源
+   * 创建数据源.
    * 接口调用请求说明
    * https://wximg.qq.com/wxp/pdftool/get.html?id=rkalQXDBM&pa=39
    * 
@@ -33,7 +31,7 @@ public interface WxMpMarketingService { /** *
-   * 获取数据源信息
+   * 获取数据源信息.
    * 
* * @param userActionSetId 数据源唯一ID @@ -41,7 +39,7 @@ public interface WxMpMarketingService { List getUserActionSets(Long userActionSetId) throws WxErrorException; /** - * 回传数据 + * 回传数据. * 接口调用请求说明 * https://wximg.qq.com/wxp/pdftool/get.html?id=rkalQXDBM&pa=39 * @@ -51,7 +49,7 @@ public interface WxMpMarketingService { /** *
-   * 获取朋友圈销售线索数据接口
+   * 获取朋友圈销售线索数据接口.
    * 接口调用请求说明
    *
    * http请求方式: POST
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpMarketingServiceImpl.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpMarketingServiceImpl.java
index 5f2ece51..27371ef8 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpMarketingServiceImpl.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpMarketingServiceImpl.java
@@ -50,15 +50,11 @@ public class WxMpMarketingServiceImpl implements WxMpMarketingService {
 
   @Override
   public void addUserAction(List actions) throws WxErrorException {
-    JsonArray json = new JsonArray();
-    for (WxMpUserAction action : actions) {
-      json.add(action.toJsonObject());
-    }
-    wxMpService.post(USER_ACTIONS_ADD, json.toString());
+    wxMpService.post(USER_ACTIONS_ADD, WxMpUserAction.listToJson(actions));
   }
 
   @Override
-  public WxMpAdLeadResult getAdLeads(Date beginDate, Date endDate, List filtering, Integer page, Integer page_size) throws WxErrorException, IOException {
+  public WxMpAdLeadResult getAdLeads(Date beginDate, Date endDate, List filtering, Integer page, Integer pageSize) throws WxErrorException, IOException {
     Date today = new Date();
     if (beginDate == null) {
       beginDate = today;
@@ -72,7 +68,7 @@ public class WxMpMarketingServiceImpl implements WxMpMarketingService {
     dateRange.addProperty("end_date", DateFormatUtils.format(endDate, "yyyy-MM-dd"));
     params += "&date_range=" + URLEncoder.encode(dateRange.toString(), StandardCharsets.UTF_8.name());
     params += "&page=" + page;
-    params += "&page_size=" + page_size;
+    params += "&pageSize=" + pageSize;
     if (filtering != null) {
       JsonArray filterJson = new JsonArray();
       for (WxMpAdLeadFilter filter : filtering) {
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/marketing/WxMpUserAction.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/marketing/WxMpUserAction.java
index 69fced90..470ebae9 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/marketing/WxMpUserAction.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/marketing/WxMpUserAction.java
@@ -1,39 +1,69 @@
 package me.chanjar.weixin.mp.bean.marketing;
 
+import com.google.gson.JsonArray;
 import com.google.gson.JsonObject;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
 import java.io.Serializable;
+import java.util.List;
 
 /**
  * @author 007
  */
 
 @Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
 public class WxMpUserAction implements Serializable {
   private static final long serialVersionUID = 7042393762652152209L;
+
   private Long userActionSetId;
   private String url;
-  private Boolean actionTime;
+  private Integer actionTime;
   private String actionType;
   private String clickId;
   private Integer actionParam;
 
-  public JsonObject toJsonObject() {
+  private JsonObject toJsonObject() {
     JsonObject json = new JsonObject();
     json.addProperty("user_action_set_id", this.userActionSetId);
     json.addProperty("url", this.url);
     json.addProperty("action_time", this.actionTime);
+    json.addProperty("action_type", this.actionType);
+
     if (this.clickId != null) {
       JsonObject traceJson = new JsonObject();
       traceJson.addProperty("click_id", this.clickId);
       json.add("trace", traceJson);
     }
+
     if (this.actionParam != null) {
       JsonObject actionParamJson = new JsonObject();
       actionParamJson.addProperty("value", actionParam);
       json.add("action_param", actionParamJson);
     }
+
     return json;
   }
+
+  /**
+   * list对象转换为json字符串
+   *
+   * @param actions .
+   * @return .
+   */
+  public static String listToJson(List actions) {
+    JsonArray array = new JsonArray();
+    for (WxMpUserAction action : actions) {
+      array.add(action.toJsonObject());
+    }
+
+    JsonObject result = new JsonObject();
+    result.add("actions", array);
+    return result.toString();
+  }
 }
diff --git a/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpMarketingServiceImplTest.java b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpMarketingServiceImplTest.java
new file mode 100644
index 00000000..900453b6
--- /dev/null
+++ b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpMarketingServiceImplTest.java
@@ -0,0 +1,30 @@
+package me.chanjar.weixin.mp.api.impl;
+
+import org.testng.annotations.Test;
+
+import static org.testng.Assert.*;
+
+/**
+ * 测试类.
+ *
+ * @author Binary Wang
+ * @date 2019-07-14
+ */
+public class WxMpMarketingServiceImplTest {
+
+  @Test
+  public void testAddUserActionSets() {
+  }
+
+  @Test
+  public void testGetUserActionSets() {
+  }
+
+  @Test
+  public void testAddUserAction() {
+  }
+
+  @Test
+  public void testGetAdLeads() {
+  }
+}
diff --git a/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/marketing/WxMpUserActionTest.java b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/marketing/WxMpUserActionTest.java
new file mode 100644
index 00000000..3d18b1eb
--- /dev/null
+++ b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/marketing/WxMpUserActionTest.java
@@ -0,0 +1,28 @@
+package me.chanjar.weixin.mp.bean.marketing;
+
+import com.google.common.collect.Lists;
+import org.testng.annotations.Test;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+/**
+ * 老板加点注释吧.
+ *
+ * @author Binary Wang
+ * @date 2019-07-14
+ */
+public class WxMpUserActionTest {
+
+  @Test
+  public void testListToJson() {
+    assertThat(WxMpUserAction.listToJson(Lists.newArrayList(WxMpUserAction.builder()
+      .actionParam(1)
+      .actionTime(122)
+      .actionType("haha")
+      .clickId("111")
+      .url("1222")
+      .userActionSetId(111L)
+      .build()
+    ))).isEqualTo("{\"actions\":[{\"user_action_set_id\":111,\"url\":\"1222\",\"action_time\":122,\"action_type\":\"haha\",\"trace\":{\"click_id\":\"111\"},\"action_param\":{\"value\":1}}]}");
+  }
+}