From 0de8911009bf0d583f371c18c74f0c9f8dbf399b Mon Sep 17 00:00:00 2001 From: xiang2lin <251481237@qq.com> Date: Wed, 28 Aug 2024 10:59:56 +0800 Subject: [PATCH] =?UTF-8?q?=E9=92=89=E9=92=89=E5=85=8D=E7=99=BB=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=202024=E5=B9=B48=E6=9C=8828=E6=97=A510:59:51?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controler/EntranceController.java | 46 +++++++++++++++++-- 1 file changed, 41 insertions(+), 5 deletions(-) diff --git a/webapp/src/main/java/com/hzya/frame/webapp/entrance/controler/EntranceController.java b/webapp/src/main/java/com/hzya/frame/webapp/entrance/controler/EntranceController.java index d65fd4f6..c5f29b7e 100644 --- a/webapp/src/main/java/com/hzya/frame/webapp/entrance/controler/EntranceController.java +++ b/webapp/src/main/java/com/hzya/frame/webapp/entrance/controler/EntranceController.java @@ -2,7 +2,12 @@ package com.hzya.frame.webapp.entrance.controler; import cn.hutool.extra.servlet.ServletUtil; import com.alibaba.fastjson.JSON; +import com.dingtalk.api.DefaultDingTalkClient; +import com.dingtalk.api.DingTalkClient; +import com.dingtalk.api.request.OapiUserGetuserinfoRequest; +import com.dingtalk.api.response.OapiUserGetuserinfoResponse; import com.hzya.frame.bip.v3.v2207.service.IBipSsoService; +import com.hzya.frame.dingtalk.util.DingTalkAccessToken; import com.hzya.frame.sysnew.application.service.ISysApplicationService; import com.hzya.frame.sys.entity.EsbReturnEntity; import com.hzya.frame.sys.file.download.entity.FileDownloadEntity; @@ -13,6 +18,7 @@ import com.hzya.frame.web.entity.BaseResult; import com.hzya.frame.web.entity.JsonResultEntity; import com.hzya.frame.web.exception.BaseSystemException; import com.hzya.frame.webapp.entrance.service.IEntranceService; +import com.taobao.api.ApiException; import org.apache.commons.io.FileUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -23,11 +29,7 @@ import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.bind.annotation.RestControllerAdvice; +import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; @@ -37,6 +39,8 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.nio.charset.StandardCharsets; +import java.util.HashMap; +import java.util.Map; /** * @Content程序唯一入口controller @@ -197,4 +201,36 @@ public class EntranceController { // logger.info("servletResponse"+JSON.toJSONString(servletResponse)); return BaseResult.getSuccessMessageEntity("调用成功"+oldbodys); } + + /** + * 免登 + * 钉钉通过免登码获取userid + * @param requestAuthCode + * @return + * ServiceResult + * 2020-11-3 + */ + @RequestMapping(value = "/ddLogin", method = RequestMethod.GET) + public JsonResultEntity ddLogin (@RequestParam("code") String requestAuthCode) { + logger.info("dingTalk免登码:{}",requestAuthCode); + // 获取用户信息 + DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/user/getuserinfo"); + OapiUserGetuserinfoRequest request = new OapiUserGetuserinfoRequest(); + request.setCode(requestAuthCode); + request.setHttpMethod("GET"); + OapiUserGetuserinfoResponse response; + try { + response = client.execute(request, DingTalkAccessToken.getAccessToken()); + } catch (Exception e) { + e.printStackTrace(); + logger.error("dd免登失败:{}",e); + return BaseResult.getFailureMessageEntity("失败"); + } + // 查询得到当前用户的userId + // 获得到userId之后应用应该处理应用自身的登录会话管理(session),避免后续的业务交互(前端到应用服务端)每次都要重新获取用户身份,提升用户体验 + String userId = response.getUserid(); + Map returnMap = new HashMap(); + returnMap.put("userId", userId); + return BaseResult.getSuccessMessageEntity("成功",returnMap); + } }