| | |
| | | import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; |
| | | import com.dingtalk.api.DefaultDingTalkClient; |
| | | import com.dingtalk.api.DingTalkClient; |
| | | import com.dingtalk.api.request.*; |
| | | import com.dingtalk.api.response.*; |
| | | import com.dingtalk.api.request.OapiGettokenRequest; |
| | | import com.dingtalk.api.request.OapiMessageCorpconversationAsyncsendV2Request; |
| | | import com.dingtalk.api.request.OapiUserListidRequest; |
| | | import com.dingtalk.api.request.OapiV2UserGetbymobileRequest; |
| | | import com.dingtalk.api.response.OapiGettokenResponse; |
| | | import com.dingtalk.api.response.OapiMessageCorpconversationAsyncsendV2Response; |
| | | import com.dingtalk.api.response.OapiUserListidResponse; |
| | | import com.dingtalk.api.response.OapiV2UserGetbymobileResponse; |
| | | import com.fasterxml.jackson.databind.ObjectMapper; |
| | | import com.ruoyi.common.core.domain.entity.SysUser; |
| | | import com.ruoyi.common.exception.base.BaseException; |
| | | import com.ruoyi.common.utils.StringUtils; |
| | | import com.ruoyi.common.utils.http.HttpUtils; |
| | | import com.ruoyi.project.domain.vo.DingDetpInfoVo; |
| | | import com.ruoyi.project.domain.vo.DingTalkReqVo; |
| | | import com.ruoyi.project.domain.vo.DingUserInfoVo; |
| | | import com.ruoyi.project.service.DingTalkService; |
| | | import com.ruoyi.project.utils.DingTalkProxyClient; |
| | | import com.ruoyi.system.mapper.SysUserMapper; |
| | | import com.taobao.api.ApiException; |
| | | import lombok.extern.log4j.Log4j; |
| | |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.concurrent.ConcurrentHashMap; |
| | |
| | | |
| | | @Autowired |
| | | private SysUserMapper sysUserMapper; |
| | | |
| | | @Autowired |
| | | private DingTalkProxyClient dingTalkProxyClient; |
| | | |
| | | @Override |
| | | public Boolean sendNotification(DingTalkReqVo dingTalkReqVo) { |
| | |
| | | */ |
| | | public Map<String, Object> noLogin(String authCode) { |
| | | try { |
| | | String urlString = "https://oapi.dingtalk.com/topapi/v2/user/getuserinfo"; |
| | | String params = "access_token=" + getAccessToken() + "&code=" + authCode; |
| | | String result = HttpUtils.sendPost(urlString, params); |
| | | String params = "access_token=" + dingTalkProxyClient.getAccessToken() + "&code=" + authCode; |
| | | String result = HttpUtils.sendPost("https://oapi.dingtalk.com/topapi/v2/user/getuserinfo", params); |
| | | ObjectMapper objectMapper = new ObjectMapper(); |
| | | Map<String, Object> map = objectMapper.readValue(result, Map.class); |
| | | return map; |
| | |
| | | //根据传过来的部门ID,去获取该部门下的用户信息 |
| | | if (begin != 1) DingUserInfoList(deptID); |
| | | //获取子部门的dept_id |
| | | DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/v2/department/listsub"); |
| | | OapiV2DepartmentListsubRequest req = new OapiV2DepartmentListsubRequest(); |
| | | req.setDeptId(deptID); |
| | | req.setLanguage("zh_CN"); |
| | | OapiV2DepartmentListsubResponse rsp = client.execute(req, getAccessToken()); |
| | | Map<String, String> params = new HashMap<>(); |
| | | params.put("access_token", dingTalkProxyClient.getAccessToken()); |
| | | params.put("dept_id", deptID.toString()); |
| | | params.put("language", "zh_CN"); |
| | | String rspBody = dingTalkProxyClient.executeGet("/topapi/v2/department/listsub", params); |
| | | ObjectMapper objectMapper = new ObjectMapper(); |
| | | Map<String, Object> map = objectMapper.readValue(rsp.getBody(), Map.class); |
| | | Map<String, Object> map = objectMapper.readValue(rspBody, Map.class); |
| | | if (ObjectUtils.isNotEmpty(map)) { |
| | | List<Map<String, Object>> dingDetpInfoList = (List<Map<String, Object>>) map.get("result"); |
| | | if (Integer.valueOf(map.get("errcode").toString()) == 0) { |
| | |
| | | } |
| | | |
| | | public void DingUserInfoList(Long deptId) { |
| | | DingTalkClient client = null; |
| | | try { |
| | | client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/v2/user/list?access_token=" + getAccessToken()); |
| | | OapiV2UserListRequest req = new OapiV2UserListRequest(); |
| | | req.setDeptId(deptId); |
| | | req.setCursor(0L); |
| | | req.setSize(100L); |
| | | req.setLanguage("zh_CN"); |
| | | OapiV2UserListResponse rsp = client.execute(req, ""); |
| | | Map<String, String> params = new HashMap<>(); |
| | | params.put("access_token", dingTalkProxyClient.getAccessToken()); |
| | | params.put("dept_id", deptId.toString()); |
| | | params.put("cursor", "0"); |
| | | params.put("size", "100"); |
| | | params.put("language", "zh_CN"); |
| | | String rspBody = dingTalkProxyClient.executeGet("/topapi/v2/user/list", params); |
| | | //获取resp里的用户信息集合 |
| | | ObjectMapper objectMapper = new ObjectMapper(); |
| | | Map<String, Object> map = objectMapper.readValue(rsp.getBody(), Map.class); |
| | | Map<String, Object> map = objectMapper.readValue(rspBody, Map.class); |
| | | Map<String, Object> mapResult = (Map<String, Object>) map.get("result"); |
| | | List<Map<String, Object>> userInfoMapList = (List<Map<String, Object>>) mapResult.get("list"); |
| | | if (!CollectionUtils.isEmpty(userInfoMapList)) { |
| | |
| | | OapiGettokenResponse response = client.execute(request); |
| | | return response.getAccessToken(); |
| | | } |
| | | |
| | | } |