下面这个类我对fastweixin 框架的简单封装调用,大家可以参考,如果需要QYAPIConfigExt和MainServernSupport,请参考本教程以前几篇文章
目标:通讯录的部门的相关操作管理,通讯录管理包括部门管理、成员管理、标签管理三个部分,
成员的管理操作,包括创建、删除、更新、获取、获取部门成员几个操作要点封装。
注意事项:1、参考官方文档,确保有相应的权限进行操作
2、注意所有名字长度是字节,不是字数,ID长度是int
3、截至写稿为止,疼讯已经禁止对成员进行邀请,所以返回 错误值。
package com.nsjs; import com.fastwixinextend.QYAPIConfigExt; import com.github.sd4324530.fastweixin.api.OauthAPI; import com.github.sd4324530.fastweixin.api.config.ApiConfig; import com.github.sd4324530.fastweixin.api.response.GetUserInfoResponse; import com.github.sd4324530.fastweixin.company.api.QYDepartmentAPI; import com.github.sd4324530.fastweixin.company.api.QYUserAPI; import com.github.sd4324530.fastweixin.company.api.config.QYAPIConfig; import com.github.sd4324530.fastweixin.company.api.entity.QYDepartment; import com.github.sd4324530.fastweixin.company.api.entity.QYUser; import com.github.sd4324530.fastweixin.company.api.enums.QYResultType; import com.github.sd4324530.fastweixin.company.api.response.CreateDepartmentResponse; import com.github.sd4324530.fastweixin.company.api.response.GetDepartmentListResponse; import com.github.sd4324530.fastweixin.company.api.response.GetQYUserInfo4DepartmentResponse; import com.github.sd4324530.fastweixin.company.api.response.GetQYUserInfoResponse; import com.github.sd4324530.fastweixin.company.api.response.GetQYUserInviteResponse; import com.fastwixinextend.QYOauthGetTokenResponse; import java.util.List; //封装by luozhuang public class MemberManage { public MemberManage() { super(); } public QYAPIConfigExt config = null; public QYAPIConfigExt initConfig() { if (config == null) { config = new QYAPIConfigExt(MainServernSupport.getCropId(), MainServernSupport.getAPPSecret(), "luozhuang", System.currentTimeMillis()); } return config; } public QYAPIConfigExt initConfig(String CropId, String APPSecret, String AccessToken, long AccessTokenTime) { QYAPIConfigExt config; config = new QYAPIConfigExt(CropId, APPSecret, AccessToken, AccessTokenTime); return config; } public List<QYDepartment> getDepartmentList() { QYDepartmentAPI departmentAPI = new QYDepartmentAPI(initConfig()); GetDepartmentListResponse response = departmentAPI.getList(1); for (QYDepartment department : response.getDepartments()) { System.out.println(department.toString()); } return response.getDepartments(); } /** * 创建部门 * * @param id 部门id,整型。指定时必须大于1,不指定时则自动生成 * @param name 名称 部门名称。长度限制为1~64个字节,字符不能包括\:*?"<>| * @param parentId 上级ID 父亲部门id。根部门id为1 * @param order 在父部门中的次序值。order值小的排序靠前。 */ public String createDepartment(int id, String name, int parentId, int order) { QYDepartmentAPI departmentAPI = new QYDepartmentAPI(initConfig()); QYDepartment department = new QYDepartment(id, name, parentId, order); CreateDepartmentResponse response = departmentAPI.create(department); return response.getErrcode(); } /** * @param id 部门id,整型。指定时必须大于1,不指定时则自动生成 * @param name 名称 部门名称。长度限制为1~64个字节,字符不能包括\:*?"<>| * @param parentId 上级ID 父亲部门id。根部门id为1 * @return */ public String createDepartment(int id, String name, int parentId) { QYDepartmentAPI departmentAPI = new QYDepartmentAPI(initConfig()); QYDepartment department = new QYDepartment(id, name, parentId, 1); CreateDepartmentResponse response = departmentAPI.create(department); return response.getErrcode(); } /** * 更新部门 * * @param id 部门id,整型。指定时必须大于1,不指定时则自动生成 * @param name 名称 部门名称。长度限制为1~64个字节,字符不能包括\:*?"<>| * @param parentId 上级ID 父亲部门id。根部门id为1 * @param order 在父部门中的次序值。order值小的排序靠前。 */ public String updateDepartment(int id, String name, int parentId, int order) { QYDepartmentAPI departmentAPI = new QYDepartmentAPI(initConfig()); QYDepartment department = new QYDepartment(id, name, parentId, order); QYResultType resultType = departmentAPI.update(department); return String.valueOf(resultType.getCode()); } /** * 删除部门 * * @param id 部门ID * @return */ public String deleteDepartment(int id) { QYDepartmentAPI departmentAPI = new QYDepartmentAPI(initConfig()); QYResultType resultType = departmentAPI.delete(id); return String.valueOf(resultType.getCode()); } /** * @param userId 成员UserID。对应管理端的帐号,企业内必须唯一。长度为1~64个字节 * @param name 成员名称。长度为1~64个字节 * @param department 成员所属部门id列表 * @param position 职位信息。长度为0~64个字节 * @param mobile 手机号码。企业内必须唯一,mobile/weixinid/email三者不能同时为空 * @param gender 性别。1表示男性,2表示女性 * @param email 邮箱。长度为0~64个字节。企业内必须唯一 * @param weixinid 微信号。企业内必须唯一。(注意:是微信号,不是微信的名字) */ public String createUser(String userId, String name, Integer[] department, String position, String mobile, String gender, String email, String weixinid) { QYUserAPI userAPI = new QYUserAPI(initConfig()); QYUser user = new QYUser(userId, name, department, position, mobile, QYUser.Gender.MAN, email, weixinid, null); QYResultType resultType = userAPI.create(user); return String.valueOf(resultType.getCode()); } /** * @param userId 成员UserID。对应管理端的帐号,企业内必须唯一。长度为1~64个字节 * @param name 成员名称。长度为1~64个字节 * @param department 成员所属部门id列表 * @param position 职位信息。长度为0~64个字节 * @param mobile 手机号码。企业内必须唯一,mobile/weixinid/email三者不能同时为空 * @param gender 性别。1表示男性,2表示女性 * @param email 邮箱。长度为0~64个字节。企业内必须唯一 * @param weixinid 微信号。企业内必须唯一。(注意:是微信号,不是微信的名字) */ public String updateUser(String userId, String name, Integer[] department, String position, String mobile, String gender, String email, String weixinid) { QYUserAPI userAPI = new QYUserAPI(initConfig()); QYUser user = new QYUser(userId, name, department, position, mobile, QYUser.Gender.MAN, email, weixinid, null); QYResultType resultType = userAPI.update(user); return String.valueOf(resultType.getCode()); } /** * * @param userId * @return */ public String GetUserExist(String userId) { QYUserAPI userAPI = new QYUserAPI(initConfig()); GetQYUserInfoResponse response = userAPI.get(userId); return response.getErrcode(); } /** * * @param userId * @return */ public QYUser GetUserInfo(String userId) { QYUserAPI userAPI = new QYUserAPI(initConfig()); GetQYUserInfoResponse response = userAPI.get(userId); return response.getUser(); } /** * * @param userId * @return */ public String deleteUser(String userId) { QYUserAPI userAPI = new QYUserAPI(initConfig()); QYResultType resultType = userAPI.delete(userId); return String.valueOf(resultType.getCode()); } /** * 邀请成员关注。返回值type为1时表示微信邀请,2为邮件邀请 * * @param userId 用户ID * @return 邀请结果 */ public String inviteUser(String userId) { QYUserAPI userAPI = new QYUserAPI(initConfig()); GetQYUserInviteResponse resultType = userAPI.invite(userId); return resultType.getErrcode(); } public List<QYUser> getUserList() { QYUserAPI userAPI = new QYUserAPI(initConfig()); GetQYUserInfo4DepartmentResponse response = userAPI.getList(1, false, 0); List<QYUser> users = null; if ("0".equals(response.getErrcode())) { users = response.getUserList(); for (QYUser user : users) { Integer[] departments = user.getDepartment(); for (int departmentId : departments) { System.out.println(user.getUserId() + ":\t" + user.getName() + ":\t" + departmentId + ":\t" + user.getWeixinid()); } } } else { System.out.println(QYResultType.get(response.getErrcode()).getDescription()); } return users; } public static void main(String[] arg) { MemberManage men = new MemberManage(); men.getUserList(); } }