diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/external/msg/Attachment.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/external/msg/Attachment.java index 6b6efc936..be9dcc9dd 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/external/msg/Attachment.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/external/msg/Attachment.java @@ -34,9 +34,10 @@ public class Attachment implements Serializable { * * @param image the image */ - public void setImage(Image image) { + public Attachment setImage(Image image) { this.image = image; this.msgType = WxCpConsts.WelcomeMsgType.IMAGE; + return this; } /** @@ -44,9 +45,10 @@ public class Attachment implements Serializable { * * @param link the link */ - public void setLink(Link link) { + public Attachment setLink(Link link) { this.link = link; this.msgType = WxCpConsts.WelcomeMsgType.LINK; + return this; } /** @@ -54,9 +56,10 @@ public class Attachment implements Serializable { * * @param miniProgram the mini program */ - public void setMiniProgram(MiniProgram miniProgram) { + public Attachment setMiniProgram(MiniProgram miniProgram) { this.miniProgram = miniProgram; this.msgType = WxCpConsts.WelcomeMsgType.MINIPROGRAM; + return this; } /** @@ -64,9 +67,10 @@ public class Attachment implements Serializable { * * @param video the video */ - public void setVideo(Video video) { + public Attachment setVideo(Video video) { this.video = video; this.msgType = WxCpConsts.WelcomeMsgType.VIDEO; + return this; } /** @@ -74,8 +78,9 @@ public class Attachment implements Serializable { * * @param file the file */ - public void setFile(File file) { + public Attachment setFile(File file) { this.file = file; this.msgType = WxCpConsts.WelcomeMsgType.FILE; + return this; } } diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/external/msg/AttachmentBuilder.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/external/msg/AttachmentBuilder.java new file mode 100644 index 000000000..8f3d19832 --- /dev/null +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/external/msg/AttachmentBuilder.java @@ -0,0 +1,40 @@ +package me.chanjar.weixin.cp.bean.external.msg; + +import lombok.Builder; + +/** + * @author codecrab + */ +public class AttachmentBuilder { + + @Builder(builderClassName = "ImageBuilder", builderMethodName = "imageBuilder") + private static Attachment image(String mediaId, String picUrl) { + Image image = new Image().setMediaId(mediaId).setPicUrl(picUrl); + return new Attachment().setImage(image); + } + + @Builder(builderClassName = "VideoBuilder", builderMethodName = "videoBuilder") + private static Attachment video(String mediaId) { + Video video = new Video().setMediaId(mediaId); + return new Attachment().setVideo(video); + } + + @Builder(builderClassName = "FileBuilder", builderMethodName = "fileBuilder") + private static Attachment file(String mediaId) { + File file = new File().setMediaId(mediaId); + return new Attachment().setFile(file); + } + + @Builder(builderClassName = "LinkBuilder", builderMethodName = "linkBuilder") + private static Attachment link(String title, String url, String picUrl, String desc) { + Link link = new Link().setTitle(title).setPicUrl(picUrl).setUrl(url).setDesc(desc); + return new Attachment().setLink(link); + } + + @Builder(builderClassName = "MiniProgramBuilder", builderMethodName = "miniProgramBuilder") + private static Attachment miniProgram(String title, String picMediaId, String appId, String page) { + MiniProgram miniProgram = new MiniProgram().setTitle(title).setPicMediaId(picMediaId).setAppid(appId).setPage(page); + return new Attachment().setMiniProgram(miniProgram); + } + +} diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/external/msg/File.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/external/msg/File.java index 656f46ba3..cc94cf607 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/external/msg/File.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/external/msg/File.java @@ -2,6 +2,7 @@ package me.chanjar.weixin.cp.bean.external.msg; import com.google.gson.annotations.SerializedName; import lombok.Data; +import lombok.experimental.Accessors; import java.io.Serializable; @@ -11,6 +12,7 @@ import java.io.Serializable; * @author Binary Wang created on 2021-08-23 */ @Data +@Accessors(chain = true) public class File implements Serializable { private static final long serialVersionUID = 2794189478198329090L; diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/external/msg/Image.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/external/msg/Image.java index cd2cdee29..fd2f38809 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/external/msg/Image.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/external/msg/Image.java @@ -2,6 +2,7 @@ package me.chanjar.weixin.cp.bean.external.msg; import com.google.gson.annotations.SerializedName; import lombok.Data; +import lombok.experimental.Accessors; import java.io.Serializable; @@ -11,6 +12,7 @@ import java.io.Serializable; * @author Binary Wang created on 2020-08-16 */ @Data +@Accessors(chain = true) public class Image implements Serializable { private static final long serialVersionUID = -606286372867787121L; diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/external/msg/Link.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/external/msg/Link.java index 45ed02fae..feea6cacd 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/external/msg/Link.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/external/msg/Link.java @@ -2,6 +2,7 @@ package me.chanjar.weixin.cp.bean.external.msg; import com.google.gson.annotations.SerializedName; import lombok.Data; +import lombok.experimental.Accessors; import java.io.Serializable; @@ -11,6 +12,7 @@ import java.io.Serializable; * @author Binary Wang created on 2020-08-16 */ @Data +@Accessors(chain = true) public class Link implements Serializable { private static final long serialVersionUID = -8041816740881163875L; private String title; diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/external/msg/Location.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/external/msg/Location.java index d9a8a019b..e10f2bd56 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/external/msg/Location.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/external/msg/Location.java @@ -1,6 +1,7 @@ package me.chanjar.weixin.cp.bean.external.msg; import lombok.Data; +import lombok.experimental.Accessors; /** * 地理位置 @@ -8,6 +9,7 @@ import lombok.Data; * @author leiin created on 2021-10-29 */ @Data +@Accessors(chain = true) public class Location { private String latitude; private String longitude; diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/external/msg/MiniProgram.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/external/msg/MiniProgram.java index 013fe882b..46e10b33c 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/external/msg/MiniProgram.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/external/msg/MiniProgram.java @@ -2,6 +2,7 @@ package me.chanjar.weixin.cp.bean.external.msg; import com.google.gson.annotations.SerializedName; import lombok.Data; +import lombok.experimental.Accessors; import java.io.Serializable; @@ -11,6 +12,7 @@ import java.io.Serializable; * @author Binary Wang created on 2020-08-16 */ @Data +@Accessors(chain = true) public class MiniProgram implements Serializable { private static final long serialVersionUID = 4242074162638170679L; diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/external/msg/Video.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/external/msg/Video.java index c1428a662..76315af9a 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/external/msg/Video.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/external/msg/Video.java @@ -2,6 +2,7 @@ package me.chanjar.weixin.cp.bean.external.msg; import com.google.gson.annotations.SerializedName; import lombok.Data; +import lombok.experimental.Accessors; import java.io.Serializable; @@ -11,6 +12,7 @@ import java.io.Serializable; * @author pg created on 2021-6-21 */ @Data +@Accessors(chain = true) public class Video implements Serializable { private static final long serialVersionUID = -6048642921382867138L; @SerializedName("media_id") diff --git a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/impl/WxCpExternalContactServiceImplTest.java b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/impl/WxCpExternalContactServiceImplTest.java index 30d2e4f91..f435e728f 100644 --- a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/impl/WxCpExternalContactServiceImplTest.java +++ b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/impl/WxCpExternalContactServiceImplTest.java @@ -10,6 +10,7 @@ import me.chanjar.weixin.cp.bean.external.*; import me.chanjar.weixin.cp.bean.external.contact.WxCpExternalContactBatchInfo; import me.chanjar.weixin.cp.bean.external.contact.WxCpExternalContactInfo; import me.chanjar.weixin.cp.bean.external.msg.Attachment; +import me.chanjar.weixin.cp.bean.external.msg.AttachmentBuilder; import me.chanjar.weixin.cp.bean.external.msg.Image; import me.chanjar.weixin.cp.bean.external.msg.Video; import org.apache.commons.lang3.time.DateFormatUtils; @@ -17,7 +18,10 @@ import org.testng.annotations.Guice; import org.testng.annotations.Test; import org.testng.collections.CollectionUtils; -import java.util.*; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Date; +import java.util.List; import static org.testng.Assert.assertNotNull; @@ -419,6 +423,7 @@ public class WxCpExternalContactServiceImplTest { System.out.println(result); assertNotNull(result); } + /** * Test get user behavior statistic. */ @@ -466,6 +471,33 @@ public class WxCpExternalContactServiceImplTest { .build()); } + /** + * Test send welcome msg. use AttachmentBuilder + * + * @throws WxErrorException the wx error exception + */ + @Test + public void testSendWelcomeMsg2() throws WxErrorException { + + Attachment imageAttachment = AttachmentBuilder.imageBuilder().mediaId("123123").build(); + Attachment videoAttachment = AttachmentBuilder.videoBuilder().mediaId("video_media_id").build(); + Attachment miniProgramAttachment = AttachmentBuilder.miniProgramBuilder() + .title("title") + .picMediaId("123123123") + .appId("wxcxxxxxxxxxxx") + .page("https://") + .build(); + + List attachments = new ArrayList<>(); + attachments.add(imageAttachment); + attachments.add(videoAttachment); + attachments.add(miniProgramAttachment); + this.wxCpService.getExternalContactService().sendWelcomeMsg(WxCpWelcomeMsg.builder() + .welcomeCode("abc") + .attachments(attachments) + .build()); + } + /** * Test update remark. *