yusm há 2 meses atrás
pai
commit
ce2f29705b

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

@@ -2582,9 +2582,11 @@ public class WeiXinCorpController {
                     return msg;
                 }else {
                     userService.saveBatch(newUserList);
-                    for (User user : newUserList) {
+                    /*for (User user : newUserList) {
                         wxCorpInfoService.getUserByCompanyIdAndTransferLicense(companyId,user.getCorpwxUserid());
-                    }
+                    }*/
+                    List<String> stringList = newUserList.stream().filter(u -> u != null && org.apache.commons.lang3.StringUtils.isNotEmpty(u.getCorpwxUserid())).map(User::getCorpwxUserid).distinct().collect(Collectors.toList());
+                    wxCorpInfoService.getUserByCompanyIdAndTransferLicenseBatch(companyId,stringList);
                 }
             }
             //姓名,部门,账号的同步更新
@@ -4064,4 +4066,29 @@ public class WeiXinCorpController {
         msg.setData(approvalInfo.toArray());
         return msg;
     }
+
+
+    @RequestMapping("/testActiveStatus")
+    public String testActiveStatus(String userid) throws Exception {
+        HttpRespMsg msg=new HttpRespMsg();
+        String providerAccessToken = wxCorpInfoService.getProviderAccessToken();
+        String url ="https://qyapi.weixin.qq.com/cgi-bin/license/get_active_info_by_user?provider_access_token=" + providerAccessToken;
+
+        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 requestMap = new JSONObject();
+        requestMap.put("corpid", "wpy9TkCAAA8fe_X3XjoM1Ba_2TmkccDA");
+
+        requestMap.put("userid", userid);
+        HttpEntity<JSONObject> entity = new HttpEntity<>(requestMap, headers);
+        ResponseEntity<String> ResponseEntity = restTemplate.postForEntity(url, entity, String.class);
+
+        String resp = ResponseEntity.getBody();
+        JSONObject respJson = JSONObject.parseObject(resp);
+        return respJson.toString();
+
+    }
 }

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

@@ -92,4 +92,6 @@ public interface WxCorpInfoService extends IService<WxCorpInfo> {
 
 
     void getUserByCompanyIdAndTransferLicense(Integer companyId,String takeoverId) throws Exception;
+
+    void getUserByCompanyIdAndTransferLicenseBatch(Integer companyId,List<String> takeoverIdList) throws Exception;
 }

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

@@ -2552,6 +2552,83 @@ public class WxCorpInfoServiceImpl extends ServiceImpl<WxCorpInfoMapper, WxCorpI
 
     }
 
+    @Override
+    @Async("taskExecutor")
+    public void getUserByCompanyIdAndTransferLicenseBatch(Integer companyId, List<String> takeoverIdList) throws Exception {
+        if (takeoverIdList.isEmpty()) {
+            return;
+        }
+
+        String providerAccessToken = getProviderAccessToken();
+        String url = "https://qyapi.weixin.qq.com/cgi-bin/license/get_active_info_by_user?provider_access_token=" + providerAccessToken;
+
+        WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", companyId));
+        List<User> users = userMapper.selectList(new QueryWrapper<User>().eq("company_id", companyId).eq("is_active", 0));
+
+        // 被转移的人
+        if (!users.isEmpty() && wxCorpInfo != null && wxCorpInfo.getSaasSyncContact().equals(1)) {
+            HttpHeaders headers = new HttpHeaders();
+            RestTemplate restTemplate = new RestTemplate();
+            headers.setContentType(MediaType.APPLICATION_JSON);
+            headers.add("Accept", MediaType.APPLICATION_JSON.toString());
+
+            for (String takeoverId : takeoverIdList) {
+                for (Iterator<User> iterator = users.iterator(); iterator.hasNext(); ) {
+                    User item = iterator.next();
+                    JSONObject requestMap = new JSONObject();
+                    requestMap.put("corpid", wxCorpInfo.getCorpid());
+                    requestMap.put("userid", item.getCorpwxUserid());
+                    HttpEntity<JSONObject> entity = new HttpEntity<>(requestMap, headers);
+
+                    try {
+                        ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, entity, String.class);
+                        if (responseEntity.getStatusCode() == HttpStatus.OK) {
+                            String resp = responseEntity.getBody();
+                            if (resp != null) {
+                                JSONObject respJson = JSONObject.parseObject(resp);
+                                if (respJson.getInteger("errcode") == 0) {
+                                    Integer status = respJson.getInteger("active_status");
+                                    if (status.equals(1)) {
+                                        String handoverId = item.getCorpwxUserid(); // 要转移的成员
+                                        String url1 = "https://qyapi.weixin.qq.com/cgi-bin/license/batch_transfer_license?provider_access_token=" + providerAccessToken;
+
+                                        JSONObject requestMap1 = new JSONObject();
+                                        requestMap1.put("corpid", wxCorpInfo.getCorpid());
+                                        ArrayList<HashMap<String, String>> list1 = new ArrayList<>();
+                                        HashMap<String, String> map1 = new HashMap<>();
+                                        map1.put("handover_userid", handoverId);
+                                        map1.put("takeover_userid", takeoverId);
+                                        list1.add(map1);
+                                        requestMap1.put("transfer_list", list1);
+
+                                        HttpEntity<JSONObject> entity1 = new HttpEntity<>(requestMap1, headers);
+                                        ResponseEntity<String> responseEntity1 = restTemplate.postForEntity(url1, entity1, String.class);
+                                        if (responseEntity1.getStatusCode() == HttpStatus.OK) {
+                                            String body = responseEntity1.getBody();
+                                            if (body != null) {
+                                                JSONObject respJson1 = JSONObject.parseObject(body);
+                                                if (respJson1.getInteger("errcode") == 0) {
+                                                    log.info("转移成功");
+                                                    iterator.remove(); // 直接移除已转移的用户
+                                                    break; // 退出内层循环,避免对同一用户重复请求
+                                                } else {
+                                                    log.info("转移失败:" + respJson1.toJSONString());
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    }
+                    catch (Exception e) {
+                        log.error("请求失败", e);
+                    }
+                }
+            }
+        }
+    }
+
     /**
      * 企业微信账号继承
      * @param handoverId