Skip to content

Commit a00d693

Browse files
committed
Merge pull request #183 from codepiano/develop
补充永久素材相关方法到接口中,优化接口参数
2 parents 08338b0 + 49a4ab6 commit a00d693

File tree

3 files changed

+156
-26
lines changed

3 files changed

+156
-26
lines changed

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

Lines changed: 152 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,9 @@ public interface WxMpService {
4747
* <pre>
4848
* 获取access_token,本方法线程安全
4949
* 且在多线程同时刷新时只刷新一次,避免超出2000次/日的调用次数上限
50-
*
50+
*
5151
* 另:本service的所有方法都会在access_token过期是调用此方法
52-
*
52+
*
5353
* 程序员在非必要情况下尽量不要主动调用此方法
5454
5555
* 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=获取access_token
@@ -111,14 +111,143 @@ public interface WxMpService {
111111
*/
112112
public WxMediaUploadResult mediaUpload(String mediaType, String fileType, InputStream inputStream) throws WxErrorException, IOException;
113113

114+
/**
115+
* <pre>
116+
* 上传非图文永久素材
117+
*
118+
* 上传的多媒体文件有格式和大小限制,如下:
119+
* 图片(image): 图片大小不超过2M,支持bmp/png/jpeg/jpg/gif格式
120+
* 语音(voice):语音大小不超过5M,长度不超过60秒,支持mp3/wma/wav/amr格式
121+
* 视频(video):在上传视频素材时需要POST另一个表单,id为description,包含素材的描述信息,内容格式为JSON
122+
* 缩略图(thumb):文档未说明
123+
*
124+
* 详情请见: http://mp.weixin.qq.com/wiki/14/7e6c03263063f4813141c3e17dd4350a.html
125+
* </pre>
126+
* @param mediaType 媒体类型, 请看{@link me.chanjar.weixin.common.api.WxConsts}
127+
* @param material 上传的素材, 请看{@link me.chanjar.weixin.mp.bean.WxMpMaterial}
128+
* @return
129+
* @throws WxErrorException
130+
*/
131+
public WxMpMaterialUploadResult materialFileUpload(String mediaType, WxMpMaterial material) throws WxErrorException;
132+
133+
/**
134+
* <pre>
135+
* 上传永久图文素材
136+
*
137+
* 详情请见: http://mp.weixin.qq.com/wiki/14/7e6c03263063f4813141c3e17dd4350a.html
138+
* </pre>
139+
* @param news 上传的图文消息, 请看{@link me.chanjar.weixin.mp.bean.WxMpMaterialNews}
140+
* @return
141+
* @throws WxErrorException
142+
*/
143+
public WxMpMaterialUploadResult materialNewsUpload(WxMpMaterialNews news) throws WxErrorException;
144+
145+
/**
146+
* <pre>
147+
* 下载声音或者图片永久素材
148+
*
149+
* 详情请见: http://mp.weixin.qq.com/wiki/4/b3546879f07623cb30df9ca0e420a5d0.html
150+
* </pre>
151+
* @param media_id 永久素材的id
152+
* @return
153+
* @throws WxErrorException
154+
*/
155+
public InputStream materialImageOrVoiceDownload(String media_id) throws WxErrorException;
156+
157+
/**
158+
* <pre>
159+
* 获取视频永久素材的信息和下载地址
160+
*
161+
* 详情请见: http://mp.weixin.qq.com/wiki/4/b3546879f07623cb30df9ca0e420a5d0.html
162+
* </pre>
163+
* @param media_id 永久素材的id
164+
* @return
165+
* @throws WxErrorException
166+
*/
167+
public WxMpMaterialVideoInfoResult materialVideoInfo(String media_id) throws WxErrorException;
168+
169+
/**
170+
* <pre>
171+
* 获取图文永久素材的信息
172+
*
173+
* 详情请见: http://mp.weixin.qq.com/wiki/4/b3546879f07623cb30df9ca0e420a5d0.html
174+
* </pre>
175+
* @param media_id 永久素材的id
176+
* @return
177+
* @throws WxErrorException
178+
*/
179+
public WxMpMaterialNews materialNewsInfo(String media_id) throws WxErrorException;
180+
181+
/**
182+
* <pre>
183+
* 更新图文永久素材
184+
*
185+
* 详情请见: http://mp.weixin.qq.com/wiki/4/19a59cba020d506e767360ca1be29450.html
186+
* </pre>
187+
* @param wxMpMaterialArticleUpdate 用来更新图文素材的bean, 请看{@link me.chanjar.weixin.mp.bean.WxMpMaterialArticleUpdate}
188+
* @return
189+
* @throws WxErrorException
190+
*/
191+
public boolean materialNewsUpdate(WxMpMaterialArticleUpdate wxMpMaterialArticleUpdate) throws WxErrorException;
192+
193+
/**
194+
* <pre>
195+
* 删除永久素材
196+
*
197+
* 详情请见: http://mp.weixin.qq.com/wiki/5/e66f61c303db51a6c0f90f46b15af5f5.html
198+
* </pre>
199+
* @param media_id 永久素材的id
200+
* @return
201+
* @throws WxErrorException
202+
*/
203+
public boolean materialDelete(String media_id) throws WxErrorException;
204+
205+
/**
206+
* <pre>
207+
* 获取各类素材总数
208+
*
209+
* 详情请见: http://mp.weixin.qq.com/wiki/16/8cc64f8c189674b421bee3ed403993b8.html
210+
* </pre>
211+
* @return
212+
* @throws WxErrorException
213+
*/
214+
public WxMpMaterialCountResult materialCount() throws WxErrorException;
215+
216+
/**
217+
* <pre>
218+
* 分页获取图文素材列表
219+
*
220+
* 详情请见: http://mp.weixin.qq.com/wiki/12/2108cd7aafff7f388f41f37efa710204.html
221+
* </pre>
222+
* @param offset 从全部素材的该偏移位置开始返回,0表示从第一个素材 返回
223+
* @param count 返回素材的数量,取值在1到20之间
224+
* @return
225+
* @throws WxErrorException
226+
*/
227+
public WxMpMaterialNewsBatchGetResult materialNewsBatchGet(int offset, int count) throws WxErrorException;
228+
229+
/**
230+
* <pre>
231+
* 分页获取其他媒体素材列表
232+
*
233+
* 详情请见: http://mp.weixin.qq.com/wiki/12/2108cd7aafff7f388f41f37efa710204.html
234+
* </pre>
235+
* @param type 媒体类型, 请看{@link me.chanjar.weixin.common.api.WxConsts}
236+
* @param offset 从全部素材的该偏移位置开始返回,0表示从第一个素材 返回
237+
* @param count 返回素材的数量,取值在1到20之间
238+
* @return
239+
* @throws WxErrorException
240+
*/
241+
public WxMpMaterialFileBatchGetResult materialFileBatchGet(String type, int offset, int count) throws WxErrorException;
242+
114243
/**
115244
* @see #mediaUpload(String, String, InputStream)
116245
* @param mediaType
117246
* @param file
118247
* @throws WxErrorException
119248
*/
120249
public WxMediaUploadResult mediaUpload(String mediaType, File file) throws WxErrorException;
121-
250+
122251
/**
123252
* <pre>
124253
* 下载多媒体文件
@@ -130,7 +259,7 @@ public interface WxMpService {
130259
* @throws WxErrorException
131260
*/
132261
public File mediaDownload(String media_id) throws WxErrorException;
133-
262+
134263
/**
135264
* <pre>
136265
* 发送客服消息
@@ -140,11 +269,11 @@ public interface WxMpService {
140269
* @throws WxErrorException
141270
*/
142271
public void customMessageSend(WxMpCustomMessage message) throws WxErrorException;
143-
272+
144273
/**
145274
* <pre>
146-
* 上传群发用的图文消息,上传后才能群发图文消息
147-
*
275+
* 上传群发用的图文消息,上传后才能群发图文消息
276+
*
148277
* 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=高级群发接口
149278
* </pre>
150279
* @param news
@@ -153,7 +282,7 @@ public interface WxMpService {
153282
* @see #massOpenIdsMessageSend(me.chanjar.weixin.mp.bean.WxMpMassOpenIdsMessage)
154283
*/
155284
public WxMpMassUploadResult massNewsUpload(WxMpMassNews news) throws WxErrorException;
156-
285+
157286
/**
158287
* <pre>
159288
* 上传群发用的视频,上传后才能群发视频消息
@@ -175,10 +304,10 @@ public interface WxMpService {
175304
* </pre>
176305
* @param message
177306
* @throws WxErrorException
178-
* @return
307+
* @return
179308
*/
180309
public WxMpMassSendResult massGroupMessageSend(WxMpMassGroupMessage message) throws WxErrorException;
181-
310+
182311
/**
183312
* <pre>
184313
* 按openId列表群发消息
@@ -201,7 +330,7 @@ public interface WxMpService {
201330
* @throws WxErrorException
202331
*/
203332
public void menuCreate(WxMenu menu) throws WxErrorException;
204-
333+
205334
/**
206335
* <pre>
207336
* 自定义菜单删除接口
@@ -210,7 +339,7 @@ public interface WxMpService {
210339
* @throws WxErrorException
211340
*/
212341
public void menuDelete() throws WxErrorException;
213-
342+
214343
/**
215344
* <pre>
216345
* 自定义菜单查询接口
@@ -227,11 +356,11 @@ public interface WxMpService {
227356
* 最多支持创建500个分组
228357
* 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=分组管理接口
229358
* </pre>
230-
* @param name 分组名字(30个字符以内)
359+
* @param name 分组名字(30个字符以内)
231360
* @throws WxErrorException
232361
*/
233362
public WxMpGroup groupCreate(String name) throws WxErrorException;
234-
363+
235364
/**
236365
* <pre>
237366
* 分组管理接口 - 查询所有分组
@@ -241,34 +370,34 @@ public interface WxMpService {
241370
* @throws WxErrorException
242371
*/
243372
public List<WxMpGroup> groupGet() throws WxErrorException;
244-
373+
245374
/**
246375
* <pre>
247376
* 分组管理接口 - 查询用户所在分组
248377
* 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=分组管理接口
249378
* </pre>
250-
* @param openid 微信用户的openid
379+
* @param openid 微信用户的openid
251380
* @throws WxErrorException
252381
*/
253382
public long userGetGroup(String openid) throws WxErrorException;
254-
383+
255384
/**
256385
* <pre>
257386
* 分组管理接口 - 修改分组名
258387
* 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=分组管理接口
259-
*
388+
*
260389
* 如果id为0(未分组),1(黑名单),2(星标组),或者不存在的id,微信会返回系统繁忙的错误
261390
* </pre>
262-
* @param group 要更新的group,group的id,name必须设置
391+
* @param group 要更新的group,group的id,name必须设置
263392
* @throws WxErrorException
264393
*/
265394
public void groupUpdate(WxMpGroup group) throws WxErrorException;
266-
395+
267396
/**
268397
* <pre>
269398
* 分组管理接口 - 移动用户分组
270399
* 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=分组管理接口
271-
*
400+
*
272401
* 如果to_groupid为0(未分组),1(黑名单),2(星标组),或者不存在的id,微信会返回系统繁忙的错误
273402
* </pre>
274403
* @param openid 用户openid
@@ -294,7 +423,7 @@ public interface WxMpService {
294423
* 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=获取用户基本信息
295424
* </pre>
296425
* @param openid 用户openid
297-
* @param lang 语言,zh_CN 简体(默认),zh_TW 繁体,en 英语
426+
* @param lang 语言,zh_CN 简体(默认),zh_TW 繁体,en 英语
298427
* @return
299428
* @throws WxErrorException
300429
*/
@@ -577,7 +706,7 @@ public interface WxMpService {
577706
* @param outTradeNo
578707
*/
579708
WxMpPayResult getJSSDKPayResult(String transactionId, String outTradeNo);
580-
709+
581710
/**
582711
* 读取支付结果通知
583712
* 详见http://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_7

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import com.google.gson.reflect.TypeToken;
99
import com.google.gson.stream.JsonReader;
1010
import com.thoughtworks.xstream.XStream;
11+
import me.chanjar.weixin.common.api.WxConsts;
1112
import me.chanjar.weixin.common.bean.WxAccessToken;
1213
import me.chanjar.weixin.common.bean.WxJsapiSignature;
1314
import me.chanjar.weixin.common.bean.WxMenu;
@@ -272,10 +273,10 @@ public WxMpMaterialCountResult materialCount() throws WxErrorException {
272273
}
273274
}
274275

275-
public WxMpMaterialNewsBatchGetResult materialNewsBatchGet(String type, int offset, int count) throws WxErrorException {
276+
public WxMpMaterialNewsBatchGetResult materialNewsBatchGet(int offset, int count) throws WxErrorException {
276277
String url = "https://api.weixin.qq.com/cgi-bin/material/batchget_material";
277278
Map<String, Object> params = new HashMap<String, Object>();
278-
params.put("type", type);
279+
params.put("type", WxConsts.MATERIAL_NEWS);
279280
params.put("offset", offset);
280281
params.put("count", count);
281282
String responseText = post(url, new Gson().toJson(params));

weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/WxMpMaterialAPITest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ public void testUpdateNewsInfo() throws WxErrorException {
195195

196196
@Test(dependsOnMethods = {"testUpdateNewsInfo"})
197197
public void testMaterialNewsList() throws WxErrorException {
198-
WxMpMaterialNewsBatchGetResult wxMpMaterialNewsBatchGetResult = wxService.materialNewsBatchGet(WxConsts.MATERIAL_NEWS, 0, 20);
198+
WxMpMaterialNewsBatchGetResult wxMpMaterialNewsBatchGetResult = wxService.materialNewsBatchGet(0, 20);
199199
return;
200200
}
201201

0 commit comments

Comments
 (0)