From 599b48337d19891fabf092a25740120da16aca34 Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Mon, 24 Dec 2018 15:46:04 +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=BC=80=E6=94=BE=E5=B9=B3=E5=8F=B0][=E6=96=B0=E5=A2=9E]:?= =?UTF-8?q?=E6=8E=88=E6=9D=83=E4=BF=9D=E5=AD=98=E5=8F=8A=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/WechatApiController.java | 12 +++---- .../controller/WechatCalllbackController.java | 35 +++++++++++++++++-- 2 files changed, 39 insertions(+), 8 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/WechatApiController.java b/mallinkAdmin/src/main/java/com/iformall/controller/WechatApiController.java index 9009d4584..65c157a4f 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/WechatApiController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/WechatApiController.java @@ -31,10 +31,10 @@ import java.io.IOException; public class WechatApiController { private final Logger logger = LoggerFactory.getLogger(getClass()); @Autowired - private WxOpenService wxOpenService; + private WxOpenService openService; @Autowired - private WxAuthorizerInfoService wxAuthorizerInfoService; + private WxAuthorizerInfoService authorizerInfoService; @GetMapping("/goto_auth_url_show") @ResponseBody @@ -47,7 +47,7 @@ public class WechatApiController { String host = request.getHeader("host"); String url = "https://" + host + "/api/wtauth/jump"; try { - url = wxOpenService.getWxOpenComponentService().getPreAuthUrl(url); + url = openService.getWxOpenComponentService().getPreAuthUrl(url); response.sendRedirect(url); } catch (WxErrorException | IOException e) { logger.error("gotoPreAuthUrl", e); @@ -59,12 +59,12 @@ public class WechatApiController { @ResponseBody public WxOpenQueryAuthResult jump(@RequestParam("auth_code") String authorizationCode) { try { - WxOpenQueryAuthResult queryAuthResult = wxOpenService.getWxOpenComponentService().getQueryAuth(authorizationCode); + WxOpenQueryAuthResult queryAuthResult = openService.getWxOpenComponentService().getQueryAuth(authorizationCode); logger.info("getQueryAuth", queryAuthResult); - WxOpenAuthorizerInfoResult openAuthorizerInfoResult = wxOpenService.getWxOpenComponentService().getAuthorizerInfo( + WxOpenAuthorizerInfoResult openAuthorizerInfoResult = openService.getWxOpenComponentService().getAuthorizerInfo( queryAuthResult.getAuthorizationInfo().getAuthorizerAppid()); // save auth info - wxAuthorizerInfoService.saveOrUpdate(new WxAuthorizerInfo(){ + authorizerInfoService.saveOrUpdate(new WxAuthorizerInfo(){ { setAuthorizerAppid(openAuthorizerInfoResult.getAuthorizationInfo().getAuthorizerAppid()); setAlias(openAuthorizerInfoResult.getAuthorizerInfo().getAlias()); diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/WechatCalllbackController.java b/mallinkAdmin/src/main/java/com/iformall/controller/WechatCalllbackController.java index f1a1804d3..4a1f96561 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/WechatCalllbackController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/WechatCalllbackController.java @@ -1,7 +1,10 @@ package com.iformall.controller; +import com.iformall.domain.po.WxAuthorizerInfo; import com.iformall.domain.po.WxComponentVerifyTicket; import com.iformall.enums.EnumWxAuthorizationInfoType; +import com.iformall.enums.EnumWxAuthorizationStatus; +import com.iformall.service.WxAuthorizerInfoService; import com.iformall.service.WxComponentVerifyTicketService; import com.iformall.service.wechat.WxOpenService; import io.swagger.annotations.Api; @@ -11,6 +14,8 @@ import me.chanjar.weixin.mp.bean.kefu.WxMpKefuMessage; import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; import me.chanjar.weixin.open.bean.message.WxOpenXmlMessage; +import me.chanjar.weixin.open.bean.result.WxOpenAuthorizerInfoResult; +import me.chanjar.weixin.open.bean.result.WxOpenQueryAuthResult; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -37,6 +42,9 @@ public class WechatCalllbackController extends BaseController { @Autowired private WxComponentVerifyTicketService componentVerifyTicketService; + @Autowired + private WxAuthorizerInfoService authorizerInfoService; + @RequestMapping(value = "/notify", method = RequestMethod.POST) @ApiOperation("接收ticket回调") public Object receiveTicket(HttpServletRequest request) throws IOException { @@ -86,9 +94,32 @@ public class WechatCalllbackController extends BaseController { } else if (inMessage.getInfoType().equals(EnumWxAuthorizationInfoType.AUTHORIZED.getMessage()) || inMessage.getInfoType().equals(EnumWxAuthorizationInfoType.UPDATEAUTHORIZED.getMessage()) ) { - // TODO + try { + WxOpenQueryAuthResult queryAuthResult = wxOpenService.getWxOpenComponentService().getQueryAuth(inMessage.getAuthorizationCode()); + logger.info("getQueryAuth", queryAuthResult); + + WxOpenAuthorizerInfoResult openAuthorizerInfoResult = wxOpenService.getWxOpenComponentService().getAuthorizerInfo( + queryAuthResult.getAuthorizationInfo().getAuthorizerAppid()); + // save auth info + authorizerInfoService.saveOrUpdate(new WxAuthorizerInfo(){ + { + setAuthorizerAppid(openAuthorizerInfoResult.getAuthorizationInfo().getAuthorizerAppid()); + setAlias(openAuthorizerInfoResult.getAuthorizerInfo().getAlias()); + setHeadImg(openAuthorizerInfoResult.getAuthorizerInfo().getHeadImg()); + setQrcodeUrl(openAuthorizerInfoResult.getAuthorizerInfo().getQrcodeUrl()); + setAuthorizationStatus(EnumWxAuthorizationStatus.AUTHORIZED.getCode()); + } + }); + } catch (WxErrorException e) { + logger.error(e.getMessage()); + } } else if (inMessage.getInfoType().equals(EnumWxAuthorizationInfoType.AUTHORIZED.getMessage())) { - // TODO + authorizerInfoService.saveOrUpdate(new WxAuthorizerInfo(){ + { + setAuthorizerAppid(inMessage.getAuthorizerAppid()); + setAuthorizationStatus(EnumWxAuthorizationStatus.UNAUTHORIZED.getCode()); + } + }); } try { String out = wxOpenService.getWxOpenComponentService().route(inMessage);