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.
*