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

me.chanjar.weixin.cp.bean.message.WxCpSchoolContactMessage Maven / Gradle / Ivy

There is a newer version: 4.6.7.B
Show newest version
package me.chanjar.weixin.cp.bean.message;

import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.annotations.SerializedName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import me.chanjar.weixin.common.api.WxConsts.SchoolContactMsgType;
import me.chanjar.weixin.common.util.json.WxGsonBuilder;
import me.chanjar.weixin.cp.bean.article.MpnewsArticle;
import me.chanjar.weixin.cp.bean.article.NewArticle;
import org.apache.commons.lang3.ArrayUtils;

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

import static me.chanjar.weixin.common.api.WxConsts.SchoolContactMsgType.*;

/**
 * 发送「学校通知」
 * https://developer.work.weixin.qq.com/document/path/92321
 *
 * @author Wang_Wong created on  2022-06-29
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
public class WxCpSchoolContactMessage implements Serializable {
  private static final long serialVersionUID = 8833792280163704238L;

  /**
   * 指定发送对象,0表示发送给家长,1表示发送给学生,2表示发送给家长和学生,默认为0。
   */
  @SerializedName("recv_scope")
  private Integer recvScope = 0;

  /**
   * 家校通讯录家长列表,recv_scope为0或2表示发送给对应的家长,recv_scope为1忽略,(最多支持1000个)
   */
  @SerializedName("to_parent_userid")
  private String[] toParentUserId;

  /**
   * 家校通讯录学生列表,recv_scope为0表示发送给学生的所有家长,recv_scope为1表示发送给学生,recv_scope为2表示发送给学生和学生的所有家长(最多支持1000个)
   */
  @SerializedName("to_student_userid")
  private String[] toStudentUserId;

  /**
   * 家校通讯录部门列表,recv_scope为0表示发送给班级的所有家长,recv_scope为1表示发送给班级的所有学生,recv_scope为2表示发送给班级的所有学生和家长(最多支持100个)
   */
  @SerializedName("to_party")
  private String[] toParty;

  /**
   * 1表示字段生效,0表示字段无效。recv_scope为0表示发送给学校的所有家长,recv_scope为1表示发送给学校的所有学生,recv_scope为2表示发送给学校的所有学生和家长,默认为0
   */
  @SerializedName("toall")
  private Boolean toAll = false;

  /**
   * 消息类型
   */
  @SerializedName("msgtype")
  private String msgType;

  /**
   * 企业应用的id,整型。可在应用的设置页面查看
   */
  @SerializedName("agentid")
  private Integer agentId;

  /**
   * 消息内容,最长不超过2048个字节(支持id转译)
   */
  @SerializedName("content")
  private String content;

  /**
   * enable_id_trans
   * 表示是否开启id转译,0表示否,1表示是,默认0
   */
  @SerializedName("enable_id_trans")
  private Boolean enableIdTrans = false;

  /**
   * enable_duplicate_check
   * 表示是否开启重复消息检查,0表示否,1表示是,默认0
   */
  @SerializedName("enable_duplicate_check")
  private Boolean enableDuplicateCheck = false;

  /**
   * duplicate_check_interval
   * 表示是否重复消息检查的时间间隔,默认1800s,最大不超过4小时
   */
  @SerializedName("duplicate_check_interval")
  private Integer duplicateCheckInterval;

  /**
   * 图片媒体文件id,可以调用上传临时素材接口获取
   */
  @SerializedName("media_id")
  private String mediaId;

  /**
   * 视频消息的标题,不超过128个字节,超过会自动截断
   */
  @SerializedName("title")
  private String title;

  /**
   * 视频消息的描述,不超过512个字节,超过会自动截断
   */
  @SerializedName("description")
  private String description;

  /**
   * 小程序消息封面的mediaid,封面图建议尺寸为520*416
   */
  @SerializedName("thumb_media_id")
  private String thumbMediaId;

  /**
   * 小程序appid,必须是关联到企业的小程序应用
   */
  @SerializedName("appid")
  private String appId;

  /**
   * 点击消息卡片后进入的小程序页面路径
   */
  @SerializedName("pagepath")
  private String pagePath;

  /**
   * 图文消息
   * https://developer.work.weixin.qq.com/document/path/92321#%E5%9B%BE%E6%96%87%E6%B6%88%E6%81%AF
   */
  private List articles = new ArrayList<>();

  /**
   * 图文消息(mpnews)
   * https://developer.work.weixin.qq.com/document/path/92321#%E5%9B%BE%E6%96%87%E6%B6%88%E6%81%AF%EF%BC%88mpnews%EF
   * %BC%89
   * 

* mpnews类型的图文消息,跟普通的图文消息一致,唯一的差异是图文内容存储在企业微信。 * 多次发送mpnews,会被认为是不同的图文,阅读、点赞的统计会被分开计算。 */ private List mpNewsArticles = new ArrayList<>(); /** *

   * 请使用.
   * {@link SchoolContactMsgType#TEXT}
   * {@link SchoolContactMsgType#IMAGE}
   * {@link SchoolContactMsgType#VOICE}
   * {@link SchoolContactMsgType#VIDEO}
   * {@link SchoolContactMsgType#NEWS}
   * {@link SchoolContactMsgType#MPNEWS}
   * {@link SchoolContactMsgType#MINIPROGRAM}
   * 
* * @param msgType 消息类型 */ public void setMsgType(String msgType) { this.msgType = msgType; } /** * To json string. * * @return the string */ public String toJson() { JsonObject messageJson = new JsonObject(); if (this.getRecvScope() != null) { messageJson.addProperty("recv_scope", this.getRecvScope()); } if (ArrayUtils.isNotEmpty(this.getToParentUserId())) { messageJson.add("to_parent_userid", WxGsonBuilder.create().toJsonTree(this.getToParentUserId())); } if (ArrayUtils.isNotEmpty(this.getToStudentUserId())) { messageJson.add("to_student_userid", WxGsonBuilder.create().toJsonTree(this.getToStudentUserId())); } if (ArrayUtils.isNotEmpty(this.getToParty())) { messageJson.add("to_party", WxGsonBuilder.create().toJsonTree(this.getToParty())); } if (this.getToAll() != null) { messageJson.addProperty("toall", this.getToAll() ? 1 : 0); } messageJson.addProperty("msgtype", this.getMsgType()); if (this.getAgentId() != null) { messageJson.addProperty("agentid", this.getAgentId()); } if (this.getEnableIdTrans() != null && this.getEnableIdTrans()) { messageJson.addProperty("enable_id_trans", 1); } if (this.getEnableDuplicateCheck() != null && this.getEnableDuplicateCheck()) { messageJson.addProperty("enable_duplicate_check", 1); } if (this.getDuplicateCheckInterval() != null) { messageJson.addProperty("duplicate_check_interval", this.getDuplicateCheckInterval()); } this.handleMsgType(messageJson); return messageJson.toString(); } /** * 封装消息类型 * * @param messageJson */ private void handleMsgType(JsonObject messageJson) { switch (this.getMsgType()) { case TEXT: { JsonObject text = new JsonObject(); text.addProperty("content", this.getContent()); messageJson.add("text", text); break; } case IMAGE: { JsonObject image = new JsonObject(); image.addProperty("media_id", this.getMediaId()); messageJson.add("image", image); break; } case FILE: { JsonObject image = new JsonObject(); image.addProperty("media_id", this.getMediaId()); messageJson.add("file", image); break; } case VOICE: { JsonObject voice = new JsonObject(); voice.addProperty("media_id", this.getMediaId()); messageJson.add("voice", voice); break; } case VIDEO: { JsonObject video = new JsonObject(); video.addProperty("media_id", this.getMediaId()); video.addProperty("title", this.getTitle()); video.addProperty("description", this.getDescription()); messageJson.add("video", video); break; } case NEWS: { JsonObject newsJsonObject = new JsonObject(); JsonArray articleJsonArray = new JsonArray(); for (NewArticle article : this.getArticles()) { JsonObject articleJson = new JsonObject(); articleJson.addProperty("title", article.getTitle()); articleJson.addProperty("description", article.getDescription()); articleJson.addProperty("url", article.getUrl()); articleJson.addProperty("picurl", article.getPicUrl()); articleJsonArray.add(articleJson); } newsJsonObject.add("articles", articleJsonArray); messageJson.add("news", newsJsonObject); break; } case MPNEWS: { JsonObject newsJsonObject = new JsonObject(); JsonArray articleJsonArray = new JsonArray(); for (MpnewsArticle article : this.getMpNewsArticles()) { JsonObject articleJson = new JsonObject(); articleJson.addProperty("title", article.getTitle()); articleJson.addProperty("thumb_media_id", article.getThumbMediaId()); articleJson.addProperty("author", article.getAuthor()); articleJson.addProperty("content_source_url", article.getContentSourceUrl()); articleJson.addProperty("content", article.getContent()); articleJson.addProperty("digest", article.getDigest()); articleJsonArray.add(articleJson); } newsJsonObject.add("articles", articleJsonArray); messageJson.add("mpnews", newsJsonObject); break; } case MINIPROGRAM: { JsonObject miniprogram = new JsonObject(); miniprogram.addProperty("appid", this.getAppId()); miniprogram.addProperty("pagepath", this.getPagePath()); miniprogram.addProperty("title", this.getTitle()); miniprogram.addProperty("thumb_media_id", this.getThumbMediaId()); messageJson.add("miniprogram", miniprogram); break; } default: { // do nothing } } } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy