package com.foxinmy.weixin4j.mp.message;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
import com.alibaba.fastjson.annotation.JSONCreator;
import com.alibaba.fastjson.annotation.JSONField;
import com.foxinmy.weixin4j.util.NameValue;
/**
* 模板消息
*
* @className TemplateMessage
* @author jinyu(foxinmy@gmail.com)
* @date 2014年9月29日
* @since JDK 1.6
* @see <a
* href="https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1433751277&token=&lang=zh_CN">模板消息</a>
*/
public class TemplateMessage implements Serializable {
private static final long serialVersionUID = 7950608393821661436L;
/**
* 用户的openid
*/
@JSONField(name = "touser")
private String toUser;
/**
* 模板ID
*/
@JSONField(name = "template_id")
private String templateId;
/**
* 点击消息跳转的url
*/
private String url;
/**
* 头部信息(first第一行)
*/
@JSONField(serialize = false)
private NameValue head;
/**
* 尾部信息(remark最后行)
*/
@JSONField(serialize = false)
private NameValue tail;
/**
* 数据项
*/
@JSONField(name = "data")
private Map<String, NameValue> content;
private final static String HEAD_KEY = "first";
private final static String TAIL_KEY = "remark";
private final static String DEFAULT_COLOR = "#173177";
@JSONCreator
public TemplateMessage(@JSONField(name = "toUser") String toUser,
@JSONField(name = "templateId") String templateId,
@JSONField(name = "url") String url) {
this.toUser = toUser;
this.templateId = templateId;
this.url = url;
this.content = new HashMap<String, NameValue>();
}
public String getToUser() {
return toUser;
}
public String getTemplateId() {
return templateId;
}
public String getUrl() {
return url;
}
public NameValue getHead() {
return head == null ? content.get(HEAD_KEY) : head;
}
public NameValue getTail() {
return tail == null ? content.get(TAIL_KEY) : tail;
}
public Map<String, NameValue> getContent() {
return content;
}
/**
* 新增头部字段(默认颜色为#FF0000)
*
* @param text
* 字段文本
* @return
*/
public TemplateMessage pushHead(String text) {
return pushHead("#FF0000", text);
}
/**
* 新增头部字段
*
* @param color
* 文字颜色
* @param text
* 字段文本
* @return
*/
public TemplateMessage pushHead(String color, String text) {
head = new NameValue(color, text);
content.put(HEAD_KEY, head);
return this;
}
/**
* 新增尾部字段(默认颜色为#173177)
*
* @param text
* 字段文本
* @return
*/
public TemplateMessage pushTail(String text) {
return pushTail(DEFAULT_COLOR, text);
}
/**
* 新增尾部字段
*
* @param color
* 文字颜色
* @param text
* 字段文本
* @return
*/
public TemplateMessage pushTail(String color, String text) {
tail = new NameValue(color, text);
content.put(TAIL_KEY, tail);
return this;
}
/**
* 新增字段项(默认颜色为#173177)
*
* @param key
* 预留的字段名
* @param text
* 字段文本
* @return
*/
public TemplateMessage pushItem(String key, String text) {
return pushItem(key, DEFAULT_COLOR, text);
}
/**
* 新增字段项
*
* @param key
* 预留的字段名
* @param color
* 文字颜色
* @param text
* 字段文本
* @return
*/
public TemplateMessage pushItem(String key, String color, String text) {
content.put(key, new NameValue(color, text));
return this;
}
/**
* 设置所有字段项
*
* @param items
*/
public void setItems(Map<String, NameValue> items) {
this.content = items;
}
@Override
public String toString() {
return "TemplateMessage [toUser=" + toUser + ", templateId="
+ templateId + ", url=" + url + ", head=" + getHead()
+ ", tail=" + getTail() + ", content=" + content + "]";
}
}