mirror of
https://gitee.com/binary/weixin-java-tools.git
synced 2026-03-10 00:13:40 +08:00
#193 增加小程序模块weixin-java-miniapp,支持小程序后台开发
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
package cn.binarywang.wx.miniapp.bean;
|
||||
|
||||
import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder;
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
/**
|
||||
* {"session_key":"nzoqhc3OnwHzeTxJs+inbQ==","expires_in":2592000,"openid":"oVBkZ0aYgDMDIywRdgPW8-joxXc4"}
|
||||
*
|
||||
* @author <a href="https://github.com/binarywang">Binary Wang</a>
|
||||
*/
|
||||
public class WxMaJscode2SessionResult {
|
||||
@SerializedName("session_key")
|
||||
private String sessionKey;
|
||||
|
||||
@SerializedName("expires_in")
|
||||
private Integer expiresin;
|
||||
|
||||
@SerializedName("openid")
|
||||
private String openid;
|
||||
|
||||
public String getSessionKey() {
|
||||
return sessionKey;
|
||||
}
|
||||
|
||||
public void setSessionKey(String sessionKey) {
|
||||
this.sessionKey = sessionKey;
|
||||
}
|
||||
|
||||
public Integer getExpiresin() {
|
||||
return expiresin;
|
||||
}
|
||||
|
||||
public void setExpiresin(Integer expiresin) {
|
||||
this.expiresin = expiresin;
|
||||
}
|
||||
|
||||
public String getOpenid() {
|
||||
return openid;
|
||||
}
|
||||
|
||||
public void setOpenid(String openid) {
|
||||
this.openid = openid;
|
||||
}
|
||||
|
||||
public static WxMaJscode2SessionResult fromJson(String json) {
|
||||
return WxMaGsonBuilder.create().fromJson(json, WxMaJscode2SessionResult.class);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,99 @@
|
||||
package cn.binarywang.wx.miniapp.bean;
|
||||
|
||||
import cn.binarywang.wx.miniapp.builder.ImageBuilder;
|
||||
import cn.binarywang.wx.miniapp.builder.TextBuilder;
|
||||
import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 客服消息
|
||||
*
|
||||
* @author <a href="https://github.com/binarywang">Binary Wang</a>
|
||||
*/
|
||||
public class WxMaKefuMessage implements Serializable {
|
||||
private static final long serialVersionUID = -9196732086954365246L;
|
||||
|
||||
private String toUser;
|
||||
private String msgType;
|
||||
private String content;
|
||||
private String mediaId;
|
||||
private String thumbMediaId;
|
||||
private String title;
|
||||
private String description;
|
||||
|
||||
/**
|
||||
* 获得文本消息builder
|
||||
*/
|
||||
public static TextBuilder TEXT() {
|
||||
return new TextBuilder();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得图片消息builder
|
||||
*/
|
||||
public static ImageBuilder IMAGE() {
|
||||
return new ImageBuilder();
|
||||
}
|
||||
|
||||
public String getToUser() {
|
||||
return this.toUser;
|
||||
}
|
||||
|
||||
public void setToUser(String toUser) {
|
||||
this.toUser = toUser;
|
||||
}
|
||||
|
||||
public String getMsgType() {
|
||||
return this.msgType;
|
||||
}
|
||||
|
||||
public void setMsgType(String msgType) {
|
||||
this.msgType = msgType;
|
||||
}
|
||||
|
||||
public String getContent() {
|
||||
return this.content;
|
||||
}
|
||||
|
||||
public void setContent(String content) {
|
||||
this.content = content;
|
||||
}
|
||||
|
||||
public String getMediaId() {
|
||||
return this.mediaId;
|
||||
}
|
||||
|
||||
public void setMediaId(String mediaId) {
|
||||
this.mediaId = mediaId;
|
||||
}
|
||||
|
||||
public String getThumbMediaId() {
|
||||
return this.thumbMediaId;
|
||||
}
|
||||
|
||||
public void setThumbMediaId(String thumbMediaId) {
|
||||
this.thumbMediaId = thumbMediaId;
|
||||
}
|
||||
|
||||
public String getTitle() {
|
||||
return this.title;
|
||||
}
|
||||
|
||||
public void setTitle(String title) {
|
||||
this.title = title;
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return this.description;
|
||||
}
|
||||
|
||||
public void setDescription(String description) {
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
public String toJson() {
|
||||
return WxMaGsonBuilder.create().toJson(this);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,236 @@
|
||||
package cn.binarywang.wx.miniapp.bean;
|
||||
|
||||
import cn.binarywang.wx.miniapp.config.WxMaConfig;
|
||||
import cn.binarywang.wx.miniapp.util.crypt.WxMaCryptUtils;
|
||||
import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder;
|
||||
import cn.binarywang.wx.miniapp.util.xml.XStreamTransformer;
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||
import com.thoughtworks.xstream.annotations.XStreamConverter;
|
||||
import me.chanjar.weixin.common.util.ToStringUtils;
|
||||
import me.chanjar.weixin.common.util.xml.XStreamCDataConverter;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.Serializable;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
/**
|
||||
* @author <a href="https://github.com/binarywang">Binary Wang</a>
|
||||
*/
|
||||
@XStreamAlias("xml")
|
||||
public class WxMaMessage implements Serializable {
|
||||
private static final long serialVersionUID = -3586245291677274914L;
|
||||
|
||||
@SerializedName("Encrypt")
|
||||
@XStreamAlias("Encrypt")
|
||||
@XStreamConverter(value = XStreamCDataConverter.class)
|
||||
private String encrypt;
|
||||
|
||||
@SerializedName("ToUserName")
|
||||
@XStreamAlias("ToUserName")
|
||||
@XStreamConverter(value = XStreamCDataConverter.class)
|
||||
private String toUser;
|
||||
|
||||
@SerializedName("FromUserName")
|
||||
@XStreamAlias("FromUserName")
|
||||
@XStreamConverter(value = XStreamCDataConverter.class)
|
||||
private String fromUser;
|
||||
|
||||
@SerializedName("CreateTime")
|
||||
@XStreamAlias("CreateTime")
|
||||
@XStreamConverter(value = XStreamCDataConverter.class)
|
||||
private Integer createTime;
|
||||
|
||||
@SerializedName("MsgDataFormat")
|
||||
@XStreamAlias("MsgDataFormat")
|
||||
@XStreamConverter(value = XStreamCDataConverter.class)
|
||||
private String msgType;
|
||||
|
||||
// 文本消息
|
||||
@SerializedName("Content")
|
||||
@XStreamAlias("Content")
|
||||
@XStreamConverter(value = XStreamCDataConverter.class)
|
||||
private String content;
|
||||
|
||||
@SerializedName("MsgId")
|
||||
@XStreamAlias("MsgId")
|
||||
@XStreamConverter(value = XStreamCDataConverter.class)
|
||||
private Long msgId;
|
||||
|
||||
// 图片消息
|
||||
@SerializedName("PicUrl")
|
||||
@XStreamAlias("PicUrl")
|
||||
@XStreamConverter(value = XStreamCDataConverter.class)
|
||||
private String picUrl;
|
||||
|
||||
@SerializedName("MediaId")
|
||||
@XStreamAlias("MediaId")
|
||||
@XStreamConverter(value = XStreamCDataConverter.class)
|
||||
private String mediaId;
|
||||
|
||||
// 事件消息
|
||||
@SerializedName("Event")
|
||||
@XStreamAlias("Event")
|
||||
@XStreamConverter(value = XStreamCDataConverter.class)
|
||||
private String event;
|
||||
|
||||
@SerializedName("SessionFrom")
|
||||
@XStreamAlias("SessionFrom")
|
||||
@XStreamConverter(value = XStreamCDataConverter.class)
|
||||
private String sessionFrom;
|
||||
|
||||
public static WxMaMessage fromXml(String xml) {
|
||||
return XStreamTransformer.fromXml(WxMaMessage.class, xml);
|
||||
}
|
||||
|
||||
public static WxMaMessage fromXml(InputStream is) {
|
||||
return XStreamTransformer.fromXml(WxMaMessage.class, is);
|
||||
}
|
||||
|
||||
/**
|
||||
* 从加密字符串转换
|
||||
*
|
||||
* @param encryptedXml 密文
|
||||
* @param wxMaConfig 配置存储器对象
|
||||
* @param timestamp 时间戳
|
||||
* @param nonce 随机串
|
||||
* @param msgSignature 签名串
|
||||
*/
|
||||
public static WxMaMessage fromEncryptedXml(String encryptedXml,
|
||||
WxMaConfig wxMaConfig, String timestamp, String nonce,
|
||||
String msgSignature) {
|
||||
String plainText = new WxMaCryptUtils(wxMaConfig).decrypt(msgSignature, timestamp, nonce, encryptedXml);
|
||||
return fromXml(plainText);
|
||||
}
|
||||
|
||||
public static WxMaMessage fromEncryptedXml(InputStream is, WxMaConfig wxMaConfig, String timestamp,
|
||||
String nonce, String msgSignature) {
|
||||
try {
|
||||
return fromEncryptedXml(IOUtils.toString(is, StandardCharsets.UTF_8), wxMaConfig,
|
||||
timestamp, nonce, msgSignature);
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
public static WxMaMessage fromJson(String json) {
|
||||
return WxMaGsonBuilder.create().fromJson(json, WxMaMessage.class);
|
||||
}
|
||||
|
||||
public static WxMaMessage fromEncryptedJson(String encryptedJson, WxMaConfig config) {
|
||||
try {
|
||||
WxMaMessage encryptedMessage = fromJson(encryptedJson);
|
||||
String plainText = new WxMaCryptUtils(config).decrypt(encryptedMessage.getEncrypt());
|
||||
return fromJson(plainText);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
public static WxMaMessage fromEncryptedJson(InputStream inputStream, WxMaConfig config) {
|
||||
try {
|
||||
return fromEncryptedJson(IOUtils.toString(inputStream, StandardCharsets.UTF_8), config);
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return ToStringUtils.toSimpleString(this);
|
||||
}
|
||||
|
||||
public String toJson() {
|
||||
return WxMaGsonBuilder.create().toJson(this);
|
||||
}
|
||||
|
||||
public String getToUser() {
|
||||
return toUser;
|
||||
}
|
||||
|
||||
public void setToUser(String toUser) {
|
||||
this.toUser = toUser;
|
||||
}
|
||||
|
||||
public String getFromUser() {
|
||||
return fromUser;
|
||||
}
|
||||
|
||||
public void setFromUser(String fromUser) {
|
||||
this.fromUser = fromUser;
|
||||
}
|
||||
|
||||
public Integer getCreateTime() {
|
||||
return createTime;
|
||||
}
|
||||
|
||||
public void setCreateTime(Integer createTime) {
|
||||
this.createTime = createTime;
|
||||
}
|
||||
|
||||
public String getMsgType() {
|
||||
return msgType;
|
||||
}
|
||||
|
||||
public void setMsgType(String msgType) {
|
||||
this.msgType = msgType;
|
||||
}
|
||||
|
||||
public String getContent() {
|
||||
return content;
|
||||
}
|
||||
|
||||
public void setContent(String content) {
|
||||
this.content = content;
|
||||
}
|
||||
|
||||
public Long getMsgId() {
|
||||
return msgId;
|
||||
}
|
||||
|
||||
public void setMsgId(Long msgId) {
|
||||
this.msgId = msgId;
|
||||
}
|
||||
|
||||
public String getPicUrl() {
|
||||
return picUrl;
|
||||
}
|
||||
|
||||
public void setPicUrl(String picUrl) {
|
||||
this.picUrl = picUrl;
|
||||
}
|
||||
|
||||
public String getMediaId() {
|
||||
return mediaId;
|
||||
}
|
||||
|
||||
public void setMediaId(String mediaId) {
|
||||
this.mediaId = mediaId;
|
||||
}
|
||||
|
||||
public String getEvent() {
|
||||
return event;
|
||||
}
|
||||
|
||||
public void setEvent(String event) {
|
||||
this.event = event;
|
||||
}
|
||||
|
||||
public String getSessionFrom() {
|
||||
return sessionFrom;
|
||||
}
|
||||
|
||||
public void setSessionFrom(String sessionFrom) {
|
||||
this.sessionFrom = sessionFrom;
|
||||
}
|
||||
|
||||
public String getEncrypt() {
|
||||
return encrypt;
|
||||
}
|
||||
|
||||
public void setEncrypt(String encrypt) {
|
||||
this.encrypt = encrypt;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
package cn.binarywang.wx.miniapp.bean;
|
||||
|
||||
import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author <a href="https://github.com/binarywang">Binary Wang</a>
|
||||
*/
|
||||
public class WxMaQrcode implements Serializable {
|
||||
private static final long serialVersionUID = 5777119669111011584L;
|
||||
private String path;
|
||||
private int width = 430;
|
||||
|
||||
public WxMaQrcode(String path, int width) {
|
||||
this.path = path;
|
||||
this.width = width;
|
||||
}
|
||||
|
||||
public static WxMaQrcode fromJson(String json) {
|
||||
return WxMaGsonBuilder.create().fromJson(json, WxMaQrcode.class);
|
||||
}
|
||||
|
||||
public String getPath() {
|
||||
return path;
|
||||
}
|
||||
|
||||
public void setPath(String path) {
|
||||
this.path = path;
|
||||
}
|
||||
|
||||
public int getWidth() {
|
||||
return width;
|
||||
}
|
||||
|
||||
public void setWidth(int width) {
|
||||
this.width = width;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return WxMaGsonBuilder.create().toJson(this);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,214 @@
|
||||
package cn.binarywang.wx.miniapp.bean;
|
||||
|
||||
import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 参考 https://mp.weixin.qq.com/debug/wxadoc/dev/api/notice.html#接口说明 模板消息部分
|
||||
*
|
||||
* @author <a href="https://github.com/binarywang">Binary Wang</a>
|
||||
*/
|
||||
public class WxMaTemplateMessage implements Serializable {
|
||||
private static final long serialVersionUID = 5063374783759519418L;
|
||||
/**
|
||||
* touser 是 接收者(用户)的 openid
|
||||
*/
|
||||
private String toUser;
|
||||
/**
|
||||
* template_id 是 所需下发的模板消息的id
|
||||
*/
|
||||
private String templateId;
|
||||
/**
|
||||
* <pre>
|
||||
* page 否 点击模板卡片后的跳转页面,仅限本小程序内的页面。支持带参数,(示例index?foo=bar)。该字段不填则模板无跳转。
|
||||
* </pre>
|
||||
*/
|
||||
private String page;
|
||||
/**
|
||||
* form_id 是 表单提交场景下,为 submit 事件带上的 formId;支付场景下,为本次支付的 prepay_id
|
||||
*/
|
||||
private String formId;
|
||||
/**
|
||||
* data 是 模板内容,不填则下发空模板
|
||||
*/
|
||||
private List<Data> data = new ArrayList<>();
|
||||
/**
|
||||
* color 否 模板内容字体的颜色,不填默认黑色
|
||||
*/
|
||||
private String color;
|
||||
/**
|
||||
* emphasis_keyword 否 模板需要放大的关键词,不填则默认无放大
|
||||
*/
|
||||
private String emphasisKeyword;
|
||||
|
||||
private WxMaTemplateMessage(Builder builder) {
|
||||
setToUser(builder.toUser);
|
||||
setTemplateId(builder.templateId);
|
||||
setPage(builder.page);
|
||||
setFormId(builder.formId);
|
||||
setData(builder.data);
|
||||
setColor(builder.color);
|
||||
setEmphasisKeyword(builder.emphasisKeyword);
|
||||
}
|
||||
|
||||
public static Builder newBuilder() {
|
||||
return new Builder();
|
||||
}
|
||||
|
||||
public String toJson() {
|
||||
return WxMaGsonBuilder.create().toJson(this);
|
||||
}
|
||||
|
||||
public String getToUser() {
|
||||
return toUser;
|
||||
}
|
||||
|
||||
public void setToUser(String toUser) {
|
||||
this.toUser = toUser;
|
||||
}
|
||||
|
||||
public String getTemplateId() {
|
||||
return templateId;
|
||||
}
|
||||
|
||||
public void setTemplateId(String templateId) {
|
||||
this.templateId = templateId;
|
||||
}
|
||||
|
||||
public String getPage() {
|
||||
return page;
|
||||
}
|
||||
|
||||
public void setPage(String page) {
|
||||
this.page = page;
|
||||
}
|
||||
|
||||
public String getFormId() {
|
||||
return formId;
|
||||
}
|
||||
|
||||
public void setFormId(String formId) {
|
||||
this.formId = formId;
|
||||
}
|
||||
|
||||
public List<Data> getData() {
|
||||
return data;
|
||||
}
|
||||
|
||||
public void setData(List<Data> data) {
|
||||
this.data = data;
|
||||
}
|
||||
|
||||
public String getColor() {
|
||||
return color;
|
||||
}
|
||||
|
||||
public void setColor(String color) {
|
||||
this.color = color;
|
||||
}
|
||||
|
||||
public String getEmphasisKeyword() {
|
||||
return emphasisKeyword;
|
||||
}
|
||||
|
||||
public void setEmphasisKeyword(String emphasisKeyword) {
|
||||
this.emphasisKeyword = emphasisKeyword;
|
||||
}
|
||||
|
||||
public static class Data {
|
||||
private String name;
|
||||
private String value;
|
||||
private String color;
|
||||
|
||||
public Data(String name, String value) {
|
||||
this.name = name;
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public Data(String name, String value, String color) {
|
||||
this.name = name;
|
||||
this.value = value;
|
||||
this.color = color;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return this.name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getValue() {
|
||||
return this.value;
|
||||
}
|
||||
|
||||
public void setValue(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public String getColor() {
|
||||
return this.color;
|
||||
}
|
||||
|
||||
public void setColor(String color) {
|
||||
this.color = color;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static final class Builder {
|
||||
private String toUser;
|
||||
private String templateId;
|
||||
private String page;
|
||||
private String formId;
|
||||
private List<Data> data;
|
||||
private String color;
|
||||
private String emphasisKeyword;
|
||||
|
||||
private Builder() {
|
||||
}
|
||||
|
||||
public Builder toUser(String toUser) {
|
||||
this.toUser = toUser;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder templateId(String templateId) {
|
||||
this.templateId = templateId;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder page(String page) {
|
||||
this.page = page;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder formId(String formId) {
|
||||
this.formId = formId;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder data(List<Data> data) {
|
||||
this.data = data;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder color(String color) {
|
||||
this.color = color;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder emphasisKeyword(String emphasisKeyword) {
|
||||
this.emphasisKeyword = emphasisKeyword;
|
||||
return this;
|
||||
}
|
||||
|
||||
public WxMaTemplateMessage build() {
|
||||
return new WxMaTemplateMessage(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,131 @@
|
||||
package cn.binarywang.wx.miniapp.bean;
|
||||
|
||||
import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder;
|
||||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||
import org.apache.commons.lang3.builder.ToStringStyle;
|
||||
|
||||
/**
|
||||
* @author <a href="https://github.com/binarywang">Binary Wang</a>
|
||||
*/
|
||||
public class WxMaUserInfo {
|
||||
private String openId;
|
||||
private String nickName;
|
||||
private String gender;
|
||||
private String language;
|
||||
private String city;
|
||||
private String province;
|
||||
private String country;
|
||||
private String avatarUrl;
|
||||
private String unionId;
|
||||
private Watermark watermark;
|
||||
|
||||
public static WxMaUserInfo fromJson(String json) {
|
||||
return WxMaGsonBuilder.create().fromJson(json, WxMaUserInfo.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE);
|
||||
}
|
||||
|
||||
public String getOpenId() {
|
||||
return openId;
|
||||
}
|
||||
|
||||
public void setOpenId(String openId) {
|
||||
this.openId = openId;
|
||||
}
|
||||
|
||||
public String getNickName() {
|
||||
return nickName;
|
||||
}
|
||||
|
||||
public void setNickName(String nickName) {
|
||||
this.nickName = nickName;
|
||||
}
|
||||
|
||||
public String getGender() {
|
||||
return gender;
|
||||
}
|
||||
|
||||
public void setGender(String gender) {
|
||||
this.gender = gender;
|
||||
}
|
||||
|
||||
public String getLanguage() {
|
||||
return language;
|
||||
}
|
||||
|
||||
public void setLanguage(String language) {
|
||||
this.language = language;
|
||||
}
|
||||
|
||||
public String getCity() {
|
||||
return city;
|
||||
}
|
||||
|
||||
public void setCity(String city) {
|
||||
this.city = city;
|
||||
}
|
||||
|
||||
public String getProvince() {
|
||||
return province;
|
||||
}
|
||||
|
||||
public void setProvince(String province) {
|
||||
this.province = province;
|
||||
}
|
||||
|
||||
public String getCountry() {
|
||||
return country;
|
||||
}
|
||||
|
||||
public void setCountry(String country) {
|
||||
this.country = country;
|
||||
}
|
||||
|
||||
public String getAvatarUrl() {
|
||||
return avatarUrl;
|
||||
}
|
||||
|
||||
public void setAvatarUrl(String avatarUrl) {
|
||||
this.avatarUrl = avatarUrl;
|
||||
}
|
||||
|
||||
public String getUnionId() {
|
||||
return unionId;
|
||||
}
|
||||
|
||||
public void setUnionId(String unionId) {
|
||||
this.unionId = unionId;
|
||||
}
|
||||
|
||||
public Watermark getWatermark() {
|
||||
return watermark;
|
||||
}
|
||||
|
||||
public void setWatermark(Watermark watermark) {
|
||||
this.watermark = watermark;
|
||||
}
|
||||
|
||||
public static class Watermark {
|
||||
private String timestamp;
|
||||
private String appid;
|
||||
|
||||
public String getTimestamp() {
|
||||
return timestamp;
|
||||
}
|
||||
|
||||
public void setTimestamp(String timestamp) {
|
||||
this.timestamp = timestamp;
|
||||
}
|
||||
|
||||
public String getAppid() {
|
||||
return appid;
|
||||
}
|
||||
|
||||
public void setAppid(String appid) {
|
||||
this.appid = appid;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user