cs 2 سال پیش
والد
کامیت
a9e7c4d99d

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/DepartmentController.java

@@ -36,7 +36,7 @@ public class DepartmentController {
     }
 
     @RequestMapping("/listAllMemb")
-    public HttpRespMsg listAllMemb(HttpServletRequest request,String keyword,String cursor) {
+    public HttpRespMsg listAllMemb(HttpServletRequest request,String keyword,String cursor) throws Exception {
         return departmentService.listAllMemb(request,keyword,cursor);
     }
 

+ 2 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/UserController.java

@@ -73,12 +73,12 @@ public class UserController {
                                        Integer status, Integer roleId,
                                        Integer onlyDirect,
                                        String cursor,
-                                       @RequestParam Integer pageIndex, @RequestParam Integer pageSize) {
+                                       @RequestParam Integer pageIndex, @RequestParam Integer pageSize) throws Exception {
         return userService.getEmployeeList(departmentId, keyword, status, roleId, onlyDirect, cursor,pageIndex, pageSize, request);
     }
 
     @RequestMapping("/getSimpleActiveUserList")
-    public HttpRespMsg getSimpleActiveUserList(Integer departmentId,String keyword,String cursor) {
+    public HttpRespMsg getSimpleActiveUserList(Integer departmentId,String keyword,String cursor) throws Exception {
         return userService.getSimpleActiveUserList(departmentId,request,keyword,cursor);
     }
 

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/DepartmentService.java

@@ -35,7 +35,7 @@ public interface DepartmentService extends IService<Department> {
 
     HttpRespMsg exportUserStatistic(String startDate, String endDate, String userIds, HttpServletRequest request);
 
-    HttpRespMsg listAllMemb(HttpServletRequest request,String keyword,String cursor);
+    HttpRespMsg listAllMemb(HttpServletRequest request,String keyword,String cursor) throws Exception;
 
     HttpRespMsg listMyMembs(HttpServletRequest request);
 

+ 2 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/UserService.java

@@ -23,7 +23,7 @@ public interface UserService extends IService<User> {
 
     HttpRespMsg getUserInfo(String id);
 
-    HttpRespMsg getEmployeeList(Integer departmentId, String keyword, Integer status, Integer roleId, Integer onlyDirect, String cursor, Integer pageIndex, Integer pageSize, HttpServletRequest request);
+    HttpRespMsg getEmployeeList(Integer departmentId, String keyword, Integer status, Integer roleId, Integer onlyDirect, String cursor, Integer pageIndex, Integer pageSize, HttpServletRequest request) throws Exception;
 
     HttpRespMsg deleteUser(String userId, HttpServletRequest request);
 
@@ -68,7 +68,7 @@ public interface UserService extends IService<User> {
 
     HttpRespMsg batchUpdateRole(String userIds, Integer roleId, HttpServletRequest request);
 
-    HttpRespMsg getSimpleActiveUserList(Integer departmentId, HttpServletRequest request,String keyword,String cursor);
+    HttpRespMsg getSimpleActiveUserList(Integer departmentId, HttpServletRequest request,String keyword,String cursor) throws Exception;
 
     HttpRespMsg getUserListByRole(HttpServletRequest request,String tableName);
 

+ 3 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/WxCorpInfoService.java

@@ -8,6 +8,7 @@ import com.management.platform.entity.WxCorpInfo;
 import com.management.platform.util.HttpRespMsg;
 
 import java.time.LocalDateTime;
+import java.util.HashMap;
 import java.util.List;
 
 /**
@@ -62,4 +63,6 @@ public interface WxCorpInfoService extends IService<WxCorpInfo> {
     HttpRespMsg getBatchSearchUserInfo(WxCorpInfo wxCorpInfo, List<String> userNameList,String cursor) throws Exception;
 
     HttpRespMsg fixPunchRecord(Integer companyId, LocalDateTime start, LocalDateTime end, boolean b);
+
+    HashMap<String, List> getOpenId(String corpId, String keyword, String cursor,Integer queryType,Integer limit) throws Exception;
 }

+ 81 - 78
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/DepartmentServiceImpl.java

@@ -11,6 +11,7 @@ import com.management.platform.entity.vo.SysRichFunction;
 import com.management.platform.mapper.*;
 import com.management.platform.service.DepartmentService;
 import com.management.platform.service.ExcelExportService;
+import com.management.platform.service.WxCorpInfoService;
 import com.management.platform.util.ExcelUtil;
 import com.management.platform.util.HttpRespMsg;
 import com.management.platform.util.ListUtil;
@@ -72,6 +73,8 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
     private WxCorpInfoMapper wxCorpInfoMapper;
     @Resource
     private ExcelExportService excelExportService;
+    @Resource
+    private WxCorpInfoService wxCorpInfoService;
 
     @Value("${corpId}")
     private String corpId;
@@ -825,95 +828,95 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
         return httpRespMsg;
     }
 
-    //获取provider_access_token
-    private String getProviderAccessToken() {
-        if (UserServiceImpl.provider_access_token == null || UserServiceImpl.providerTokenExpireTime < System.currentTimeMillis()) {
-            //失效了,需要重新获取
-            String url = "https://qyapi.weixin.qq.com/cgi-bin/service/get_provider_token";
-            HttpHeaders headers = new HttpHeaders();
-            RestTemplate restTemplate = new RestTemplate();
-            MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
-            headers.setContentType(type);
-            headers.add("Accept", MediaType.APPLICATION_JSON.toString());
-            JSONObject reqParam = new JSONObject();
-            reqParam.put("corpid", corpId);
-            reqParam.put("provider_secret", providerSecret);
-            HttpEntity<JSONObject> Entity = new HttpEntity<>(reqParam, headers);
-            ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, Entity, String.class);
-            if (responseEntity.getStatusCode() == HttpStatus.OK) {
-                String resp = responseEntity.getBody();
-                JSONObject obj = JSONObject.parseObject(resp);
-                if (obj.getIntValue("errcode") == 0) {
-                    UserServiceImpl.provider_access_token = obj.getString("provider_access_token");
-                    UserServiceImpl.providerTokenExpireTime = System.currentTimeMillis() + obj.getIntValue("expires_in")*1000;
-                }
-            }
-        }
-        return UserServiceImpl.provider_access_token;
-    }
+//    //获取provider_access_token
+//    private String getProviderAccessToken() {
+//        if (UserServiceImpl.provider_access_token == null || UserServiceImpl.providerTokenExpireTime < System.currentTimeMillis()) {
+//            //失效了,需要重新获取
+//            String url = "https://qyapi.weixin.qq.com/cgi-bin/service/get_provider_token";
+//            HttpHeaders headers = new HttpHeaders();
+//            RestTemplate restTemplate = new RestTemplate();
+//            MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
+//            headers.setContentType(type);
+//            headers.add("Accept", MediaType.APPLICATION_JSON.toString());
+//            JSONObject reqParam = new JSONObject();
+//            reqParam.put("corpid", corpId);
+//            reqParam.put("provider_secret", providerSecret);
+//            HttpEntity<JSONObject> Entity = new HttpEntity<>(reqParam, headers);
+//            ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, Entity, String.class);
+//            if (responseEntity.getStatusCode() == HttpStatus.OK) {
+//                String resp = responseEntity.getBody();
+//                JSONObject obj = JSONObject.parseObject(resp);
+//                if (obj.getIntValue("errcode") == 0) {
+//                    UserServiceImpl.provider_access_token = obj.getString("provider_access_token");
+//                    UserServiceImpl.providerTokenExpireTime = System.currentTimeMillis() + obj.getIntValue("expires_in")*1000;
+//                }
+//            }
+//        }
+//        return UserServiceImpl.provider_access_token;
+//    }
 
     //根据关键词查询微信通讯录人员的openid以及部门
     //keyword不可为空格或空字符串,否则请求参数错误
-    private HashMap<String, List> getOpenId(String corpId,String keyword,String cursor) {
-        HashMap<String, List> result = new HashMap<>();
-        List<Object> user = new ArrayList<>();
-        String itemCursor = "";
-        String url = "https://qyapi.weixin.qq.com/cgi-bin/service/contact/search?provider_access_token=ACCESS_TOKEN";
-        HttpHeaders headers = new HttpHeaders();
-        RestTemplate restTemplate = new RestTemplate();
-        MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
-        headers.setContentType(type);
-        headers.add("Accept", MediaType.APPLICATION_JSON.toString());
-        String providerToken = getProviderAccessToken();
-        if (providerToken!=null){
-            //搜索通讯录名单
-            url = url.replace("ACCESS_TOKEN", providerToken);
-            JSONObject requestMap = new JSONObject();
-            requestMap.put("auth_corpid", corpId);
-            requestMap.put("query_word", keyword);
-            requestMap.put("query_type", 0);
-            requestMap.put("query_range", 1);
-            requestMap.put("limit", 20);
-            requestMap.put("cursor", cursor);
-            HttpEntity<JSONObject> entity = new HttpEntity<>(requestMap, headers);
-            ResponseEntity<String> ResponseEntity = restTemplate.postForEntity(url, entity, String.class);
-            if (ResponseEntity.getStatusCode() == HttpStatus.OK) {
-                String resp = ResponseEntity.getBody();
-                JSONObject respJson = JSONObject.parseObject(resp);
-                    if (respJson.getInteger("errcode")==0){
-                        JSONObject queryResult = respJson.getJSONObject("query_result");
-                        if (!queryResult.isEmpty()){
-                            JSONArray jsonArray = queryResult.getJSONObject("user").getJSONArray("open_userid");
-                            if (jsonArray!=null){
-                                Object[] objects = jsonArray.toArray();
-                                for (Object object : objects) {
-                                    user.add(object);
-                                }
-                            }
-                            Boolean is_last = respJson.getBoolean("is_last");
-                            if (!is_last){
-                                itemCursor = respJson.getString("next_cursor");
-                            }
-                        }
-                    }
-            }
-        }
-        List<Object> nextCursor = new ArrayList<>();
-        nextCursor.add(itemCursor);
-        result.put("nextCursor",nextCursor);
-        result.put("user",user);
-        return result;
-    }
+//    private HashMap<String, List> getOpenId(String corpId,String keyword,String cursor) {
+//        HashMap<String, List> result = new HashMap<>();
+//        List<Object> user = new ArrayList<>();
+//        String itemCursor = "";
+//        String url = "https://qyapi.weixin.qq.com/cgi-bin/service/contact/search?provider_access_token=ACCESS_TOKEN";
+//        HttpHeaders headers = new HttpHeaders();
+//        RestTemplate restTemplate = new RestTemplate();
+//        MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
+//        headers.setContentType(type);
+//        headers.add("Accept", MediaType.APPLICATION_JSON.toString());
+//        String providerToken = getProviderAccessToken();
+//        if (providerToken!=null){
+//            //搜索通讯录名单
+//            url = url.replace("ACCESS_TOKEN", providerToken);
+//            JSONObject requestMap = new JSONObject();
+//            requestMap.put("auth_corpid", corpId);
+//            requestMap.put("query_word", keyword);
+//            requestMap.put("query_type", 0);
+//            requestMap.put("query_range", 1);
+//            requestMap.put("limit", 20);
+//            requestMap.put("cursor", cursor);
+//            HttpEntity<JSONObject> entity = new HttpEntity<>(requestMap, headers);
+//            ResponseEntity<String> ResponseEntity = restTemplate.postForEntity(url, entity, String.class);
+//            if (ResponseEntity.getStatusCode() == HttpStatus.OK) {
+//                String resp = ResponseEntity.getBody();
+//                JSONObject respJson = JSONObject.parseObject(resp);
+//                    if (respJson.getInteger("errcode")==0){
+//                        JSONObject queryResult = respJson.getJSONObject("query_result");
+//                        if (!queryResult.isEmpty()){
+//                            JSONArray jsonArray = queryResult.getJSONObject("user").getJSONArray("open_userid");
+//                            if (jsonArray!=null){
+//                                Object[] objects = jsonArray.toArray();
+//                                for (Object object : objects) {
+//                                    user.add(object);
+//                                }
+//                            }
+//                            Boolean is_last = respJson.getBoolean("is_last");
+//                            if (!is_last){
+//                                itemCursor = respJson.getString("next_cursor");
+//                            }
+//                        }
+//                    }
+//            }
+//        }
+//        List<Object> nextCursor = new ArrayList<>();
+//        nextCursor.add(itemCursor);
+//        result.put("nextCursor",nextCursor);
+//        result.put("user",user);
+//        return result;
+//    }
 
     @Override
-    public HttpRespMsg listAllMemb(HttpServletRequest request,String keyword,String cursor) {
+    public HttpRespMsg listAllMemb(HttpServletRequest request,String keyword,String cursor) throws Exception {
         Integer companyId = userMapper.selectById(request.getHeader("TOKEN")).getCompanyId();
         HttpRespMsg msg = new HttpRespMsg();
         List<HashMap> userMapList = new ArrayList<>();
         //通讯录查询人员
         WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", companyId));
         if (StringUtils.isNotBlank(keyword) && wxCorpInfo!=null && wxCorpInfo.getSaasSyncContact()==1){
-            HashMap<String, List> result = getOpenId(wxCorpInfo.getCorpid(), keyword, cursor);
+            HashMap<String, List> result = wxCorpInfoService.getOpenId(wxCorpInfo.getCorpid(), keyword, cursor,0,20);
             List users = result.get("user");
             if (users.size()!=0){
                 List<User> realUser = userMapper.selectList(new QueryWrapper<User>().in("corpwx_userid", users));

+ 89 - 89
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/UserServiceImpl.java

@@ -655,98 +655,98 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
         return httpRespMsg;
     }
 
-    //获取provider_access_token
-    private String getProviderAccessToken() {
-        if (UserServiceImpl.provider_access_token == null || UserServiceImpl.providerTokenExpireTime < System.currentTimeMillis()) {
-            //失效了,需要重新获取
-            String url = "https://qyapi.weixin.qq.com/cgi-bin/service/get_provider_token";
-            HttpHeaders headers = new HttpHeaders();
-            RestTemplate restTemplate = new RestTemplate();
-            MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
-            headers.setContentType(type);
-            headers.add("Accept", MediaType.APPLICATION_JSON.toString());
-            JSONObject reqParam = new JSONObject();
-            reqParam.put("corpid", corpId);
-            reqParam.put("provider_secret", providerSecret);
-            HttpEntity<JSONObject> Entity = new HttpEntity<>(reqParam, headers);
-            ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, Entity, String.class);
-            if (responseEntity.getStatusCode() == HttpStatus.OK) {
-                String resp = responseEntity.getBody();
-                System.err.println(resp);
-                JSONObject obj = JSONObject.parseObject(resp);
-                if (obj.getIntValue("errcode") == 0) {
-                    UserServiceImpl.provider_access_token = obj.getString("provider_access_token");
-                    UserServiceImpl.providerTokenExpireTime = System.currentTimeMillis() + obj.getIntValue("expires_in")*1000;
-                }else{
-                    System.err.println("====================token获取失败======================");
-                }
-            }
-        }
-        return UserServiceImpl.provider_access_token;
-    }
+//    //获取provider_access_token
+//    private String getProviderAccessToken() {
+//        if (UserServiceImpl.provider_access_token == null || UserServiceImpl.providerTokenExpireTime < System.currentTimeMillis()) {
+//            //失效了,需要重新获取
+//            String url = "https://qyapi.weixin.qq.com/cgi-bin/service/get_provider_token";
+//            HttpHeaders headers = new HttpHeaders();
+//            RestTemplate restTemplate = new RestTemplate();
+//            MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
+//            headers.setContentType(type);
+//            headers.add("Accept", MediaType.APPLICATION_JSON.toString());
+//            JSONObject reqParam = new JSONObject();
+//            reqParam.put("corpid", corpId);
+//            reqParam.put("provider_secret", providerSecret);
+//            HttpEntity<JSONObject> Entity = new HttpEntity<>(reqParam, headers);
+//            ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, Entity, String.class);
+//            if (responseEntity.getStatusCode() == HttpStatus.OK) {
+//                String resp = responseEntity.getBody();
+//                System.err.println(resp);
+//                JSONObject obj = JSONObject.parseObject(resp);
+//                if (obj.getIntValue("errcode") == 0) {
+//                    UserServiceImpl.provider_access_token = obj.getString("provider_access_token");
+//                    UserServiceImpl.providerTokenExpireTime = System.currentTimeMillis() + obj.getIntValue("expires_in")*1000;
+//                }else{
+//                    System.err.println("====================token获取失败======================");
+//                }
+//            }
+//        }
+//        return UserServiceImpl.provider_access_token;
+//    }
 
     //根据关键词查询微信通讯录人员的openid
     //keyword不可为空格或空字符串,否则请求参数错误
-    private HashMap<String, List> getOpenId(String corpId,String keyword,String cursor) {
-        HashMap<String, List> result = new HashMap<>();
-        List<Object> user = new ArrayList<>();
-        String itemCursor = "";
-        String url = "https://qyapi.weixin.qq.com/cgi-bin/service/contact/search?provider_access_token=ACCESS_TOKEN";
-        HttpHeaders headers = new HttpHeaders();
-        RestTemplate restTemplate = new RestTemplate();
-        MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
-        headers.setContentType(type);
-        headers.add("Accept", MediaType.APPLICATION_JSON.toString());
-        String providerToken = getProviderAccessToken();
-        if (providerToken!=null){
-            //搜索通讯录名单
-            url = url.replace("ACCESS_TOKEN", providerToken);
-            JSONObject requestMap = new JSONObject();
-            requestMap.put("auth_corpid", corpId);
-            requestMap.put("query_word", keyword);
-            requestMap.put("query_type", 1);
-            requestMap.put("query_range", 1);
-            requestMap.put("limit", 200);
-            requestMap.put("cursor", cursor);
-            HttpEntity<JSONObject> entity = new HttpEntity<>(requestMap, headers);
-            ResponseEntity<String> ResponseEntity = restTemplate.postForEntity(url, entity, String.class);
-            if (ResponseEntity.getStatusCode() == HttpStatus.OK) {
-                String resp = ResponseEntity.getBody();
-                JSONObject respJson = JSONObject.parseObject(resp);
-                if (respJson.getInteger("errcode")==0){
-                    JSONObject queryResult = respJson.getJSONObject("query_result");
-                    if (!queryResult.isEmpty()){
-                        JSONArray jsonArray = queryResult.getJSONObject("user").getJSONArray("open_userid");
-                        if (jsonArray!=null){
-                            Object[] objects = jsonArray.toArray();
-                            for (Object object : objects) {
-                                user.add(object);
-                            }
-                        }
-                    }else{
-                        System.err.println("==================通讯录查询请求无userid列表===================");
-                    }
-                    Boolean is_last = respJson.getBoolean("is_last");
-                    if (!is_last){
-                        itemCursor = respJson.getString("next_cursor");
-                    }
-                }else {
-                    System.err.println("===================通讯录查询请求失败=================");
-                }
-            }
-        }else {
-            System.out.println("=============token查询失败=================");
-        }
-        List<Object> nextCursor = new ArrayList<>();
-        nextCursor.add(itemCursor);
-        result.put("nextCursor",nextCursor);
-        result.put("user",user);
-        return result;
-    }
+//    private HashMap<String, List> getOpenId(String corpId,String keyword,String cursor) {
+//        HashMap<String, List> result = new HashMap<>();
+//        List<Object> user = new ArrayList<>();
+//        String itemCursor = "";
+//        String url = "https://qyapi.weixin.qq.com/cgi-bin/service/contact/search?provider_access_token=ACCESS_TOKEN";
+//        HttpHeaders headers = new HttpHeaders();
+//        RestTemplate restTemplate = new RestTemplate();
+//        MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
+//        headers.setContentType(type);
+//        headers.add("Accept", MediaType.APPLICATION_JSON.toString());
+//        String providerToken = getProviderAccessToken();
+//        if (providerToken!=null){
+//            //搜索通讯录名单
+//            url = url.replace("ACCESS_TOKEN", providerToken);
+//            JSONObject requestMap = new JSONObject();
+//            requestMap.put("auth_corpid", corpId);
+//            requestMap.put("query_word", keyword);
+//            requestMap.put("query_type", 1);
+//            requestMap.put("query_range", 1);
+//            requestMap.put("limit", 200);
+//            requestMap.put("cursor", cursor);
+//            HttpEntity<JSONObject> entity = new HttpEntity<>(requestMap, headers);
+//            ResponseEntity<String> ResponseEntity = restTemplate.postForEntity(url, entity, String.class);
+//            if (ResponseEntity.getStatusCode() == HttpStatus.OK) {
+//                String resp = ResponseEntity.getBody();
+//                JSONObject respJson = JSONObject.parseObject(resp);
+//                if (respJson.getInteger("errcode")==0){
+//                    JSONObject queryResult = respJson.getJSONObject("query_result");
+//                    if (!queryResult.isEmpty()){
+//                        JSONArray jsonArray = queryResult.getJSONObject("user").getJSONArray("open_userid");
+//                        if (jsonArray!=null){
+//                            Object[] objects = jsonArray.toArray();
+//                            for (Object object : objects) {
+//                                user.add(object);
+//                            }
+//                        }
+//                    }else{
+//                        System.err.println("==================通讯录查询请求无userid列表===================");
+//                    }
+//                    Boolean is_last = respJson.getBoolean("is_last");
+//                    if (!is_last){
+//                        itemCursor = respJson.getString("next_cursor");
+//                    }
+//                }else {
+//                    System.err.println("===================通讯录查询请求失败=================");
+//                }
+//            }
+//        }else {
+//            System.out.println("=============token查询失败=================");
+//        }
+//        List<Object> nextCursor = new ArrayList<>();
+//        nextCursor.add(itemCursor);
+//        result.put("nextCursor",nextCursor);
+//        result.put("user",user);
+//        return result;
+//    }
 
     //获取员工的列表
     @Override
-    public HttpRespMsg getEmployeeList(Integer departmentId, String keyword, Integer status, Integer roleId, Integer onlyDirect, String cursor, Integer pageIndex, Integer pageSize, HttpServletRequest request) {
+    public HttpRespMsg getEmployeeList(Integer departmentId, String keyword, Integer status, Integer roleId, Integer onlyDirect, String cursor, Integer pageIndex, Integer pageSize, HttpServletRequest request) throws Exception {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         Integer WXCompanyId = userMapper.selectById(request.getHeader("Token")).getCompanyId();
         WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", WXCompanyId));
@@ -755,7 +755,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
         //当企业开启了微信通讯录的情况下
         if (org.apache.commons.lang3.StringUtils.isNotBlank(keyword) && wxCorpInfo!=null && wxCorpInfo.getSaasSyncContact()==1 && departmentId == -1){
             System.out.println("====================开始查询通讯录名单======================");
-            HashMap<String, List> result = getOpenId(wxCorpInfo.getCorpid(), keyword, cursor);
+            HashMap<String, List> result = wxCorpInfoService.getOpenId(wxCorpInfo.getCorpid(), keyword, cursor,1,200);
             List users = result.get("user");
             if (users.size()!=0){
                 List<User> realUser = userMapper.selectList(new QueryWrapper<User>().in("corpwx_userid", users));
@@ -2436,7 +2436,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
     }
 
     @Override
-    public HttpRespMsg getSimpleActiveUserList(Integer departmentId, HttpServletRequest request,String keyword,String cursor) {
+    public HttpRespMsg getSimpleActiveUserList(Integer departmentId, HttpServletRequest request,String keyword,String cursor) throws Exception {
         HttpRespMsg msg = new HttpRespMsg();
         String token = request.getHeader("TOKEN");
         User user = userMapper.selectById(token);
@@ -2446,7 +2446,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
         WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", WXCompanyId));
         //当企业开启了微信通讯录的情况下
         if (org.apache.commons.lang3.StringUtils.isNotBlank(keyword) && wxCorpInfo!=null && wxCorpInfo.getSaasSyncContact()==1){
-            HashMap<String, List> result = getOpenId(wxCorpInfo.getCorpid(), keyword, cursor);
+            HashMap<String, List> result = wxCorpInfoService.getOpenId(wxCorpInfo.getCorpid(), keyword, cursor,1,200);
             HashMap<String, Object> msgResult = new HashMap<>();
             nextCursor = result.get("nextCursor").get(0).toString();
             List users = result.get("user");

+ 61 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/WxCorpInfoServiceImpl.java

@@ -1803,4 +1803,65 @@ public class WxCorpInfoServiceImpl extends ServiceImpl<WxCorpInfoMapper, WxCorpI
         }
         return result;
     }
+
+    //根据关键词查询微信通讯录人员的openid
+    //keyword不可为空格或空字符串,否则请求参数错误
+    @Override
+    public HashMap<String, List> getOpenId(String corpId,String keyword,String cursor,Integer queryType,Integer limit) throws Exception {
+        HashMap<String, List> result = new HashMap<>();
+        List<Object> user = new ArrayList<>();
+        String itemCursor = "";
+        String url = "https://qyapi.weixin.qq.com/cgi-bin/service/contact/search?provider_access_token=ACCESS_TOKEN";
+        HttpHeaders headers = new HttpHeaders();
+        RestTemplate restTemplate = new RestTemplate();
+        MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
+        headers.setContentType(type);
+        headers.add("Accept", MediaType.APPLICATION_JSON.toString());
+        String providerToken = getProviderAccessToken();
+        if (providerToken!=null){
+            //搜索通讯录名单
+            url = url.replace("ACCESS_TOKEN", providerToken);
+            JSONObject requestMap = new JSONObject();
+            requestMap.put("auth_corpid", corpId);
+            requestMap.put("query_word", keyword);
+            requestMap.put("query_type", queryType);
+            requestMap.put("query_range", 1);
+            requestMap.put("limit", limit);
+            requestMap.put("cursor", cursor);
+            HttpEntity<JSONObject> entity = new HttpEntity<>(requestMap, headers);
+            ResponseEntity<String> ResponseEntity = restTemplate.postForEntity(url, entity, String.class);
+            if (ResponseEntity.getStatusCode() == HttpStatus.OK) {
+                String resp = ResponseEntity.getBody();
+                JSONObject respJson = JSONObject.parseObject(resp);
+                if (respJson.getInteger("errcode")==0){
+                    JSONObject queryResult = respJson.getJSONObject("query_result");
+                    if (!queryResult.isEmpty()){
+                        JSONArray jsonArray = queryResult.getJSONObject("user").getJSONArray("open_userid");
+                        if (jsonArray!=null){
+                            Object[] objects = jsonArray.toArray();
+                            for (Object object : objects) {
+                                user.add(object);
+                            }
+                        }
+                    }else{
+                        System.err.println("==================通讯录查询请求无userid列表===================");
+                    }
+                    System.err.println(respJson.toString());
+                    Boolean is_last = respJson.getBoolean("is_last");
+                    if (!is_last){
+                        itemCursor = respJson.getString("next_cursor");
+                    }
+                }else {
+                    System.err.println("===================通讯录查询请求失败=================");
+                }
+            }
+        }else {
+            System.out.println("=============token查询失败=================");
+        }
+        List<Object> nextCursor = new ArrayList<>();
+        nextCursor.add(itemCursor);
+        result.put("nextCursor",nextCursor);
+        result.put("user",user);
+        return result;
+    }
 }