diff --git a/mallinkService/src/main/java/com/iformall/douyin/miniapp/api/TtMaMsgService.java b/mallinkService/src/main/java/com/iformall/douyin/miniapp/api/TtMaMsgService.java new file mode 100644 index 000000000..f85750c87 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/douyin/miniapp/api/TtMaMsgService.java @@ -0,0 +1,30 @@ +package com.iformall.douyin.miniapp.api; + +import cn.binarywang.wx.miniapp.bean.*; +import com.google.gson.JsonObject; +import com.iformall.douyin.miniapp.api.bean.TtMaSubscribeMessage; +import me.chanjar.weixin.common.error.WxErrorException; + +/** + *
+ * 消息发送接口 + *+ * + * @author Binary Wang + */ +public interface TtMaMsgService { + + String SUBSCRIBE_MSG_SEND_URL = "https://developer.toutiao.com/api/apps/subscribe_notification/developer/v1/notify"; + + /** + *
+ * 发送订阅消息 + * https://microapp.bytedance.com/docs/zh-CN/mini-app/develop/server/subscribe-notification/notify/ + *+ * + * @param subscribeMessage 订阅消息 + * @throws WxErrorException . + */ + void sendSubscribeMsg(TtMaSubscribeMessage subscribeMessage) throws WxErrorException; + +} diff --git a/mallinkService/src/main/java/com/iformall/douyin/miniapp/api/TtMaService.java b/mallinkService/src/main/java/com/iformall/douyin/miniapp/api/TtMaService.java index fffb99a89..e7376c79a 100644 --- a/mallinkService/src/main/java/com/iformall/douyin/miniapp/api/TtMaService.java +++ b/mallinkService/src/main/java/com/iformall/douyin/miniapp/api/TtMaService.java @@ -127,4 +127,6 @@ public interface TtMaService { */ TtMaQrcodeService getQrcodeService(); + TtMaMsgService getMsgService(); + } diff --git a/mallinkService/src/main/java/com/iformall/douyin/miniapp/api/bean/TtMaGsonBuilder.java b/mallinkService/src/main/java/com/iformall/douyin/miniapp/api/bean/TtMaGsonBuilder.java new file mode 100644 index 000000000..410adfdf6 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/douyin/miniapp/api/bean/TtMaGsonBuilder.java @@ -0,0 +1,30 @@ +package com.iformall.douyin.miniapp.api.bean; + +import cn.binarywang.wx.miniapp.bean.WxMaSubscribeMessage; +import cn.binarywang.wx.miniapp.bean.WxMaTemplateMessage; +import cn.binarywang.wx.miniapp.bean.WxMaUniformMessage; +import cn.binarywang.wx.miniapp.bean.analysis.WxMaRetainInfo; +import cn.binarywang.wx.miniapp.bean.analysis.WxMaUserPortrait; +import cn.binarywang.wx.miniapp.bean.analysis.WxMaVisitDistribution; +import cn.binarywang.wx.miniapp.bean.code.WxMaCodeCommitRequest; +import cn.binarywang.wx.miniapp.bean.code.WxMaCodeVersionDistribution; +import cn.binarywang.wx.miniapp.util.json.*; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; + +/** + * @author Binary Wang + */ +public class TtMaGsonBuilder { + private static final GsonBuilder INSTANCE = new GsonBuilder(); + + static { + INSTANCE.disableHtmlEscaping(); + INSTANCE.registerTypeAdapter(TtMaSubscribeMessage.class, new TtMaSubscribeMessageGsonAdapter()); + } + + public static Gson create() { + return INSTANCE.create(); + } + +} diff --git a/mallinkService/src/main/java/com/iformall/douyin/miniapp/api/bean/TtMaSubscribeMessage.java b/mallinkService/src/main/java/com/iformall/douyin/miniapp/api/bean/TtMaSubscribeMessage.java new file mode 100644 index 000000000..f4b547a6e --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/douyin/miniapp/api/bean/TtMaSubscribeMessage.java @@ -0,0 +1,94 @@ +package com.iformall.douyin.miniapp.api.bean; + +import cn.binarywang.wx.miniapp.constant.WxMaConstants; +import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; +import lombok.*; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; + +/** + * 订阅消息. + + * @author S + */ +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class TtMaSubscribeMessage implements Serializable { + + private static final long serialVersionUID = -5931206947637944325L; + +// private String accessToken; + + private String appId; + + /** + * 接收者(用户)的 openid. + *
+ * 参数:touser + * 是否必填: 是 + * 描述: 接收者(用户)的 openid + *+ */ + private String openId; + + /** + * 所需下发的模板消息的id. + *
+ * 参数:template_id + * 是否必填: 是 + * 描述: 所需下发的模板消息的id + *+ */ + private String tplId; + + /** + * 点击模板卡片后的跳转页面,仅限本小程序内的页面. + *
+ * 参数:page + * 是否必填: 否 + * 描述: 点击模板卡片后的跳转页面,仅限本小程序内的页面。支持带参数,(示例index?foo=bar)。该字段不填则模板无跳转。 + *+ */ + private String page; + + /** + * 模板内容,不填则下发空模板. + *
+ * 参数:data + * 是否必填: 是 + * 描述: 模板内容,不填则下发空模板 + *+ */ + private List data; + + + public TtMaSubscribeMessage addData(Data datum) { + if (this.data == null) { + this.data = new ArrayList<>(); + } + + this.data.add(datum); + + return this; + } + + public String toJson() { + return TtMaGsonBuilder.create().toJson(this); + } + + @lombok.Data + @NoArgsConstructor + @AllArgsConstructor + public static class Data implements Serializable { + private static final long serialVersionUID = 1L; + + private String name; + private String value; + } + +} diff --git a/mallinkService/src/main/java/com/iformall/douyin/miniapp/api/bean/TtMaSubscribeMessageGsonAdapter.java b/mallinkService/src/main/java/com/iformall/douyin/miniapp/api/bean/TtMaSubscribeMessageGsonAdapter.java new file mode 100644 index 000000000..acc23654d --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/douyin/miniapp/api/bean/TtMaSubscribeMessageGsonAdapter.java @@ -0,0 +1,44 @@ +package com.iformall.douyin.miniapp.api.bean; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonSerializationContext; +import com.google.gson.JsonSerializer; + +import java.lang.reflect.Type; + +/** + * . + * + * @author S + */ +public class TtMaSubscribeMessageGsonAdapter implements JsonSerializer