From 483f4dff7655b691b668b1651a2ce725aa2899f1 Mon Sep 17 00:00:00 2001 From: zxc <954985706@qq.com> Date: Tue, 21 Jul 2020 14:48:55 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E7=AC=AC=E4=B8=89=E6=96=B9?= =?UTF-8?q?=E5=B9=B3=E5=8F=B0-auth=5Fcode=E4=BF=9D=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/form/AuthCodeAndTimeFromDTO.java | 30 +++++++++++++++++++ .../controller/AuthRedirectController.java | 14 ++++----- .../service/ComponentVerifyTicketService.java | 6 +++- .../impl/AppLetAuthorizationServiceImpl.java | 2 +- .../ComponentVerifyTicketServiceImpl.java | 22 +++++--------- .../wxapi/constant/WxMaCodeConstant.java | 2 +- 6 files changed, 51 insertions(+), 25 deletions(-) create mode 100644 epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/AuthCodeAndTimeFromDTO.java diff --git a/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/AuthCodeAndTimeFromDTO.java b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/AuthCodeAndTimeFromDTO.java new file mode 100644 index 0000000000..b42181fa63 --- /dev/null +++ b/epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/AuthCodeAndTimeFromDTO.java @@ -0,0 +1,30 @@ +package com.epmet.dto.form; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Author zxc + * @CreateTime 2020/7/21 14:36 + */ +@Data +public class AuthCodeAndTimeFromDTO implements Serializable { + + private static final long serialVersionUID = 7149257227563083044L; + + /** + * 授权码 【auth_code】 + */ + private String authCode; + + /** + * 过期时间 + */ + private String expiresIn; + + /** + * 客户端类型: resi:居民端,work:工作端 + */ + private String clientType; +} diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/AuthRedirectController.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/AuthRedirectController.java index cb4f5ecfe7..72e1330724 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/AuthRedirectController.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/AuthRedirectController.java @@ -1,12 +1,12 @@ package com.epmet.controller; +import com.epmet.commons.tools.annotation.LoginUser; +import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; +import com.epmet.dto.form.AuthCodeAndTimeFromDTO; import com.epmet.service.ComponentVerifyTicketService; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -28,9 +28,9 @@ public class AuthRedirectController { * @param * @author zxc */ - @GetMapping("redirect/{customerId}/{clientType}") - public Result redirectUri(HttpServletRequest request, HttpServletResponse response, @PathVariable("customerId")String customerId, @PathVariable("clientType")String clientType) throws IOException { - componentVerifyTicketService.redirectUri(request,response,customerId,clientType); + @PostMapping("redirect") + public Result redirectUri(@LoginUser TokenDto tokenDto, @RequestBody AuthCodeAndTimeFromDTO fromDTO){ + componentVerifyTicketService.redirectUri(tokenDto,fromDTO); return new Result(); } diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/ComponentVerifyTicketService.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/ComponentVerifyTicketService.java index ff1b32584a..28cfae2fde 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/ComponentVerifyTicketService.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/ComponentVerifyTicketService.java @@ -1,5 +1,9 @@ package com.epmet.service; +import com.epmet.commons.tools.security.dto.TokenDto; +import com.epmet.dto.form.AuthCodeAndTimeFromDTO; +import org.springframework.web.bind.annotation.RequestBody; + import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @@ -42,6 +46,6 @@ public interface ComponentVerifyTicketService { * @param * @author zxc */ - void redirectUri(HttpServletRequest request, HttpServletResponse response,String customerId, String clientType) throws IOException; + void redirectUri(TokenDto tokenDto, @RequestBody AuthCodeAndTimeFromDTO fromDTO); } diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/AppLetAuthorizationServiceImpl.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/AppLetAuthorizationServiceImpl.java index 48e54936e2..5140812023 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/AppLetAuthorizationServiceImpl.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/AppLetAuthorizationServiceImpl.java @@ -40,7 +40,7 @@ public class AppLetAuthorizationServiceImpl implements AppLetAuthorizationServic //获取预授权码 String preAuthCode = componentVerifyTicketService.preAuthCode(); // String redirectUrl = String.format(WxMaCodeConstant.API_RETURN_REDIRECT_URL, customerId,formDTO.getClientType()); - String redirectUrl = WxMaCodeConstant.WEB_URL; + String redirectUrl = WxMaCodeConstant.WEB_URL + formDTO.getClientType(); String authUrl = String.format(WxMaCodeConstant.API_AUTH_REGISTER_URL, componentAppId, preAuthCode, redirectUrl); result.setUrl(authUrl); return result; diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/ComponentVerifyTicketServiceImpl.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/ComponentVerifyTicketServiceImpl.java index 479496b0af..dc71a4fff9 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/ComponentVerifyTicketServiceImpl.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/ComponentVerifyTicketServiceImpl.java @@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONObject; import com.alibaba.nacos.client.config.utils.IOUtils; import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.exception.RenException; +import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.HttpClientManager; import com.epmet.constant.ModuleConstant; import com.epmet.constant.ThirdRedisKeyConstant; @@ -27,6 +28,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.RequestBody; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -367,38 +369,28 @@ public class ComponentVerifyTicketServiceImpl implements ComponentVerifyTicketSe */ @Transactional(rollbackFor = Exception.class) @Override - public void redirectUri(HttpServletRequest request, HttpServletResponse response,String customerId, String client) throws IOException{ + public void redirectUri(TokenDto tokenDto, @RequestBody AuthCodeAndTimeFromDTO authCodeAndTime){ log.info("开始执行回调URL"); - try { - request.setCharacterEncoding(ModuleConstant.UTF8); - response.setCharacterEncoding(ModuleConstant.UTF8); - } catch (UnsupportedEncodingException e) { - e.printStackTrace(); - } - /*String customerId = request.getParameter(ModuleConstant.CUSTOMER_ID); - String client = request.getParameter(ModuleConstant.CLIENT);*/ - String authCode = request.getParameter(ModuleConstant.AUTH_CODE); - String expiresIn = request.getParameter(ModuleConstant.EXPIRES_IN); + String authCode = authCodeAndTime.getAuthCode(); + String client = authCodeAndTime.getClientType(); + String expiresIn = authCodeAndTime.getExpiresIn(); + String customerId = tokenDto.getCustomerId(); Date expiresInTime = this.countExpirationTime(expiresIn); if (StringUtils.isBlank(customerId)||StringUtils.isBlank(client)||StringUtils.isBlank(authCode)||StringUtils.isBlank(expiresIn)){ log.info("客户ID = "+customerId+", 客户端类型为 = "+client+", 授权码为 = "+authCode+", 有效期 = "+expiresIn); } -// AuthorizationInfoResultDTO authorizationInfo = this.authInfoByAuthCode(authCode, customerId,client); //authCode存数据库 AuthCodeFormDTO formDTO = new AuthCodeFormDTO(); formDTO.setAuthCode(authCode); formDTO.setExpiresInTime(expiresInTime); formDTO.setClientType(client); //授权方AppId -// formDTO.setAuthAppId(authorizationInfo.getAuthorizer_appid()); formDTO.setCustomerId(customerId); log.info(formDTO.toString()); -// this.updateCustomerMpAppIdAndCreateOpenPlatform(customerId,authorizationInfo.getAuthorizer_appid(),client); authCodeDao.insertRedirectAuthCode(formDTO); //authCode存缓存 redisThird.setAuthCode(formDTO); log.info("回调结束"); -// response.sendRedirect(WxMaCodeConstant.WEB_URL); } /** diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/constant/WxMaCodeConstant.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/constant/WxMaCodeConstant.java index c7e762e691..43da294db4 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/constant/WxMaCodeConstant.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/constant/WxMaCodeConstant.java @@ -33,7 +33,7 @@ public interface WxMaCodeConstant { /** * 前端地址 【授权之后的跳转的地址】 */ - String WEB_URL = "https://epmet-cloud.elinkservice.cn/third/mpweb/page/#/info"; + String WEB_URL = "https://epmet-cloud.elinkservice.cn/third/mpweb/page/#/info?clientType="; /** * 授权注册页面扫码授权