diff --git a/src/main/java/chanjarster/weixin/api/WxService.java b/src/main/java/chanjarster/weixin/api/WxService.java index 67e0fd03..4f6e30b1 100644 --- a/src/main/java/chanjarster/weixin/api/WxService.java +++ b/src/main/java/chanjarster/weixin/api/WxService.java @@ -199,6 +199,18 @@ public interface WxService { */ public long groupQueryUserGroup(String openid) throws WxErrorException; + /** + *
+ * 分组管理接口 - 修改分组名 + * 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=分组管理接口 + * + * 如果id为0(未分组),1(黑名单),2(星标组),或者不存在的id,微信会返回系统繁忙的错误 + *+ * @param group 要更新的group,group的id,name必须设置 + * @throws WxErrorException + */ + public void groupUpdate(WxGroup group) throws WxErrorException; + /** *
* 分组管理接口 - 查询所有分组 diff --git a/src/main/java/chanjarster/weixin/api/WxServiceImpl.java b/src/main/java/chanjarster/weixin/api/WxServiceImpl.java index 56a61c7f..ee844003 100644 --- a/src/main/java/chanjarster/weixin/api/WxServiceImpl.java +++ b/src/main/java/chanjarster/weixin/api/WxServiceImpl.java @@ -196,7 +196,10 @@ public class WxServiceImpl implements WxService { public WxGroup groupCreate(String name) throws WxErrorException { String url = "https://api.weixin.qq.com/cgi-bin/groups/create"; - String responseContent = execute(new SimplePostRequestExecutor(), url, MessageFormat.format("'{'\"group\":'{'\"name\":\"{0}\"}}", name)); + String responseContent = execute( + new SimplePostRequestExecutor(), + url, + MessageFormat.format("'{'\"group\":'{'\"name\":\"{0}\"}}", name)); return WxGroup.fromJson(responseContent); } @@ -218,6 +221,11 @@ public class WxServiceImpl implements WxService { return GsonHelper.getAsLong(tmpJsonElement.getAsJsonObject().get("groupid")); } + public void groupUpdate(WxGroup group) throws WxErrorException { + String url = "https://api.weixin.qq.com/cgi-bin/groups/update"; + execute(new SimplePostRequestExecutor(), url, group.toJson()); + } + /** * 向微信端发送请求,在这里执行的策略是当发生access_token过期时才去刷新,然后重新执行请求,而不是全局定时请求 * @param executor @@ -255,11 +263,11 @@ public class WxServiceImpl implements WxService { if(retryTimes.get() == null) { retryTimes.set(0); } - if (retryTimes.get() > 5) { + if (retryTimes.get() > 4) { retryTimes.set(0); throw new RuntimeException("微信服务端异常,超出重试次数"); } - int sleepMillis = 1000 * (1 >> (retryTimes.get() - 1)); + int sleepMillis = 1000 * (1 << retryTimes.get()); try { System.out.println("微信系统繁忙," + sleepMillis + "ms后重试"); Thread.sleep(sleepMillis); diff --git a/src/main/java/chanjarster/weixin/bean/WxGroup.java b/src/main/java/chanjarster/weixin/bean/WxGroup.java index 38c5ceb8..cc72c56b 100644 --- a/src/main/java/chanjarster/weixin/bean/WxGroup.java +++ b/src/main/java/chanjarster/weixin/bean/WxGroup.java @@ -35,7 +35,7 @@ public class WxGroup { return WxGsonBuilder.create().fromJson(json, WxGroup.class); } - public String toJson(String json) { + public String toJson() { return WxGsonBuilder.create().toJson(this); } @Override diff --git a/src/test/java/chanjarster/weixin/api/WxGroupAPITest.java b/src/test/java/chanjarster/weixin/api/WxGroupAPITest.java index 82d1c3dc..9542759c 100644 --- a/src/test/java/chanjarster/weixin/api/WxGroupAPITest.java +++ b/src/test/java/chanjarster/weixin/api/WxGroupAPITest.java @@ -35,14 +35,21 @@ public class WxGroupAPITest { Assert.assertNotNull(groupList); Assert.assertTrue(groupList.size() > 0); for (WxGroup g : groupList) { + System.out.println(g.toString()); Assert.assertNotNull(g.getName()); } } @Test(dependsOnMethods="testGroupCreate") - public void groupQueryUserGroup() throws WxErrorException { + public void testGroupQueryUserGroup() throws WxErrorException { WxXmlConfigStorage configStorage = (WxXmlConfigStorage) wxService.wxConfigStorage; long groupid = wxService.groupQueryUserGroup(configStorage.getOpenId()); } + public void getGroupUpdate() throws WxErrorException { + WxGroup group = new WxGroup(); + group.setId(3); + group.setName("未命名分组"); + wxService.groupUpdate(group); + } }