Browse Source

通讯录搜索

cs 2 năm trước cách đây
mục cha
commit
df177bb5d6

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

@@ -36,8 +36,8 @@ public class DepartmentController {
     }
 
     @RequestMapping("/listAllMemb")
-    public HttpRespMsg listAllMemb(HttpServletRequest request,String keyword) {
-        return departmentService.listAllMemb(request,keyword);
+    public HttpRespMsg listAllMemb(HttpServletRequest request,String keyword,String cursor) {
+        return departmentService.listAllMemb(request,keyword,cursor);
     }
 
     //获取我可以管辖到的人员列表,进行代填时选择的人员列表用到

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

@@ -27,13 +27,15 @@ public interface DepartmentService extends IService<Department> {
 
     HttpRespMsg getDepartmentList(HttpServletRequest request);
 
+    HttpRespMsg getDepartmentListById(User user);
+
     HttpRespMsg getDepartmentStatistics(Integer parentDeptId, String startDate, String endDate, HttpServletRequest request);
 
     HttpRespMsg getUserStatistics(String startDate, String endDate, Integer departmentId, HttpServletRequest request);
 
     HttpRespMsg exportUserStatistic(String startDate, String endDate, String userIds, HttpServletRequest request);
 
-    HttpRespMsg listAllMemb(HttpServletRequest request,String keyword);
+    HttpRespMsg listAllMemb(HttpServletRequest request,String keyword,String cursor);
 
     HttpRespMsg listMyMembs(HttpServletRequest request);
 

+ 58 - 19
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/DepartmentServiceImpl.java

@@ -368,6 +368,33 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
         return httpRespMsg;
     }
 
+    //获取某个人所在的部门列表
+    @Override
+    public HttpRespMsg getDepartmentListById(User user) {
+        HttpRespMsg httpRespMsg = new HttpRespMsg();
+        try {
+            //筛选公司下所有的部门
+            List<Department> departmentList = departmentMapper.selectList(new QueryWrapper<Department>()
+                    .eq("department_id", user.getDepartmentId()));
+            List<DepartmentOtherManager> departmentOtherManagerList = departmentOtherManagerMapper.selectList(new QueryWrapper<DepartmentOtherManager>().eq("department_id", user.getDepartmentId()));
+            //结果列表
+            List<DepartmentVO> list = new ArrayList<>();
+            List<Department> rootDepartments = departmentList.stream().filter(dept -> dept.getSuperiorId() == null).collect(Collectors.toList());
+            rootDepartments.forEach(root->{
+                DepartmentVO rootDeptVO = formatDepartmentToVO(root, departmentOtherManagerList);
+                list.add(rootDeptVO);
+                fillSubDepartmentList(departmentList, rootDeptVO, departmentOtherManagerList);
+            });
+            //返回数据
+            httpRespMsg.data = list;
+        } catch (NullPointerException e) {
+            //httpRespMsg.setError("验证失败");
+            httpRespMsg.setError(MessageUtils.message("Company.validationError"));
+            return httpRespMsg;
+        }
+        return httpRespMsg;
+    }
+
     //将部门PO转化为部门VO
     private DepartmentVO formatDepartmentToVO(Department department, List<DepartmentOtherManager> departmentOtherManagerList) {
         List<String> collect = departmentOtherManagerList.stream().filter(dm -> dm.getDepartmentId().equals(department.getDepartmentId())).map(vo -> vo.getOtherManagerId()).collect(Collectors.toList());
@@ -800,8 +827,10 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
 
     //根据关键词查询微信通讯录人员的openid以及部门
     //keyword不可为空格或空字符串,否则请求参数错误
-    private Object[] getOpenId(String corpId,String keyword) {
-        Object[] user = null;
+    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();
@@ -817,8 +846,8 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
             requestMap.put("query_word", keyword);
             requestMap.put("query_type", 0);
             requestMap.put("query_range", 1);
-            requestMap.put("limit", 200);
-            //requestMap.put("cursor", pageSize);
+            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) {
@@ -829,17 +858,28 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
                         if (!queryResult.isEmpty()){
                             JSONArray jsonArray = queryResult.getJSONObject("user").getJSONArray("open_userid");
                             if (jsonArray!=null){
-                                user = jsonArray.toArray();
+                                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");
                             }
                         }
                     }
             }
         }
