Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.cp.bean.WxCpAgent;
import me.chanjar.weixin.cp.bean.WxCpTpAdmin;

import java.util.List;

Expand Down Expand Up @@ -52,4 +53,18 @@ public interface WxCpAgentService {
*/
List<WxCpAgent> list() throws WxErrorException;

/**
* <pre>
* 获取应用管理员列表
* 第三方服务商可以用此接口获取授权企业中某个第三方应用或者代开发应用的管理员列表(不包括外部管理员),
* 以便服务商在用户进入应用主页之后根据是否管理员身份做权限的区分。
* 详情请见: <a href="https://developer.work.weixin.qq.com/document/path/90506">文档</a>
* </pre>
*
* @param agentId 应用id
* @return admin list
* @throws WxErrorException the wx error exception
*/
WxCpTpAdmin getAdminList(Integer agentId) throws WxErrorException;

}
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import me.chanjar.weixin.cp.api.WxCpAgentService;
import me.chanjar.weixin.cp.api.WxCpService;
import me.chanjar.weixin.cp.bean.WxCpAgent;
import me.chanjar.weixin.cp.bean.WxCpTpAdmin;
import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;

import java.util.List;
Expand Down Expand Up @@ -65,4 +66,21 @@ public List<WxCpAgent> list() throws WxErrorException {
}.getType());
}

@Override
public WxCpTpAdmin getAdminList(Integer agentId) throws WxErrorException {
if (agentId == null) {
throw new IllegalArgumentException("缺少agentid参数");
}

JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("agentid", agentId);
String url = this.mainService.getWxCpConfigStorage().getApiUrl(AGENT_GET_ADMIN_LIST);
String responseContent = this.mainService.post(url, jsonObject.toString());
JsonObject respObj = GsonParser.parse(responseContent);
if (respObj.get(WxConsts.ERR_CODE).getAsInt() != 0) {
throw new WxErrorException(WxError.fromJson(responseContent, WxType.CP));
}
return WxCpTpAdmin.fromJson(responseContent);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,10 @@ interface Agent {
* The constant AGENT_LIST.
*/
String AGENT_LIST = "/cgi-bin/agent/list";
/**
* The constant AGENT_GET_ADMIN_LIST.
*/
String AGENT_GET_ADMIN_LIST = "/cgi-bin/agent/get_admin_list";
}

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
package me.chanjar.weixin.cp.api.impl;

import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.inject.Inject;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.cp.api.ApiTestModule;
import me.chanjar.weixin.cp.api.WxCpAgentService;
import me.chanjar.weixin.cp.api.WxCpService;
import me.chanjar.weixin.cp.bean.WxCpAgent;
import me.chanjar.weixin.cp.bean.WxCpTpAdmin;
import me.chanjar.weixin.cp.config.WxCpConfigStorage;
import me.chanjar.weixin.cp.config.impl.WxCpDefaultConfigImpl;
import me.chanjar.weixin.cp.constant.WxCpApiPathConsts;
Expand Down Expand Up @@ -82,6 +85,20 @@ public void testList() throws WxErrorException {
assertThat(list.get(0).getSquareLogoUrl()).isNotEmpty();
}

/**
* Test get admin list.
*
* @throws WxErrorException the wx error exception
*/
@Test
public void testGetAdminList() throws WxErrorException {
final Integer agentId = this.wxCpService.getWxCpConfigStorage().getAgentId();
WxCpTpAdmin adminList = this.wxCpService.getAgentService().getAdminList(agentId);

assertThat(adminList).isNotNull();
assertThat(adminList.getErrcode()).isEqualTo(0L);
}

/**
* The type Mock test.
*/
Expand Down Expand Up @@ -118,6 +135,51 @@ public void testGet() throws Exception {

}

/**
* Test get admin list.
*
* @throws Exception the exception
*/
@Test
public void testGetAdminList() throws Exception {
// 构建响应JSON
JsonObject admin1 = new JsonObject();
admin1.addProperty("userid", "zhangsan");
admin1.addProperty("open_userid", "woAJ2GCAAAXtWyujaWJHDDGi0mACH71w");
admin1.addProperty("auth_type", 1);

JsonObject admin2 = new JsonObject();
admin2.addProperty("userid", "lisi");
admin2.addProperty("open_userid", "woAJ2GCAAAXtWyujaWJHDDGi0mACH72w");
admin2.addProperty("auth_type", 2);

JsonArray adminArray = new JsonArray();
adminArray.add(admin1);
adminArray.add(admin2);

JsonObject returnJsonObj = new JsonObject();
returnJsonObj.addProperty("errcode", 0);
returnJsonObj.addProperty("errmsg", "ok");
returnJsonObj.add("admin", adminArray);
String returnJson = returnJsonObj.toString();

JsonObject requestJson = new JsonObject();
requestJson.addProperty("agentid", 9);
final WxCpConfigStorage configStorage = new WxCpDefaultConfigImpl();
when(wxService.getWxCpConfigStorage()).thenReturn(configStorage);
when(wxService.post(configStorage.getApiUrl(WxCpApiPathConsts.Agent.AGENT_GET_ADMIN_LIST), requestJson.toString())).thenReturn(returnJson);
when(wxService.getAgentService()).thenReturn(new WxCpAgentServiceImpl(wxService));

WxCpAgentService wxAgentService = this.wxService.getAgentService();
WxCpTpAdmin adminList = wxAgentService.getAdminList(9);

assertEquals(0, adminList.getErrcode().intValue());
assertEquals(2, adminList.getAdmin().size());
assertEquals("zhangsan", adminList.getAdmin().get(0).getUserId());
assertEquals("woAJ2GCAAAXtWyujaWJHDDGi0mACH71w", adminList.getAdmin().get(0).getOpenUserId());
assertEquals(1, adminList.getAdmin().get(0).getAuthType().intValue());
}

}

}