From 1a041e0ea4c4c3ae7473fb6ccb8075c54f9f1086 Mon Sep 17 00:00:00 2001 From: jinyu Date: Thu, 13 Aug 2015 13:20:25 +0800 Subject: [PATCH] =?UTF-8?q?weixin4j-[mp|qy]:=E5=AA=92=E4=BD=93=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E7=B1=BB(MediaApi)=E6=9F=A5=E8=AF=A2=E7=B4=A0?= =?UTF-8?q?=E6=9D=90=E6=8E=A5=E5=8F=A3=E8=B0=83=E6=95=B4:=E5=8E=BB?= =?UTF-8?q?=E6=8E=89offset,count=E6=9B=BF=E6=8D=A2=E4=B8=BAPageable?= =?UTF-8?q?=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGE.md | 2 ++ .../foxinmy/weixin4j/model/MediaRecord.java | 23 ++++++++++++++-- .../com/foxinmy/weixin4j/model/Pageable.java | 17 +++++++++++- .../com/foxinmy/weixin4j/tuple/ChatTuple.java | 2 +- .../com/foxinmy/weixin4j/tuple/MpArticle.java | 26 +++++++++++++++--- weixin4j-mp/CHANGE.md | 4 ++- .../com/foxinmy/weixin4j/mp/WeixinProxy.java | 18 +++++++------ .../com/foxinmy/weixin4j/mp/api/MediaApi.java | 27 ++++++++++--------- .../foxinmy/weixin4j/mp/test/MediaTest.java | 6 +++-- weixin4j-qy/CHANGE.md | 4 ++- .../com/foxinmy/weixin4j/qy/WeixinProxy.java | 13 ++++----- .../com/foxinmy/weixin4j/qy/api/MediaApi.java | 25 ++++++++--------- 12 files changed, 116 insertions(+), 51 deletions(-) diff --git a/CHANGE.md b/CHANGE.md index c8de5c33..f4cc3a93 100644 --- a/CHANGE.md +++ b/CHANGE.md @@ -444,3 +444,5 @@ * 2015-08-13 + `release`: weixin4j-[mp|qy] upgrade to 1.5.3,weixin4j-server upgrade to 1.0.5 + + + **weixin4j-[mp|qy]**: 媒体接口类(MediaApi)查询素材接口调整:去掉offset,count替换为Pageable类 diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/model/MediaRecord.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/model/MediaRecord.java index 89621aae..e1de4ef2 100644 --- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/model/MediaRecord.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/model/MediaRecord.java @@ -32,7 +32,7 @@ public class MediaRecord implements Serializable { /** * 媒体类型 */ - @JSONField(serialize = false) + @JSONField(serialize = false, deserialize = false) private MediaType mediaType; /** * 媒体信息 @@ -40,6 +40,12 @@ public class MediaRecord implements Serializable { @JSONField(name = "item") private List items; + /** + * 分页信息 + */ + @JSONField(serialize = false, deserialize = false) + private Pageable pageable; + public int getTotalCount() { return totalCount; } @@ -72,10 +78,23 @@ public class MediaRecord implements Serializable { this.items = items; } + public Pageable getPageable() { + return pageable; + } + + public void setPageable(Pageable pageable) { + this.pageable = pageable; + } + + @JSONField(serialize = false) + public Pagedata getPagedata() { + return new Pagedata(pageable, totalCount, items); + } + @Override public String toString() { return "MediaRecord [totalCount=" + totalCount + ", itemCount=" + itemCount + ", mediaType=" + mediaType + ", items=" + items - + "]"; + + ", pageable=" + pageable + "]"; } } diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/model/Pageable.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/model/Pageable.java index 60264cf3..a97abef2 100644 --- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/model/Pageable.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/model/Pageable.java @@ -5,11 +5,12 @@ import java.io.Serializable; import com.foxinmy.weixin4j.model.Sort.Direction; /** + * 分页数据(页码从1开始 + * * @className Pageable * @author jy * @date 2014年12月27日 * @since JDK 1.7 - * @see com.foxinmy.weixin4j.model.springframework.data.domain.Pageable */ public class Pageable implements Serializable { @@ -38,6 +39,7 @@ public class Pageable implements Serializable { this.page = page; this.size = size; } + public Pageable(int page, int size, Direction direction, String... properties) { this(page, size, new Sort(direction, properties)); @@ -49,6 +51,15 @@ public class Pageable implements Serializable { this.sort = sort; } + /** + * page=1,size=20 + * + * @return + */ + public static Pageable get() { + return new Pageable(1, 20); + } + public int getPageSize() { return size; } @@ -56,12 +67,15 @@ public class Pageable implements Serializable { public int getPageNumber() { return page; } + public Sort getSort() { return sort; } + public void setSort(Sort sort) { this.sort = sort; } + public int getOffset() { return (page - 1) * size; } @@ -82,6 +96,7 @@ public class Pageable implements Serializable { public Pageable first() { return new Pageable(0, getPageSize(), getSort()); } + @Override public String toString() { return "Pageable [page=" + page + ", size=" + size + ", sort=" + sort diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/tuple/ChatTuple.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/tuple/ChatTuple.java index 981d750e..39510000 100644 --- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/tuple/ChatTuple.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/tuple/ChatTuple.java @@ -1,7 +1,7 @@ package com.foxinmy.weixin4j.tuple; /** - * 聊天消息元件 + * 企业号会话消息元件 * * @className ChatTuple * @author jy diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/tuple/MpArticle.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/tuple/MpArticle.java index 95cdec8e..37a98a4d 100644 --- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/tuple/MpArticle.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/tuple/MpArticle.java @@ -58,15 +58,33 @@ public class MpArticle implements Serializable { @JSONField(name = "cover_url") private String coverUrl; - @JSONCreator - public MpArticle(@JSONField(name = "thumb_media_id") String thumbMediaId, - @JSONField(name = "title") String title, - @JSONField(name = "content") String content) { + public MpArticle(String thumbMediaId, String title, String content) { this.thumbMediaId = thumbMediaId; this.title = title; this.content = content; } + @JSONCreator + public MpArticle(@JSONField(name = "thumbMediaId") String thumbMediaId, + @JSONField(name = "author") String author, + @JSONField(name = "title") String title, + @JSONField(name = "sourceUrl") String sourceUrl, + @JSONField(name = "content") String content, + @JSONField(name = "digest") String digest, + @JSONField(name = "showCoverPic") String showCoverPic, + @JSONField(name = "contentUrl") String contentUrl, + @JSONField(name = "coverUrl") String coverUrl) { + this.thumbMediaId = thumbMediaId; + this.author = author; + this.title = title; + this.sourceUrl = sourceUrl; + this.content = content; + this.digest = digest; + this.showCoverPic = showCoverPic; + this.contentUrl = contentUrl; + this.coverUrl = coverUrl; + } + public String getThumbMediaId() { return thumbMediaId; } diff --git a/weixin4j-mp/CHANGE.md b/weixin4j-mp/CHANGE.md index aa88b309..362d7ed8 100644 --- a/weixin4j-mp/CHANGE.md +++ b/weixin4j-mp/CHANGE.md @@ -146,4 +146,6 @@ * 2015-08-13 - + version upgrade to 1.5.3 \ No newline at end of file + + version upgrade to 1.5.3 + + + 媒体接口类(MediaApi)查询素材接口调整:去掉offset,count替换为Pageable类 \ No newline at end of file diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/WeixinProxy.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/WeixinProxy.java index ae0dd14a..3b6f3e65 100644 --- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/WeixinProxy.java +++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/WeixinProxy.java @@ -14,6 +14,7 @@ import com.foxinmy.weixin4j.model.MediaDownloadResult; import com.foxinmy.weixin4j.model.MediaItem; import com.foxinmy.weixin4j.model.MediaRecord; import com.foxinmy.weixin4j.model.MediaUploadResult; +import com.foxinmy.weixin4j.model.Pageable; import com.foxinmy.weixin4j.mp.api.CustomApi; import com.foxinmy.weixin4j.mp.api.DataApi; import com.foxinmy.weixin4j.mp.api.GroupApi; @@ -352,22 +353,23 @@ public class WeixinProxy { * * @param mediaType * 素材的类型,图片(image)、视频(video)、语音 (voice)、图文(news) - * @param offset - * 从全部素材的该偏移位置开始返回,0表示从第一个素材 返回 - * @param count - * 返回素材的数量,取值在1到20之间 + * @param pageable + * 分页数据 * @return 媒体素材的记录对象 * @throws WeixinException * @see com.foxinmy.weixin4j.mp.api.MediaApi * @see com.foxinmy.weixin4j.mp.model.MediaRecord * @see com.foxinmy.weixin4j.type.MediaType * @see com.foxinmy.weixin4j.mp.model.MediaItem + * @see com.foxinmy.weixin4j.model.MediaItem + * @see com.foxinmy.weixin4j.model.Pageable + * @see com.foxinmy.weixin4j.model.Pagedata * @see 获取素材列表 */ - public MediaRecord listMaterialMedia(MediaType mediaType, int offset, - int count) throws WeixinException { - return mediaApi.listMaterialMedia(mediaType, offset, count); + public MediaRecord listMaterialMedia(MediaType mediaType, Pageable pageable) + throws WeixinException { + return mediaApi.listMaterialMedia(mediaType, pageable); } /** @@ -1312,6 +1314,6 @@ public class WeixinProxy { throws WeixinException { return dataApi.datacube(datacubeType, date); } - + public final static String VERSION = "1.5.2"; } diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/MediaApi.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/MediaApi.java index b31d2266..79211b74 100644 --- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/MediaApi.java +++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/MediaApi.java @@ -35,6 +35,7 @@ import com.foxinmy.weixin4j.model.MediaDownloadResult; import com.foxinmy.weixin4j.model.MediaItem; import com.foxinmy.weixin4j.model.MediaRecord; import com.foxinmy.weixin4j.model.MediaUploadResult; +import com.foxinmy.weixin4j.model.Pageable; import com.foxinmy.weixin4j.model.Token; import com.foxinmy.weixin4j.token.TokenHolder; import com.foxinmy.weixin4j.tuple.MpArticle; @@ -513,26 +514,26 @@ public class MediaApi extends MpApi { * * @param mediaType * 素材的类型,图片(image)、视频(video)、语音 (voice)、图文(news) - * @param offset - * 从全部素材的该偏移位置开始返回,0表示从第一个素材返回 - * @param count - * 返回素材的数量,取值在1到20之间 + * @param pageable + * 分页数据 * @return 媒体素材的记录对象 * @throws WeixinException * @see com.foxinmy.weixin4j.model.MediaRecord * @see com.foxinmy.weixin4j.type.MediaType * @see com.foxinmy.weixin4j.model.MediaItem + * @see com.foxinmy.weixin4j.model.Pageable + * @see com.foxinmy.weixin4j.model.Pagedata * @see 获取素材列表 */ - public MediaRecord listMaterialMedia(MediaType mediaType, int offset, - int count) throws WeixinException { + public MediaRecord listMaterialMedia(MediaType mediaType, Pageable pageable) + throws WeixinException { Token token = tokenHolder.getToken(); String material_media_list_uri = getRequestUri("material_media_list_uri"); JSONObject obj = new JSONObject(); obj.put("type", mediaType.name()); - obj.put("offset", offset); - obj.put("count", count); + obj.put("offset", pageable.getOffset()); + obj.put("count", pageable.getPageSize()); WeixinResponse response = weixinClient.post( String.format(material_media_list_uri, token.getAccessToken()), obj.toJSONString()); @@ -557,6 +558,7 @@ public class MediaApi extends MpApi { }); } mediaRecord.setMediaType(mediaType); + mediaRecord.setPageable(pageable); return mediaRecord; } @@ -571,17 +573,16 @@ public class MediaApi extends MpApi { */ public List listAllMaterialMedia(MediaType mediaType) throws WeixinException { - int offset = 0; - int count = 20; + Pageable pageable = new Pageable(1, 20); List mediaList = new ArrayList(); MediaRecord mediaRecord = null; for (;;) { - mediaRecord = listMaterialMedia(mediaType, offset, count); + mediaRecord = listMaterialMedia(mediaType, pageable); mediaList.addAll(mediaRecord.getItems()); - if (offset >= mediaRecord.getTotalCount()) { + if (pageable.getOffset() >= mediaRecord.getTotalCount()) { break; } - offset += count; + pageable = pageable.next(); } return mediaList; } diff --git a/weixin4j-mp/src/test/java/com/foxinmy/weixin4j/mp/test/MediaTest.java b/weixin4j-mp/src/test/java/com/foxinmy/weixin4j/mp/test/MediaTest.java index efa4e816..23f003fc 100644 --- a/weixin4j-mp/src/test/java/com/foxinmy/weixin4j/mp/test/MediaTest.java +++ b/weixin4j-mp/src/test/java/com/foxinmy/weixin4j/mp/test/MediaTest.java @@ -18,6 +18,7 @@ import com.foxinmy.weixin4j.model.MediaDownloadResult; import com.foxinmy.weixin4j.model.MediaItem; import com.foxinmy.weixin4j.model.MediaRecord; import com.foxinmy.weixin4j.model.MediaUploadResult; +import com.foxinmy.weixin4j.model.Pageable; import com.foxinmy.weixin4j.mp.api.MediaApi; import com.foxinmy.weixin4j.tuple.MpArticle; import com.foxinmy.weixin4j.tuple.MpVideo; @@ -130,8 +131,9 @@ public class MediaTest extends TokenTest { @Test public void listMaterialMedia() throws WeixinException { - MediaRecord mediaRecord = mediaApi.listMaterialMedia(MediaType.news, 0, - 20); + Pageable pageable = Pageable.get(); + MediaRecord mediaRecord = mediaApi.listMaterialMedia(MediaType.news, + pageable); System.err.println(mediaRecord); } diff --git a/weixin4j-qy/CHANGE.md b/weixin4j-qy/CHANGE.md index 09ce72c9..0e117993 100644 --- a/weixin4j-qy/CHANGE.md +++ b/weixin4j-qy/CHANGE.md @@ -102,4 +102,6 @@ * 2015-08-13 - + version upgrade to 1.5.3 \ No newline at end of file + + version upgrade to 1.5.3 + + + 媒体接口类(MediaApi)查询素材接口调整:去掉offset,count替换为Pageable类 \ No newline at end of file diff --git a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/WeixinProxy.java b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/WeixinProxy.java index 89549eb8..48f92a86 100644 --- a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/WeixinProxy.java +++ b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/WeixinProxy.java @@ -13,6 +13,7 @@ import com.foxinmy.weixin4j.model.MediaDownloadResult; import com.foxinmy.weixin4j.model.MediaItem; import com.foxinmy.weixin4j.model.MediaRecord; import com.foxinmy.weixin4j.model.MediaUploadResult; +import com.foxinmy.weixin4j.model.Pageable; import com.foxinmy.weixin4j.qy.api.AgentApi; import com.foxinmy.weixin4j.qy.api.BatchApi; import com.foxinmy.weixin4j.qy.api.ChatApi; @@ -383,22 +384,22 @@ public class WeixinProxy { * 企业应用ID * @param mediaType * 素材的类型,图片(image)、视频(video)、语音 (voice)、图文(news)、文件(file) - * @param offset - * 从全部素材的该偏移位置开始返回,0表示从第一个素材返回 - * @param count - * 返回素材的数量,取值在1到20之间 + * @param pageable + * 分页数据 * @return 媒体素材的记录对象 * @throws WeixinException * @see com.foxinmy.weixin4j.qy.api.MediaApi * @see com.foxinmy.weixin4j.model.MediaRecord * @see com.foxinmy.weixin4j.type.MediaType * @see com.foxinmy.weixin4j.model.MediaItem + * @see com.foxinmy.weixin4j.model.Pageable + * @see com.foxinmy.weixin4j.model.Pagedata * @see 获取素材列表 */ public MediaRecord listMaterialMedia(int agentid, MediaType mediaType, - int offset, int count) throws WeixinException { - return mediaApi.listMaterialMedia(agentid, mediaType, offset, count); + Pageable pageable) throws WeixinException { + return mediaApi.listMaterialMedia(agentid, mediaType, pageable); } /** diff --git a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/api/MediaApi.java b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/api/MediaApi.java index 26d1eb00..8c1c57a4 100644 --- a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/api/MediaApi.java +++ b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/api/MediaApi.java @@ -35,6 +35,7 @@ import com.foxinmy.weixin4j.model.MediaDownloadResult; import com.foxinmy.weixin4j.model.MediaItem; import com.foxinmy.weixin4j.model.MediaRecord; import com.foxinmy.weixin4j.model.MediaUploadResult; +import com.foxinmy.weixin4j.model.Pageable; import com.foxinmy.weixin4j.model.Token; import com.foxinmy.weixin4j.qy.model.Callback; import com.foxinmy.weixin4j.qy.model.Party; @@ -410,28 +411,28 @@ public class MediaApi extends QyApi { * 企业应用ID * @param mediaType * 素材的类型,图片(image)、视频(video)、语音 (voice)、图文(news)、文件(file) - * @param offset - * 从全部素材的该偏移位置开始返回,0表示从第一个素材返回 - * @param count - * 返回素材的数量,取值在1到20之间 + * @param pageable + * 分页数据 * @return 媒体素材的记录对象 * @throws WeixinException * @see com.foxinmy.weixin4j.model.MediaRecord * @see com.foxinmy.weixin4j.type.MediaType * @see com.foxinmy.weixin4j.model.MediaItem + * @see com.foxinmy.weixin4j.model.Pageable + * @see com.foxinmy.weixin4j.model.Pagedata * @see 获取素材列表 */ public MediaRecord listMaterialMedia(int agentid, MediaType mediaType, - int offset, int count) throws WeixinException { + Pageable pageable) throws WeixinException { Token token = tokenHolder.getToken(); String material_media_list_uri = getRequestUri("material_media_list_uri"); JSONObject obj = new JSONObject(); obj.put("agentid", agentid); obj.put("type", mediaType == MediaType.news ? "mpnews" : mediaType.name()); - obj.put("offset", offset); - obj.put("count", count); + obj.put("offset", pageable.getOffset()); + obj.put("count", pageable.getPageSize()); WeixinResponse response = weixinClient.post( String.format(material_media_list_uri, token.getAccessToken()), obj.toJSONString()); @@ -443,6 +444,7 @@ public class MediaApi extends QyApi { MediaItem.class)); } mediaRecord.setMediaType(mediaType); + mediaRecord.setPageable(pageable); return mediaRecord; } @@ -459,17 +461,16 @@ public class MediaApi extends QyApi { */ public List listAllMaterialMedia(int agentid, MediaType mediaType) throws WeixinException { - int offset = 0; - int count = 20; + Pageable pageable = new Pageable(1, 20); List mediaList = new ArrayList(); MediaRecord mediaRecord = null; for (;;) { - mediaRecord = listMaterialMedia(agentid, mediaType, offset, count); + mediaRecord = listMaterialMedia(agentid, mediaType, pageable); mediaList.addAll(mediaRecord.getItems()); - if (offset >= mediaRecord.getTotalCount()) { + if (pageable.getOffset() >= mediaRecord.getTotalCount()) { break; } - offset += count; + pageable = pageable.next(); } return mediaList; }