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);
+  }
 }