From b45f20a8566d7469d8bf92183056c383977e39bf Mon Sep 17 00:00:00 2001
From: S <sshzh90@gmail.com>
Date: Tue, 27 Aug 2019 12:31:16 +0800
Subject: [PATCH] =?UTF-8?q?:sparkles:=20#1177=20=E5=BC=80=E6=94=BE?=
 =?UTF-8?q?=E5=B9=B3=E5=8F=B0=E6=A8=A1=E5=9D=97=E5=A2=9E=E5=8A=A0=E5=B0=8F?=
 =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E5=9F=BA=E7=A1=80=E4=BF=A1=E6=81=AF=E8=AE=BE?=
 =?UTF-8?q?=E7=BD=AE=E6=8E=A5=E5=8F=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../weixin/open/api/WxOpenMaService.java      | 58 +++++++++++++++++++
 .../open/api/impl/WxOpenMaServiceImpl.java    | 57 +++++++++++++++++-
 .../result/WxOpenMaSearchStatusResult.java    | 20 +++++++
 .../bean/result/WxOpenMaShowItemResult.java   | 34 +++++++++++
 4 files changed, 166 insertions(+), 3 deletions(-)
 create mode 100644 weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/result/WxOpenMaSearchStatusResult.java
 create mode 100644 weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/result/WxOpenMaShowItemResult.java

diff --git a/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/WxOpenMaService.java b/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/WxOpenMaService.java
index 1a0611431..784aa2453 100644
--- a/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/WxOpenMaService.java
+++ b/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/WxOpenMaService.java
@@ -70,6 +70,35 @@ public interface WxOpenMaService extends WxMaService {
    */
   String API_GET_TESTERLIST = "https://api.weixin.qq.com/wxa/memberauth";
 
+  /**
+   * 以下接口基础信息设置
+   * <p>
+   *     https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=21517799059ZSEMr&token=6f965b5daf30a98a6bbd2a386faea5c934e929bf&lang=zh_CN
+   * </p>
+   */
+
+  /**
+   * 1. 设置小程序隐私设置(是否可被搜索)
+   */
+  String API_CHANGE_WXA_SEARCH_STATUS = "https://api.weixin.qq.com/wxa/changewxasearchstatus";
+
+  /**
+   * 2. 查询小程序当前隐私设置(是否可被搜索)
+   */
+  String API_GET_WXA_SEARCH_STATUS = "https://api.weixin.qq.com/wxa/getwxasearchstatus";
+
+  /**
+   * 3.1. 获取展示的公众号信息
+   */
+  String API_GET_SHOW_WXA_ITEM = "https://api.weixin.qq.com/wxa/getshowwxaitem";
+
+  /**
+   * 3.2 设置展示的公众号
+   */
+  String API_UPDATE_SHOW_WXA_ITEM = "https://api.weixin.qq.com/wxa/updateshowwxaitem";
+
+
+
   /**
    * 以下接口为三方平台代小程序实现的代码管理功能
    * <p>
@@ -238,6 +267,35 @@ public interface WxOpenMaService extends WxMaService {
    */
   WxOpenMaTesterListResult getTesterList() throws WxErrorException;
 
+
+
+  /**
+   * 设置小程序隐私设置(是否可被搜索)
+   *
+   * @param status 1表示不可搜索,0表示可搜索
+   */
+  public WxOpenResult changeWxaSearchStatus(Integer status) throws WxErrorException;
+
+
+  /**
+   * 2. 查询小程序当前隐私设置(是否可被搜索)
+   */
+  public WxOpenMaSearchStatusResult getWxaSearchStatus() throws WxErrorException;
+
+  /**
+   * 3.1 获取展示的公众号信息
+   */
+  public WxOpenMaShowItemResult getShowWxaItem() throws WxErrorException;
+
+
+  /**
+   * 3.2 设置展示的公众号
+   *
+   * @param flag    0 关闭,1 开启
+   * @param mpappid 如果开启,需要传新的公众号appid
+   */
+  public WxOpenResult updateShowwxaitem(Integer flag, String mpappid) throws WxErrorException;
+
   /**
    * 1、为授权的小程序帐号上传小程序代码
    *
diff --git a/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenMaServiceImpl.java b/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenMaServiceImpl.java
index caf187eee..2696d9d27 100644
--- a/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenMaServiceImpl.java
+++ b/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenMaServiceImpl.java
@@ -137,7 +137,7 @@ public class WxOpenMaServiceImpl extends WxMaServiceImpl implements WxOpenMaServ
   /**
    * 设置小程序的业务域名
    *
-   * @param action     add添加, delete删除, set覆盖
+   * @param action add添加, delete删除, set覆盖
    * @return
    */
   @Override
@@ -208,6 +208,58 @@ public class WxOpenMaServiceImpl extends WxMaServiceImpl implements WxOpenMaServ
     return WxMaGsonBuilder.create().fromJson(response, WxOpenMaTesterListResult.class);
   }
 
