فهرست منبع

企业微信账号继承

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

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

@@ -49,7 +49,7 @@ public class TimeAutoExcludeController {
         }
         //新增
         //先删除掉已设置过的部门
-        timeAutoExcludeService.removeByIds(item.getDepartmentId());
+        timeAutoExcludeService.remove(new QueryWrapper<TimeAutoExclude>().in("d_id",item.getDepartmentId()));
         List<Department> deptList = departmentMapper.selectList(new QueryWrapper<Department>().in("department_id", item.getDepartmentId()));
         WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", user.getCompanyId()));
         ArrayList<TimeAutoExclude> timeAutoExcludes = new ArrayList<>();

+ 7 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/WxCorpInfoController.java

@@ -10,12 +10,15 @@ import com.management.platform.mapper.UserMapper;
 import com.management.platform.service.WxCorpInfoService;
 import com.management.platform.task.TimingTask;
 import com.management.platform.util.HttpRespMsg;
+import org.springframework.http.HttpRequest;
 import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.RequestMapping;
 
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
 
 /**
  * <p>
@@ -83,5 +86,9 @@ public class WxCorpInfoController {
         timingTask.synWxLeave();
     }
 
+    @RequestMapping("/batchTransferLicense")
+    public HttpRespMsg batchTransferLicense(HttpServletRequest request,String handoverId,String takeoverId) throws Exception {
+        return wxCorpInfoService.batchTransferLicense(request,handoverId,takeoverId);
+    }
 }
 

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

@@ -7,9 +7,11 @@ import com.management.platform.entity.User;
 import com.management.platform.entity.WxCorpInfo;
 import com.management.platform.util.HttpRespMsg;
 
+import javax.servlet.http.HttpServletRequest;
 import java.time.LocalDateTime;
 import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -67,4 +69,8 @@ public interface WxCorpInfoService extends IService<WxCorpInfo> {
     HashMap<String, List> getOpenId(String corpId, String keyword, String cursor,Integer queryType,Integer limit) throws Exception;
 
     String operateMeeting(String userIds, String title, String description, String startTime, long duration, WxCorpInfo wxCorpInfo, String meetingType, String meetingId) throws Exception;
+
+    List<Map<String, String>> getActiveInfoByUser(HttpServletRequest request) throws Exception;
+
+    HttpRespMsg batchTransferLicense(HttpServletRequest request,String handoverId, String takeoverId) throws Exception;
 }

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

@@ -805,6 +805,11 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
     @Override
     public HttpRespMsg getEmployeeList(Integer departmentId,Integer matchingType,String keyword, Integer status, Integer roleId, Integer onlyDirect, String cursor, Integer pageIndex, Integer pageSize, HttpServletRequest request) throws Exception {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
+        Boolean flag = false;
+        if (status != null && status.equals(2)){
+            status = 0;
+            flag = true;
+        }
         Integer WXCompanyId = userMapper.selectById(request.getHeader("Token")).getCompanyId();
         WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", WXCompanyId));
         HashMap<String, Object> data = new HashMap<>();
@@ -908,6 +913,19 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                         user.put("createTime", dtf.format(time));
                     }
                 }
+                if (wxCorpInfo!=null && wxCorpInfo.getSaasSyncContact()==1 && flag){
+                    List<Map<String, Object>> active = new ArrayList<>();
+                    List<Map<String, String>> activeInfoByUser = wxCorpInfoService.getActiveInfoByUser(request);
+                    for (Map<String, Object> map : list) {
+                        for (Map<String, String> item : activeInfoByUser) {
+                            if (map.get("id").toString().equals(item.get("id"))){
+                                map.put("activeInfoByUser",1);
+                                active.add(map);
+                            }
+                        }
+                    }
+                    list = active;
+                }
                 resultMap.put("records", list);
                 resultMap.put("total", total);
                 resultMap.put("nextCursor", "");

+ 90 - 5
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/WxCorpInfoServiceImpl.java

@@ -4,8 +4,6 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.google.gson.JsonArray;
-import com.google.gson.JsonObject;
 import com.management.platform.controller.WeiXinCorpController;
 import com.management.platform.entity.*;
 import com.management.platform.mapper.*;
@@ -13,9 +11,6 @@ import com.management.platform.service.WxCorpInfoService;
 import com.management.platform.util.*;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.http.client.utils.HttpClientUtils;
-import org.apache.tomcat.jni.Local;
-import org.json.HTTP;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.core.io.FileSystemResource;
@@ -31,6 +26,7 @@ import org.springframework.web.util.UriComponentsBuilder;
 import sun.net.www.http.HttpClient;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
 import java.io.*;
 import java.lang.reflect.Array;
 import java.math.BigDecimal;
@@ -2052,4 +2048,93 @@ public class WxCorpInfoServiceImpl extends ServiceImpl<WxCorpInfoMapper, WxCorpI
         }
         return result;
     }
+
+    /**
+     * 查询成员的激活状态
+     * @param
+     * @return
+     */
+    @Override
+    public List<Map<String, String>> getActiveInfoByUser(HttpServletRequest request) throws Exception {
+        List<Map<String, String>> resultList = new ArrayList<>();
+        String providerAccessToken = getProviderAccessToken();
+        String url ="https://qyapi.weixin.qq.com/cgi-bin/license/get_active_info_by_user?provider_access_token=" + providerAccessToken;
+        User user = userMapper.selectById(request.getHeader("token"));
+        Integer companyId = user.getCompanyId();
+        WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", user.getCompanyId()));
+        List<User> users = userMapper.selectList(new QueryWrapper<User>().eq("company_id", companyId).eq("is_active", 0));
+        if (users.size() != 0 && wxCorpInfo != null && wxCorpInfo.getSaasSyncContact().equals(1)){
+            //发送请求
+            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());
+            for (User item : users) {
+                JSONObject requestMap = new JSONObject();
+                requestMap.put("corpid", wxCorpInfo.getCorpid());
+                requestMap.put("userid", item.getCorpwxUserid());
+                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){
+                        Integer status = respJson.getInteger("active_status");
+                        if (status.equals(1)){
+                            HashMap<String, String> map = new HashMap<>();
+                            map.put("id",item.getId());
+                            map.put("corpid",item.getCorpwxUserid());
+                            resultList.add(map);
+                        }
+                    }
+                }
+            }
+        }
+        return resultList;
+    }
+
+    /**
+     * 企业微信账号继承
+     * @param handoverId
+     * @param takeoverId
+     * @return
+     */
+    @Override
+    public HttpRespMsg batchTransferLicense(HttpServletRequest request,String handoverId, String takeoverId) throws Exception {
+        HttpRespMsg msg = new HttpRespMsg();
+        handoverId = userMapper.selectById(handoverId).getCorpwxUserid();
+        takeoverId = userMapper.selectById(takeoverId).getCorpwxUserid();
+        msg.setError("转移失败!");
+        String providerAccessToken = getProviderAccessToken();
+        String url =" https://qyapi.weixin.qq.com/cgi-bin/license/batch_transfer_license?provider_access_token=" + providerAccessToken;
+        User user = userMapper.selectById(request.getHeader("token"));
+        WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", user.getCompanyId()));
+        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", wxCorpInfo.getCorpid());
+        ArrayList<HashMap<String, String>> list = new ArrayList<>();
+        HashMap<String, String> map = new HashMap<>();
+        map.put("handover_userid",handoverId);
+        map.put("takeover_userid",takeoverId);
+        list.add(map);
+        requestMap.put("transfer_list", map);
+
+        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);
+            System.err.println(resp);
+            if (respJson.getInteger("errcode")==0){
+                msg.msg = "转移成功";
+            }
+        }
+        return msg;
+    }
+
 }