【企业微信】接待人员管理 添加接待人员/删除接待人员 增加 department_id_list

This commit is contained in:
zhangrongguang 2025-03-27 18:07:27 +08:00
parent a113746ca8
commit 8bd2c1dbbb
2 changed files with 72 additions and 7 deletions

View File

@ -75,6 +75,19 @@ public interface WxCpKfService {
*/
WxCpKfServicerOpResp addServicer(String openKfid, List<String> userIdList) throws WxErrorException;
/**
* 接待人员管理
* 添加指定客服账号的接待人员每个客服账号目前最多可添加2000个接待人员20个部门
* userid_list和department_id_list至少需要填其中一个
*
* @param openKfid 客服帐号ID
* @param userIdList 接待人员userid列表第三方应用填密文userid即open_userid 可填充个数1 ~ 100超过100个需分批调用
* @param departmentIdList 接待人员部门id列表 可填充个数0 ~ 20
* @return 添加客服账号结果 wx cp kf servicer op resp
* @throws WxErrorException 异常
*/
WxCpKfServicerOpResp addServicer(String openKfid, List<String> userIdList,List<String> departmentIdList) throws WxErrorException;
/**
* 接待人员管理
* 从客服帐号删除接待人员
@ -86,6 +99,19 @@ public interface WxCpKfService {
*/
WxCpKfServicerOpResp delServicer(String openKfid, List<String> userIdList) throws WxErrorException;
/**
* 接待人员管理
* 从客服帐号删除接待人员
* userid_list和department_id_list至少需要填其中一个
*
* @param openKfid 客服帐号ID
* @param userIdList 接待人员userid列表第三方应用填密文userid即open_userid 可填充个数1 ~ 100超过100个需分批调用
* @param departmentIdList 接待人员部门id列表 可填充个数0 ~ 100超过100个需分批调用
* @return 删除客服账号结果 wx cp kf servicer op resp
* @throws WxErrorException 异常
*/
WxCpKfServicerOpResp delServicer(String openKfid, List<String> userIdList, List<String> departmentIdList) throws WxErrorException;
/**
* 接待人员管理
* 获取某个客服帐号的接待人员列表

View File

@ -70,23 +70,62 @@ public class WxCpKfServiceImpl implements WxCpKfService {
@Override
public WxCpKfServicerOpResp addServicer(String openKfid, List<String> userIdList) throws WxErrorException {
return servicerOp(openKfid, userIdList, SERVICER_ADD);
return servicerOp(openKfid, userIdList, null, SERVICER_ADD);
}
@Override
public WxCpKfServicerOpResp addServicer(String openKfId, List<String> userIdList, List<String> departmentIdList) throws WxErrorException {
validateParameters(SERVICER_ADD, userIdList, departmentIdList);
return servicerOp(openKfId, userIdList, departmentIdList, SERVICER_ADD);
}
@Override
public WxCpKfServicerOpResp delServicer(String openKfid, List<String> userIdList) throws WxErrorException {
return servicerOp(openKfid, userIdList, SERVICER_DEL);
return servicerOp(openKfid, userIdList, null, SERVICER_DEL);
}
private WxCpKfServicerOpResp servicerOp(String openKfid, List<String> userIdList, String uri) throws WxErrorException {
@Override
public WxCpKfServicerOpResp delServicer(String openKfid, List<String> userIdList, List<String> departmentIdList) throws WxErrorException {
validateParameters(SERVICER_DEL, userIdList, departmentIdList);
return servicerOp(openKfid, userIdList, departmentIdList, SERVICER_DEL);
}
private void validateParameters(String uri, List<String> userIdList, List<String> departmentIdList) {
if ((userIdList == null || userIdList.isEmpty()) && (departmentIdList == null || departmentIdList.isEmpty())) {
throw new IllegalArgumentException("userid_list和department_id_list至少需要填其中一个");
}
if (SERVICER_DEL.equals(uri)) {
if (userIdList != null && userIdList.size() > 100) {
throw new IllegalArgumentException("可填充个数0 ~ 100。超过100个需分批调用。");
}
if (departmentIdList != null && departmentIdList.size() > 100) {
throw new IllegalArgumentException("可填充个数0 ~ 100。超过100个需分批调用。");
}
} else {
if (userIdList != null && userIdList.size() > 100) {
throw new IllegalArgumentException("可填充个数0 ~ 100。超过100个需分批调用。");
}
if (departmentIdList != null && departmentIdList.size() > 20) {
throw new IllegalArgumentException("可填充个数0 ~ 20。");
}
}
}
private WxCpKfServicerOpResp servicerOp(String openKfid, List<String> userIdList, List<String> departmentIdList, String uri) throws WxErrorException {
String url = cpService.getWxCpConfigStorage().getApiUrl(uri);
JsonObject json = new JsonObject();
json.addProperty("open_kfid", openKfid);
if (userIdList != null && !userIdList.isEmpty()) {
JsonArray userIdArray = new JsonArray();
userIdList.forEach(userIdArray::add);
json.add("userid_list", userIdArray);
}
if (departmentIdList != null && !departmentIdList.isEmpty()) {
JsonArray departmentIdArray = new JsonArray();
departmentIdList.forEach(departmentIdArray::add);
json.add("department_id_list", departmentIdArray);
}
String responseContent = cpService.post(url, json.toString());
return WxCpKfServicerOpResp.fromJson(responseContent);
}