Skip to content

Commit 2a7c977

Browse files
committed
转移群发消息相关接口到单独接口及其实现类中
1 parent e6a3f60 commit 2a7c977

File tree

6 files changed

+197
-140
lines changed

6 files changed

+197
-140
lines changed
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
package me.chanjar.weixin.mp.api;
2+
3+
import me.chanjar.weixin.common.exception.WxErrorException;
4+
import me.chanjar.weixin.mp.bean.*;
5+
import me.chanjar.weixin.mp.bean.result.WxMpMassSendResult;
6+
import me.chanjar.weixin.mp.bean.result.WxMpMassUploadResult;
7+
8+
/**
9+
* <pre>
10+
* 群发消息服务类
11+
* Created by Binary Wang on 2017-8-16.
12+
* </pre>
13+
*
14+
* @author <a href="https://github.com/binarywang">Binary Wang</a>
15+
*/
16+
public interface WxMpMassMessageService {
17+
/**
18+
* 上传群发用的图文消息
19+
*/
20+
String MEDIA_UPLOAD_NEWS_URL = "https://api.weixin.qq.com/cgi-bin/media/uploadnews";
21+
/**
22+
* 上传群发用的视频
23+
*/
24+
String MEDIA_UPLOAD_VIDEO_URL = "https://api.weixin.qq.com/cgi-bin/media/uploadvideo";
25+
/**
26+
* 分组群发消息
27+
*/
28+
String MESSAGE_MASS_SENDALL_URL = "https://api.weixin.qq.com/cgi-bin/message/mass/sendall";
29+
/**
30+
* 按openId列表群发消息
31+
*/
32+
String MESSAGE_MASS_SEND_URL = "https://api.weixin.qq.com/cgi-bin/message/mass/send";
33+
/**
34+
* 群发消息预览接口
35+
*/
36+
String MESSAGE_MASS_PREVIEW_URL = "https://api.weixin.qq.com/cgi-bin/message/mass/preview";
37+
38+
/**
39+
* <pre>
40+
* 上传群发用的图文消息,上传后才能群发图文消息
41+
*
42+
* 详情请见: http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140549&token=&lang=zh_CN
43+
* </pre>
44+
*
45+
* @see #massGroupMessageSend(WxMpMassTagMessage)
46+
* @see #massOpenIdsMessageSend(WxMpMassOpenIdsMessage)
47+
*/
48+
WxMpMassUploadResult massNewsUpload(WxMpMassNews news) throws WxErrorException;
49+
50+
/**
51+
* <pre>
52+
* 上传群发用的视频,上传后才能群发视频消息
53+
* 详情请见: http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140549&token=&lang=zh_CN
54+
* </pre>
55+
*
56+
* @see #massGroupMessageSend(WxMpMassTagMessage)
57+
* @see #massOpenIdsMessageSend(WxMpMassOpenIdsMessage)
58+
*/
59+
WxMpMassUploadResult massVideoUpload(WxMpMassVideo video) throws WxErrorException;
60+
61+
/**
62+
* <pre>
63+
* 分组群发消息
64+
* 如果发送图文消息,必须先使用 {@link #massNewsUpload(WxMpMassNews)} 获得media_id,然后再发送
65+
* 如果发送视频消息,必须先使用 {@link #massVideoUpload(WxMpMassVideo)} 获得media_id,然后再发送
66+
* 详情请见: http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140549&token=&lang=zh_CN
67+
* </pre>
68+
*/
69+
WxMpMassSendResult massGroupMessageSend(WxMpMassTagMessage message) throws WxErrorException;
70+
71+
/**
72+
* <pre>
73+
* 按openId列表群发消息
74+
* 如果发送图文消息,必须先使用 {@link #massNewsUpload(WxMpMassNews)} 获得media_id,然后再发送
75+
* 如果发送视频消息,必须先使用 {@link #massVideoUpload(WxMpMassVideo)} 获得media_id,然后再发送
76+
* 详情请见: http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140549&token=&lang=zh_CN
77+
* </pre>
78+
*/
79+
WxMpMassSendResult massOpenIdsMessageSend(WxMpMassOpenIdsMessage message) throws WxErrorException;
80+
81+
/**
82+
* <pre>
83+
* 群发消息预览接口
84+
* 开发者可通过该接口发送消息给指定用户,在手机端查看消息的样式和排版。为了满足第三方平台开发者的需求,在保留对openID预览能力的同时,增加了对指定微信号发送预览的能力,但该能力每日调用次数有限制(100次),请勿滥用。
85+
* 接口调用请求说明
86+
* http请求方式: POST
87+
* https://api.weixin.qq.com/cgi-bin/message/mass/preview?access_token=ACCESS_TOKEN
88+
* 详情请见:http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140549&token=&lang=zh_CN
89+
* </pre>
90+
*
91+
* @return wxMpMassSendResult
92+
*/
93+
WxMpMassSendResult massMessagePreview(WxMpMassPreviewMessage wxMpMassPreviewMessage) throws Exception;
94+
95+
}

weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpService.java

Lines changed: 5 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -20,26 +20,6 @@ public interface WxMpService {
2020
* 获得jsapi_ticket
2121
*/
2222
String GET_JSAPI_TICKET_URL = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi";
23-
/**
24-
* 上传群发用的图文消息
25-
*/
26-
String MEDIA_UPLOAD_NEWS_URL = "https://api.weixin.qq.com/cgi-bin/media/uploadnews";
27-
/**
28-
* 上传群发用的视频
29-
*/
30-
String MEDIA_UPLOAD_VIDEO_URL = "https://api.weixin.qq.com/cgi-bin/media/uploadvideo";
31-
/**
32-
* 分组群发消息
33-
*/
34-
String MESSAGE_MASS_SENDALL_URL = "https://api.weixin.qq.com/cgi-bin/message/mass/sendall";
35-
/**
36-
* 按openId列表群发消息
37-
*/
38-
String MESSAGE_MASS_SEND_URL = "https://api.weixin.qq.com/cgi-bin/message/mass/send";
39-
/**
40-
* 群发消息预览接口
41-
*/
42-
String MESSAGE_MASS_PREVIEW_URL = "https://api.weixin.qq.com/cgi-bin/message/mass/preview";
4323
/**
4424
* 长链接转短链接接口
4525
*/
@@ -141,63 +121,6 @@ public interface WxMpService {
141121
*/
142122
WxJsapiSignature createJsapiSignature(String url) throws WxErrorException;
143123

144-
/**
145-
* <pre>
146-
* 上传群发用的图文消息,上传后才能群发图文消息
147-
*
148-
* 详情请见: http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140549&token=&lang=zh_CN
149-
* </pre>
150-
*
151-
* @see #massGroupMessageSend(me.chanjar.weixin.mp.bean.WxMpMassTagMessage)
152-
* @see #massOpenIdsMessageSend(me.chanjar.weixin.mp.bean.WxMpMassOpenIdsMessage)
153-
*/
154-
WxMpMassUploadResult massNewsUpload(WxMpMassNews news) throws WxErrorException;
155-
156-
/**
157-
* <pre>
158-
* 上传群发用的视频,上传后才能群发视频消息
159-
* 详情请见: http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140549&token=&lang=zh_CN
160-
* </pre>
161-
*
162-
* @see #massGroupMessageSend(me.chanjar.weixin.mp.bean.WxMpMassTagMessage)
163-
* @see #massOpenIdsMessageSend(me.chanjar.weixin.mp.bean.WxMpMassOpenIdsMessage)
164-
*/
165-
WxMpMassUploadResult massVideoUpload(WxMpMassVideo video) throws WxErrorException;
166-
167-
/**
168-
* <pre>
169-
* 分组群发消息
170-
* 如果发送图文消息,必须先使用 {@link #massNewsUpload(me.chanjar.weixin.mp.bean.WxMpMassNews)} 获得media_id,然后再发送
171-
* 如果发送视频消息,必须先使用 {@link #massVideoUpload(me.chanjar.weixin.mp.bean.WxMpMassVideo)} 获得media_id,然后再发送
172-
* 详情请见: http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140549&token=&lang=zh_CN
173-
* </pre>
174-
*/
175-
WxMpMassSendResult massGroupMessageSend(WxMpMassTagMessage message) throws WxErrorException;
176-
177-
/**
178-
* <pre>
179-
* 按openId列表群发消息
180-
* 如果发送图文消息,必须先使用 {@link #massNewsUpload(me.chanjar.weixin.mp.bean.WxMpMassNews)} 获得media_id,然后再发送
181-
* 如果发送视频消息,必须先使用 {@link #massVideoUpload(me.chanjar.weixin.mp.bean.WxMpMassVideo)} 获得media_id,然后再发送
182-
* 详情请见: http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140549&token=&lang=zh_CN
183-
* </pre>
184-
*/
185-
WxMpMassSendResult massOpenIdsMessageSend(WxMpMassOpenIdsMessage message) throws WxErrorException;
186-
187-
/**
188-
* <pre>
189-
* 群发消息预览接口
190-
* 开发者可通过该接口发送消息给指定用户,在手机端查看消息的样式和排版。为了满足第三方平台开发者的需求,在保留对openID预览能力的同时,增加了对指定微信号发送预览的能力,但该能力每日调用次数有限制(100次),请勿滥用。
191-
* 接口调用请求说明
192-
* http请求方式: POST
193-
* https://api.weixin.qq.com/cgi-bin/message/mass/preview?access_token=ACCESS_TOKEN
194-
* 详情请见:http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140549&token=&lang=zh_CN
195-
* </pre>
196-
*
197-
* @return wxMpMassSendResult
198-
*/
199-
WxMpMassSendResult massMessagePreview(WxMpMassPreviewMessage wxMpMassPreviewMessage) throws Exception;
200-
201124
/**
202125
* <pre>
203126
* 长链接转短链接接口
@@ -451,5 +374,9 @@ public interface WxMpService {
451374
*/
452375
RequestHttp getRequestHttp();
453376

454-
377+
/**
378+
* 返回群发消息相关接口方法的实现类对象,以方便调用其各个接口
379+
* @return WxMpMassMessageService
380+
*/
381+
WxMpMassMessageService getMassMessageService();
455382
}
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package me.chanjar.weixin.mp.api.impl;
2+
3+
import me.chanjar.weixin.common.exception.WxErrorException;
4+
import me.chanjar.weixin.mp.api.WxMpMassMessageService;
5+
import me.chanjar.weixin.mp.api.WxMpService;
6+
import me.chanjar.weixin.mp.bean.*;
7+
import me.chanjar.weixin.mp.bean.result.WxMpMassSendResult;
8+
import me.chanjar.weixin.mp.bean.result.WxMpMassUploadResult;
9+
import org.slf4j.Logger;
10+
import org.slf4j.LoggerFactory;
11+
12+
/**
13+
* <pre>
14+
* 群发消息服务类
15+
* Created by Binary Wang on 2017-8-16.
16+
* </pre>
17+
*
18+
* @author <a href="https://github.com/binarywang">Binary Wang</a>
19+
*/
20+
public class WxMpMassMessageServiceImpl implements WxMpMassMessageService {
21+
protected final Logger log = LoggerFactory.getLogger(this.getClass());
22+
private WxMpService wxMpService;
23+
24+
public WxMpMassMessageServiceImpl(WxMpService wxMpService) {
25+
this.wxMpService = wxMpService;
26+
}
27+
28+
@Override
29+
public WxMpMassUploadResult massNewsUpload(WxMpMassNews news) throws WxErrorException {
30+
String responseContent = this.wxMpService.post(MEDIA_UPLOAD_NEWS_URL, news.toJson());
31+
return WxMpMassUploadResult.fromJson(responseContent);
32+
}
33+
34+
@Override
35+
public WxMpMassUploadResult massVideoUpload(WxMpMassVideo video) throws WxErrorException {
36+
String responseContent = this.wxMpService.post(MEDIA_UPLOAD_VIDEO_URL, video.toJson());
37+
return WxMpMassUploadResult.fromJson(responseContent);
38+
}
39+
40+
@Override
41+
public WxMpMassSendResult massGroupMessageSend(WxMpMassTagMessage message) throws WxErrorException {
42+
String responseContent = this.wxMpService.post(WxMpMassMessageService.MESSAGE_MASS_SENDALL_URL, message.toJson());
43+
return WxMpMassSendResult.fromJson(responseContent);
44+
}
45+
46+
@Override
47+
public WxMpMassSendResult massOpenIdsMessageSend(WxMpMassOpenIdsMessage message) throws WxErrorException {
48+
String responseContent = this.wxMpService.post(MESSAGE_MASS_SEND_URL, message.toJson());
49+
return WxMpMassSendResult.fromJson(responseContent);
50+
}
51+
52+
@Override
53+
public WxMpMassSendResult massMessagePreview(WxMpMassPreviewMessage wxMpMassPreviewMessage) throws Exception {
54+
String responseContent = this.wxMpService.post(MESSAGE_MASS_PREVIEW_URL, wxMpMassPreviewMessage.toJson());
55+
return WxMpMassSendResult.fromJson(responseContent);
56+
}
57+
58+
}

weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpServiceAbstractImpl.java

Lines changed: 6 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ public abstract class WxMpServiceAbstractImpl<H, P> implements WxMpService, Requ
4343
private WxMpDeviceService deviceService = new WxMpDeviceServiceImpl(this);
4444
private WxMpShakeService shakeService = new WxMpShakeServiceImpl(this);
4545
private WxMpMemberCardService memberCardService = new WxMpMemberCardServiceImpl(this);
46+
private WxMpMassMessageService massMessageService = new WxMpMassMessageServiceImpl(this);
4647

4748
private int retrySleepMillis = 1000;
4849
private int maxRetryTimes = 5;
@@ -108,36 +109,6 @@ public String getAccessToken() throws WxErrorException {
108109
return getAccessToken(false);
109110
}
110111

111-
@Override
112-
public WxMpMassUploadResult massNewsUpload(WxMpMassNews news) throws WxErrorException {
113-
String responseContent = this.post(WxMpService.MEDIA_UPLOAD_NEWS_URL, news.toJson());
114-
return WxMpMassUploadResult.fromJson(responseContent);
115-
}
116-
117-
@Override
118-
public WxMpMassUploadResult massVideoUpload(WxMpMassVideo video) throws WxErrorException {
119-
String responseContent = this.post(WxMpService.MEDIA_UPLOAD_VIDEO_URL, video.toJson());
120-
return WxMpMassUploadResult.fromJson(responseContent);
121-
}
122-
123-
@Override
124-
public WxMpMassSendResult massGroupMessageSend(WxMpMassTagMessage message) throws WxErrorException {
125-
String responseContent = this.post(WxMpService.MESSAGE_MASS_SENDALL_URL, message.toJson());
126-
return WxMpMassSendResult.fromJson(responseContent);
127-
}
128-
129-
@Override
130-
public WxMpMassSendResult massOpenIdsMessageSend(WxMpMassOpenIdsMessage message) throws WxErrorException {
131-
String responseContent = this.post(WxMpService.MESSAGE_MASS_SEND_URL, message.toJson());
132-
return WxMpMassSendResult.fromJson(responseContent);
133-
}
134-
135-
@Override
136-
public WxMpMassSendResult massMessagePreview(WxMpMassPreviewMessage wxMpMassPreviewMessage) throws Exception {
137-
String responseContent = this.post(WxMpService.MESSAGE_MASS_PREVIEW_URL, wxMpMassPreviewMessage.toJson());
138-
return WxMpMassSendResult.fromJson(responseContent);
139-
}
140-
141112
@Override
142113
public String shortUrl(String long_url) throws WxErrorException {
143114
JsonObject o = new JsonObject();
@@ -415,4 +386,9 @@ public WxMpMemberCardService getMemberCardService() {
415386
public RequestHttp getRequestHttp() {
416387
return this;
417388
}
389+
390+
@Override
391+
public WxMpMassMessageService getMassMessageService() {
392+
return this.massMessageService;
393+
}
418394
}

0 commit comments

Comments
 (0)