weixin4j-qy:创建标签时可以指定ID

This commit is contained in:
jinyu 2015-07-22 10:46:41 +08:00
parent 98a86108ae
commit 4ab6fef02e
10 changed files with 45 additions and 25 deletions

View File

@ -368,3 +368,7 @@
+ **weixin4j-qy**: 新增[媒体素材接口](weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/api/MediaApi.java) + **weixin4j-qy**: 新增[媒体素材接口](weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/api/MediaApi.java)
+ released 1.5.1 + released 1.5.1
* 2015-07-22
+ **weixin4j-qy**: 创建标签时可以指定ID

View File

@ -56,7 +56,7 @@ public class Music implements NotifyTuple {
private String thumbMediaId; private String thumbMediaId;
public Music(String thumbMediaId) { public Music(String thumbMediaId) {
this(null, null, null, null, thumbMediaId); this.thumbMediaId = thumbMediaId;
} }
public Music(String title, String desc, String musicUrl, String hqMusicUrl, public Music(String title, String desc, String musicUrl, String hqMusicUrl,

View File

@ -5,17 +5,18 @@ import com.foxinmy.weixin4j.http.ContentType;
/** /**
* 上传的媒体类型</br> * 上传的媒体类型</br>
* <p> * <p>
* 公众平台上传限制:</br> 图片(image): 128K,支持JPG,PNG格式</br> * 公众平台上传限制:</br> 图片(image): 2MB,支持bmp/png/jpeg/jpg/gif格式</br>
* 语音(voice):256K,播放长度不超过60s,支持AMR\MP3格式</br> 视频(video):1MB,支持MP4格式</br> * 语音(voice):2MB,播放长度不超过60s,支持mp3/wma/wav/amr格式</br>
* 视频(video):10MB,支持rm/rmvb/wmv/avi/mpg/mpeg/mp4格式</br>
* 缩略图(thumb):64KB,支持JPG格式</br> * 缩略图(thumb):64KB,支持JPG格式</br>
* </p> * </p>
* <p> * <p>
* 企业号上传限制:</br> 图片image:1MB支持JPG格式</br> * 企业号上传限制:</br> 图片image:1MB支持bmp/png/jpeg/jpg/gif格式</br>
* 语音voice2MB播放长度不超过60s支持AMR格式</br> 视频video10MB支持MP4格式</br> * 语音voice2MB播放长度不超过60s支持mp3/wma/wav/amr格式</br>
* 普通文件file20MB</br> * 视频video10MB支持rm/rmvb/wmv/avi/mpg/mpeg/mp4格式</br> 普通文件file20MB</br>
* </p> * </p>
* <p> * <p>
* <font color='red'>媒体文件在后台保存时间为3天,即3天后media_id失效</font> * <font color='red'>临时媒体文件在后台保存时间为3天,即3天后media_id失效</font>
* </p> * </p>
* *
* @author jy.hu * @author jy.hu

View File

@ -78,7 +78,7 @@ public class MediaApi extends MpApi {
mediaType = MediaType.image; mediaType = MediaType.image;
} else if ("mp3/wma/wav/amr".contains(mediaTypeKey)) { } else if ("mp3/wma/wav/amr".contains(mediaTypeKey)) {
mediaType = MediaType.voice; mediaType = MediaType.voice;
} else if ("mp4".equals(mediaTypeKey)) { } else if ("rm/rmvb/wmv/avi/mpg/mpeg/mp4".equals(mediaTypeKey)) {
mediaType = MediaType.video; mediaType = MediaType.video;
} else { } else {
throw new WeixinException("cannot handle mediaType:" + mediaTypeKey); throw new WeixinException("cannot handle mediaType:" + mediaTypeKey);

View File

@ -75,3 +75,7 @@
+ 新增[媒体素材接口](src/main/java/com/foxinmy/weixin4j/qy/api/MediaApi.java) + 新增[媒体素材接口](src/main/java/com/foxinmy/weixin4j/qy/api/MediaApi.java)
+ released 1.5.1 + released 1.5.1
* 2015-07-22
+ 创建标签时可以指定ID

View File

@ -702,16 +702,17 @@ public class WeixinProxy {
/** /**
* 创建标签(创建的标签属于管理组;默认为未加锁状态) * 创建标签(创建的标签属于管理组;默认为未加锁状态)
* *
* @param tagName * @param tag
* 标签名称 * 标签对象</br>标签名称长度为1~64个字节标签名不可与其他标签重名</br>标签id整型
* 指定此参数时新增的标签会生成对应的标签id不指定时则以目前最大的id自增
* @see <a * @see <a
* href="http://qydev.weixin.qq.com/wiki/index.php?title=%E7%AE%A1%E7%90%86%E6%A0%87%E7%AD%BE#.E5.88.9B.E5.BB.BA.E6.A0.87.E7.AD.BE">创建标签说明</a> * href="http://qydev.weixin.qq.com/wiki/index.php?title=%E7%AE%A1%E7%90%86%E6%A0%87%E7%AD%BE#.E5.88.9B.E5.BB.BA.E6.A0.87.E7.AD.BE">创建标签说明</a>
* @see com.foxinmy.weixin4j.qy.api.TagApi * @see com.foxinmy.weixin4j.qy.api.TagApi
* @return 标签ID * @return 标签ID
* @throws WeixinException * @throws WeixinException
*/ */
public int createTag(String tagName) throws WeixinException { public int createTag(Tag tag) throws WeixinException {
return tagApi.createTag(tagName); return tagApi.createTag(tag);
} }
/** /**

View File

@ -83,7 +83,7 @@ public class MediaApi extends QyApi {
mediaType = MediaType.image; mediaType = MediaType.image;
} else if ("mp3/wma/wav/amr".contains(mediaTypeKey)) { } else if ("mp3/wma/wav/amr".contains(mediaTypeKey)) {
mediaType = MediaType.voice; mediaType = MediaType.voice;
} else if ("mp4".equals(mediaTypeKey)) { } else if ("rm/rmvb/wmv/avi/mpg/mpeg/mp4".equals(mediaTypeKey)) {
mediaType = MediaType.video; mediaType = MediaType.video;
} else { } else {
mediaType = MediaType.file; mediaType = MediaType.file;

View File

@ -32,26 +32,32 @@ public class TagApi extends QyApi {
/** /**
* 创建标签(创建的标签属于管理组默认为加锁状态加锁状态下只有本管理组才可以增删成员解锁状态下其它管理组也可以增删成员) * 创建标签(创建的标签属于管理组默认为加锁状态加锁状态下只有本管理组才可以增删成员解锁状态下其它管理组也可以增删成员)
* *
* @param tagName * @param tag
* 标签名称 * 标签对象</br>标签名称长度为1~64个字节标签名不可与其他标签重名</br>标签id整型
* 指定此参数时新增的标签会生成对应的标签id不指定时则以目前最大的id自增
* @see <a * @see <a
* href="http://qydev.weixin.qq.com/wiki/index.php?title=%E7%AE%A1%E7%90%86%E6%A0%87%E7%AD%BE#.E5.88.9B.E5.BB.BA.E6.A0.87.E7.AD.BE">创建标签说明</a> * href="http://qydev.weixin.qq.com/wiki/index.php?title=%E7%AE%A1%E7%90%86%E6%A0%87%E7%AD%BE#.E5.88.9B.E5.BB.BA.E6.A0.87.E7.AD.BE">创建标签说明</a>
* @return 标签ID * @return 标签ID
* @throws WeixinException * @throws WeixinException
*/ */
public int createTag(String tagName) throws WeixinException { public int createTag(Tag tag) throws WeixinException {
String tag_create_uri = getRequestUri("tag_create_uri"); String tag_create_uri = getRequestUri("tag_create_uri");
Token token = tokenHolder.getToken(); Token token = tokenHolder.getToken();
JSONObject obj = (JSONObject) JSON.toJSON(tag);
if (obj.getIntValue("tagid") <= 0) {
obj.remove("tagid");
}
WeixinResponse response = weixinClient.post( WeixinResponse response = weixinClient.post(
String.format(tag_create_uri, token.getAccessToken()), String.format(tag_create_uri, token.getAccessToken()),
String.format("{\"tagname\":\"%s\"}", tagName)); obj.toJSONString());
return response.getAsJson().getIntValue("tagid"); return response.getAsJson().getIntValue("tagid");
} }
/** /**
* 更新标签(管理组必须是指定标签的创建者) * 更新标签(管理组必须是指定标签的创建者)
* *
* @param tag 标签信息 * @param tag
* 标签信息
* @see <a href= * @see <a href=
* "http://qydev.weixin.qq.com/wiki/index.php?title=%E7%AE%A1%E7%90%86%E6%A0%87%E7%AD%BE#.E6.9B.B4.E6.96.B0.E6.A0.87.E7.AD.BE.E5.90.8D.E5.AD.97" * "http://qydev.weixin.qq.com/wiki/index.php?title=%E7%AE%A1%E7%90%86%E6%A0%87%E7%AD%BE#.E6.9B.B4.E6.96.B0.E6.A0.87.E7.AD.BE.E5.90.8D.E5.AD.97"
* >更新标签说明</a> * >更新标签说明</a>
@ -81,8 +87,8 @@ public class TagApi extends QyApi {
public JsonResult deleteTag(int tagId) throws WeixinException { public JsonResult deleteTag(int tagId) throws WeixinException {
String tag_delete_uri = getRequestUri("tag_delete_uri"); String tag_delete_uri = getRequestUri("tag_delete_uri");
Token token = tokenHolder.getToken(); Token token = tokenHolder.getToken();
WeixinResponse response = weixinClient.post(String.format(tag_delete_uri, WeixinResponse response = weixinClient.post(String.format(
token.getAccessToken(), tagId)); tag_delete_uri, token.getAccessToken(), tagId));
return response.getAsJsonResult(); return response.getAsJsonResult();
} }
@ -118,8 +124,8 @@ public class TagApi extends QyApi {
public List<User> getTagUsers(int tagId) throws WeixinException { public List<User> getTagUsers(int tagId) throws WeixinException {
String tag_get_user_uri = getRequestUri("tag_get_user_uri"); String tag_get_user_uri = getRequestUri("tag_get_user_uri");
Token token = tokenHolder.getToken(); Token token = tokenHolder.getToken();
WeixinResponse response = weixinClient.post(String.format(tag_get_user_uri, WeixinResponse response = weixinClient.post(String.format(
token.getAccessToken(), tagId)); tag_get_user_uri, token.getAccessToken(), tagId));
return JSON.parseArray(response.getAsJson().getString("userlist"), return JSON.parseArray(response.getAsJson().getString("userlist"),
User.class); User.class);
} }

View File

@ -32,6 +32,10 @@ public class Tag implements Serializable {
} }
public Tag(String name) {
this.name = name;
}
public Tag(int id, String name) { public Tag(int id, String name) {
this.id = id; this.id = id;
this.name = name; this.name = name;

View File

@ -32,7 +32,7 @@ public class TagTest extends TokenTest {
@Test @Test
public void create() throws WeixinException { public void create() throws WeixinException {
int tagId = tagApi.createTag("coder"); int tagId = tagApi.createTag(new Tag("coder"));
Assert.assertTrue(tagId > 0); Assert.assertTrue(tagId > 0);
} }