+
+  /**
+   * 设置小程序隐私设置(是否可被搜索)
+   *
+   * @param status 1表示不可搜索,0表示可搜索
+   */
+  @Override
+  public WxOpenResult changeWxaSearchStatus(Integer status) throws WxErrorException {
+    JsonObject paramJson = new JsonObject();
+    paramJson.addProperty("status", status);
+    String response = post(API_CHANGE_WXA_SEARCH_STATUS, GSON.toJson(paramJson));
+    return WxMaGsonBuilder.create().fromJson(response, WxOpenResult.class);
+  }
+
+
+  /**
+   * 2. 查询小程序当前隐私设置(是否可被搜索)
+   */
+  @Override
+  public WxOpenMaSearchStatusResult getWxaSearchStatus() throws WxErrorException {
+    JsonObject paramJson = new JsonObject();
+    String response = post(API_GET_WXA_SEARCH_STATUS, GSON.toJson(paramJson));
+    return WxMaGsonBuilder.create().fromJson(response, WxOpenMaSearchStatusResult.class);
+  }
+
+
+  /**
+   * 3.1 获取展示的公众号信息
+   */
+  @Override
+  public WxOpenMaShowItemResult getShowWxaItem() throws WxErrorException {
+    String response = get(API_GET_SHOW_WXA_ITEM, null);
+    return WxMaGsonBuilder.create().fromJson(response, WxOpenMaShowItemResult.class);
+  }
+
+
+  /**
+   * 3.2 设置展示的公众号
+   *
+   * @param flag    0 关闭,1 开启
+   * @param mpappid 如果开启,需要传新的公众号appid
+   */
+  @Override
+  public WxOpenResult updateShowwxaitem(Integer flag, String mpappid) throws WxErrorException {
+    JsonObject paramJson = new JsonObject();
+    paramJson.addProperty("wxa_subscribe_biz_flag", flag);
+    paramJson.addProperty("appid", mpappid);
+    String response = post(API_UPDATE_SHOW_WXA_ITEM, GSON.toJson(paramJson));
+    return WxMaGsonBuilder.create().fromJson(response, WxOpenResult.class);
+  }
+
+
   /**
    * 1、为授权的小程序帐号上传小程序代码
    *
@@ -330,6 +382,7 @@ public class WxOpenMaServiceImpl extends WxMaServiceImpl implements WxOpenMaServ
 
   /**
    * 10. 修改小程序线上代码的可见状态(仅供第三方代小程序调用)
+   *
    * @param action 设置可访问状态,发布后默认可访问,close为不可见,open为可见
    * @return
    * @throws WxErrorException
@@ -413,7 +466,6 @@ public class WxOpenMaServiceImpl extends WxMaServiceImpl implements WxOpenMaServ
   }
 
 
-
   /**
    * 13. 设置最低基础库版本(仅供第三方代小程序调用)
    *
@@ -471,7 +523,6 @@ public class WxOpenMaServiceImpl extends WxMaServiceImpl implements WxOpenMaServ
   }
 
 
-
   /**
    * 将字符串对象转化为GsonArray对象
    *
diff --git a/weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/result/WxOpenMaSearchStatusResult.java b/weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/result/WxOpenMaSearchStatusResult.java
new file mode 100644
index 000000000..9c5c08f1a
--- /dev/null
+++ b/weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/result/WxOpenMaSearchStatusResult.java
@@ -0,0 +1,20 @@
+package me.chanjar.weixin.open.bean.result;
+
+import com.google.gson.annotations.SerializedName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import me.chanjar.weixin.open.util.json.WxOpenGsonBuilder;
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class WxOpenMaSearchStatusResult extends WxOpenResult {
+  private static final long serialVersionUID = -1843419921284224813L;
+
+  @SerializedName("status")
+  private Integer status;
+
+  @Override
+  public String toString() {
+    return WxOpenGsonBuilder.create().toJson(this);
+  }
+}
diff --git a/weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/result/WxOpenMaShowItemResult.java b/weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/result/WxOpenMaShowItemResult.java
new file mode 100644
index 000000000..a0a30f927
--- /dev/null
+++ b/weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/result/WxOpenMaShowItemResult.java
@@ -0,0 +1,34 @@
+package me.chanjar.weixin.open.bean.result;
+
+import com.google.gson.annotations.SerializedName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import me.chanjar.weixin.open.util.json.WxOpenGsonBuilder;
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class WxOpenMaShowItemResult extends WxOpenResult {
+
+  private static final long serialVersionUID = -5707576958339934210L;
+
+  @SerializedName("is_open")
+  private Integer isOpen;
+
+  @SerializedName("can_open")
+  private Integer canOpen;
+
+  @SerializedName("appid")
+  private String appid;
+
+  @SerializedName("nickname")
+  private String nickname;
+
+  @SerializedName("headimg")
+  private String headimg;
+
+  @Override
+  public String toString() {
+    return WxOpenGsonBuilder.create().toJson(this);
+  }
+
+}