-        return user;
+        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) {
+    public HttpRespMsg listAllMemb(HttpServletRequest request,String keyword,String cursor) {
         Integer companyId = userMapper.selectById(request.getHeader("TOKEN")).getCompanyId();
         HttpRespMsg msg = new HttpRespMsg();
         List<HashMap> userMapList = new ArrayList<>();
@@ -854,21 +894,17 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
         //通讯录查询人员
         WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", companyId));
         if (StringUtils.isNotBlank(keyword) && wxCorpInfo!=null && wxCorpInfo.getSaasSyncContact()==1){
-            Object[] users = getOpenId(wxCorpInfo.getCorpid(), keyword);
+            HashMap<String, List> result = getOpenId(wxCorpInfo.getCorpid(), keyword, cursor);
+            List users = result.get("user");
             if (users!=null){
                 List<User> realUser = userMapper.selectList(new QueryWrapper<User>().in("corpwx_userid", users));
                 List<DepartmentVO> temp = new ArrayList<>();
-                //重新封装list集合,把没有查询人员的部门去掉
+                //重新封装list集合
                 if (realUser.size()!=0){
-                    for (DepartmentVO departmentVO : list) {
-                        for (User user : realUser) {
-                            if (departmentVO.getId().equals(user.getDepartmentId())){
-                                temp.add(departmentVO);
-                                continue;
-                            }
-                        }
+                    for (User user : realUser) {
+
+                        temp.add(unAssignedDept);
                     }
-                    list = temp;
                     for (User u : realUser) {
                         HashMap<String, Object> user = new HashMap<String, Object>();
                         user.put("id", u.getId());
@@ -876,9 +912,12 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
                         user.put("departmentId", u.getDepartmentId());
                         userMapList.add(user);
                         fillDeptUser(list, userMapList);
-                        msg.data = list;
-                        return msg;
                     }
+                    HashMap<String, Object> data = new HashMap<>();
+                    data.put("data",list);
+                    data.put("nextCursor","");
+                    msg.data = data;
+                    return msg;
                 }
             }
             ArrayList<Object> emptyList = new ArrayList<>();

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

@@ -470,12 +470,10 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
 
     //根据关键词查询微信通讯录人员的openid
     //keyword不可为空格或空字符串,否则请求参数错误
-    private HashMap<String, Object> getOpenId(String corpId,String keyword,String cursor) {
-        HashMap<String, Object> result = new HashMap<>();
-        Object[] user = null;
-        String nextCursor = "";
-        result.put("user",user);
-        result.put("nextCursor",nextCursor);
+    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();
@@ -503,16 +501,17 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                     if (!queryResult.isEmpty()){
                         JSONArray jsonArray = queryResult.getJSONObject("user").getJSONArray("open_userid");
                         if (jsonArray!=null){
-                            user = jsonArray.toArray();
+                            Object[] objects = jsonArray.toArray();
+                            for (Object object : objects) {
+                                user.add(object);
+                            }
                         }
                     }else{
                         System.err.println("==================通讯录查询请求无userid列表===================");
                     }
-                    JSONObject isLast = respJson.getJSONObject("is_last");
-                    if (isLast!=null){
-                        if (!respJson.getBoolean("is_last")){
-                            nextCursor = respJson.getString("next_cursor");
-                        }
+                    Boolean is_last = respJson.getBoolean("is_last");
+                    if (!is_last){
+                        itemCursor = respJson.getString("next_cursor");
                     }
                 }else {
                     System.err.println("===================通讯录查询请求失败=================");
@@ -521,6 +520,10 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
         }else {
             System.out.println("=============token查询失败=================");
         }
+        List<Object> nextCursor = new ArrayList<>();
+        nextCursor.add(itemCursor);
+        result.put("nextCursor",nextCursor);
+        result.put("user",user);
         return result;
     }
 
@@ -536,12 +539,12 @@ 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, Object> result = getOpenId(wxCorpInfo.getCorpid(), keyword, cursor);
-            Object users = result.get("user");
-            if (users!=null){
+            HashMap<String, List> result = getOpenId(wxCorpInfo.getCorpid(), keyword, cursor);
+            List users = result.get("user");
+            if (users.size()!=0){
                 List<User> realUser = userMapper.selectList(new QueryWrapper<User>().in("corpwx_userid", users));
                 data.put("records",realUser);
-                data.put("nextCursor",result.get("nextCursor"));
+                data.put("nextCursor",result.get("nextCursor").get(0));
                 return httpRespMsg;
             }else {
                 System.err.println("======================user列表没有查询到数据===========================");
@@ -2148,42 +2151,35 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
         String token = request.getHeader("TOKEN");
         User user = userMapper.selectById(token);
         String nextCursor = "";
-        QueryWrapper<User> wrapper = new QueryWrapper<User>().select("id, name, phone, job_number, department_id").eq("company_id", user.getCompanyId()).eq("is_active", 1);
-        if (departmentId != null) {
-            //获取全部子部门
-            List<Department> allDeptList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", user.getCompanyId()));
-            List<Integer> deptIds = departmentService.getDeptIncludeSubDeptIds(departmentId, allDeptList);
-            wrapper.in("department_id", deptIds);
-        }
-        List<User> userList = userMapper.selectList(wrapper);
         //企业微信通讯录搜索功能
         Integer WXCompanyId = user.getCompanyId();
         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, Object> result = getOpenId(wxCorpInfo.getCorpid(), keyword, cursor);
+            HashMap<String, List> result = getOpenId(wxCorpInfo.getCorpid(), keyword, cursor);
             HashMap<String, Object> msgResult = new HashMap<>();
-            List<User> retUser = new ArrayList<>();
-            nextCursor = result.get("nextCursor").toString();
-            Object users = result.get("user");
-            msgResult.put("retUser",retUser);
+            nextCursor = result.get("nextCursor").get(0).toString();
+            List users = result.get("user");
             msgResult.put("nextCursor",nextCursor);
-            msg.data = result;
+            msg.data = msgResult;
             if (users!=null){
                 List<User> realUser = userMapper.selectList(new QueryWrapper<User>().in("corpwx_userid", users));
-                for (User item : userList) {
-                    for (User realItem : realUser) {
-                        if (item.getId().equals(realItem.getId())){
-                            retUser.add(realItem);
-                            continue;
-                        }
-                    }
-                }
+                msgResult.put("retUser",realUser);
                 return msg;
             }else {
+                ArrayList<User> nullUser = new ArrayList<>();
+                msgResult.put("retUser",nullUser);
                 return msg;
             }
         }else {
+            QueryWrapper<User> wrapper = new QueryWrapper<User>().select("id, name, phone, job_number, department_id").eq("company_id", user.getCompanyId()).eq("is_active", 1);
+            if (departmentId != null) {
+                //获取全部子部门
+                List<Department> allDeptList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", user.getCompanyId()));
+                List<Integer> deptIds = departmentService.getDeptIncludeSubDeptIds(departmentId, allDeptList);
+                wrapper.in("department_id", deptIds);
+            }
+            List<User> userList = userMapper.selectList(wrapper);
             msg.data = userList;
             return msg;
         }