All Downloads are FREE. Search and download functionalities are using the official Maven repository.

me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage Maven / Gradle / Ivy

The newest version!
package me.chanjar.weixin.mp.bean.template;

import lombok.*;
import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
import org.apache.commons.lang3.StringUtils;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

/**
 * 模板消息.
 * 参考 发送模板消息接口部分
 *
 * @author Binary Wang
 */
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class WxMpTemplateMessage implements Serializable {
  private static final long serialVersionUID = 5063374783759519418L;

  /**
   * 接收者openid.
   */
  private String toUser;

  /**
   * 模板ID.
   */
  private String templateId;

  /**
   * 模板跳转链接.
   * 
   * url和miniprogram都是非必填字段,若都不传则模板无跳转;若都传,会优先跳转至小程序。
   * 开发者可根据实际需要选择其中一种跳转方式即可。当用户的微信客户端版本不支持跳小程序时,将会跳转至url。
   * 
*/ private String url; /** * 跳小程序所需数据,不需跳小程序可不用传该数据. * * @see #url */ private MiniProgram miniProgram; /** * 防重入id. */ private String clientMsgId; /** * 模板数据. */ @Builder.Default private List data = new ArrayList<>(); public WxMpTemplateMessage addData(WxMpTemplateData datum) { if (this.data == null) { this.data = new ArrayList<>(); } this.data.add(resetValue(datum)); return this; } /** * 处理微信模版消息字符串长度问题 * * @link 模板消息 */ private WxMpTemplateData resetValue(WxMpTemplateData datum) { String name = datum.getName(); String value = datum.getValue(); if (StringUtils.startsWith(name, "thing") && value.length() > 20) { value = StringUtils.substring(value, 0, 17) + "..."; } else if (StringUtils.startsWith(name, "character_string") && value.length() > 32) { value = StringUtils.substring(value, 0, 29) + "..."; } else if (StringUtils.startsWith(name, "phone_number") && value.length() > 17) { value = StringUtils.substring(value, 0, 14) + "..."; } else if (StringUtils.startsWith(name, "car_number") && value.length() > 8) { value = StringUtils.substring(value, 0, 5) + "..."; } else if (StringUtils.startsWith(name, "const") && value.length() > 20) { value = StringUtils.substring(value, 0, 17) + "..."; } datum.setValue(value); return datum; } public String toJson() { return WxMpGsonBuilder.create().toJson(this); } @Data @NoArgsConstructor @AllArgsConstructor public static class MiniProgram implements Serializable { private static final long serialVersionUID = -7945254706501974849L; private String appid; private String pagePath; /** * 是否使用path,否则使用pagepath. * 加入此字段是基于微信官方接口变化多端的考虑 */ private boolean usePath = false; } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy