From cc1a87944b4862384fafd80fcad109c94ac393ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=B7=E5=86=B7?= <2270033969@qq.com> Date: Sat, 11 May 2024 12:37:23 +0800 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20=E4=BC=98=E5=8C=96=20OAuth?= =?UTF-8?q?=202.0=20=E7=A7=BB=E5=8A=A8=E7=AB=AF=E7=A4=BE=E4=BA=A4=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E7=9A=84=E8=BF=87=E7=A8=8B=E4=B8=AD=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=E5=A4=84=E7=90=86=EF=BC=8C=E6=8F=90=E5=8D=87=E5=81=A5=E5=A3=AE?= =?UTF-8?q?=E6=80=A7=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pigx/app/handler/MiniAppLoginHandler.java | 124 ++++++++++-------- 1 file changed, 66 insertions(+), 58 deletions(-) diff --git a/pigx-app-server/pigx-app-server-biz/src/main/java/com/pig4cloud/pigx/app/handler/MiniAppLoginHandler.java b/pigx-app-server/pigx-app-server-biz/src/main/java/com/pig4cloud/pigx/app/handler/MiniAppLoginHandler.java index 174b8b2b0..7258e4555 100644 --- a/pigx-app-server/pigx-app-server-biz/src/main/java/com/pig4cloud/pigx/app/handler/MiniAppLoginHandler.java +++ b/pigx-app-server/pigx-app-server-biz/src/main/java/com/pig4cloud/pigx/app/handler/MiniAppLoginHandler.java @@ -28,6 +28,7 @@ import com.pig4cloud.pigx.app.mapper.AppSocialDetailsMapper; import com.pig4cloud.pigx.app.service.AppUserService; import com.pig4cloud.pigx.common.core.constant.SecurityConstants; import com.pig4cloud.pigx.common.core.constant.enums.LoginTypeEnum; +import com.pig4cloud.pigx.common.core.exception.CheckedException; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -43,72 +44,79 @@ import org.springframework.stereotype.Component; @AllArgsConstructor public class MiniAppLoginHandler extends AbstractLoginHandler { - private final AppUserService appUserService; + private final AppUserService appUserService; - private final AppSocialDetailsMapper appSocialDetailsMapper; + private final AppSocialDetailsMapper appSocialDetailsMapper; - /** - * 小程序登录传入code - *

- * 通过code 调用qq 获取唯一标识 - * @param code - * @return - */ - @Override - public String identify(String code) { - AppSocialDetails condition = new AppSocialDetails(); - condition.setType(LoginTypeEnum.MINI_APP.getType()); - AppSocialDetails socialDetails = appSocialDetailsMapper.selectOne(new QueryWrapper<>(condition)); + /** + * 小程序登录传入code + *

+ * 通过code 调用qq 获取唯一标识 + * + * @param code + * @return + */ + @Override + public String identify(String code) { + AppSocialDetails condition = new AppSocialDetails(); + condition.setType(LoginTypeEnum.MINI_APP.getType()); + AppSocialDetails socialDetails = appSocialDetailsMapper.selectOne(new QueryWrapper<>(condition)); - String url = String.format(SecurityConstants.MINI_APP_AUTHORIZATION_CODE_URL, socialDetails.getAppId(), - socialDetails.getAppSecret(), code); - String result = HttpUtil.get(url); - log.debug("微信小程序响应报文:{}", result); + String url = String.format(SecurityConstants.MINI_APP_AUTHORIZATION_CODE_URL, socialDetails.getAppId(), + socialDetails.getAppSecret(), code); + String result = HttpUtil.get(url); + log.debug("微信小程序响应报文:{}", result); - Object obj = JSONUtil.parseObj(result).get("openid"); - return obj.toString(); - } + if (JSONUtil.parseObj(result).containsKey("openid")) { + return JSONUtil.parseObj(result).get("openid").toString(); + } else { + log.error("微信小程序登录失败:{}", result); + throw new CheckedException("微信小程序登录失败"); + } + } - /** - * openId 获取用户信息 - * @param openId - * @return - */ - @Override - public AppUserInfo info(String openId) { - AppUser user = appUserService.getOne(Wrappers.query().lambda().eq(AppUser::getWxOpenid, openId)); + /** + * openId 获取用户信息 + * + * @param openId + * @return + */ + @Override + public AppUserInfo info(String openId) { + AppUser user = appUserService.getOne(Wrappers.query().lambda().eq(AppUser::getWxOpenid, openId)); - if (user == null) { - log.info("微信小程序未绑定:{},创建新的用户", openId); - return createAndSaveAppUserInfo(openId); - } - return appUserService.findUserInfo(user); - } + if (user == null) { + log.info("微信小程序未绑定:{},创建新的用户", openId); + return createAndSaveAppUserInfo(openId); + } + return appUserService.findUserInfo(user); + } - /** - * 绑定逻辑 - * @param user 用户实体 - * @param identify 渠道返回唯一标识 - * @return - */ - @Override - public Boolean bind(AppUser user, String identify) { - user.setWxOpenid(identify); - appUserService.updateById(user); - return true; - } + /** + * 绑定逻辑 + * + * @param user 用户实体 + * @param identify 渠道返回唯一标识 + * @return + */ + @Override + public Boolean bind(AppUser user, String identify) { + user.setWxOpenid(identify); + appUserService.updateById(user); + return true; + } - private AppUserInfo createAndSaveAppUserInfo(String openId) { - AppUser appUser = new AppUser(); - appUser.setWxOpenid(openId); - appUser.setUsername(openId); - appUser.setCreateBy(openId); - appUser.setUpdateBy(openId); - appUserService.saveOrUpdate(appUser, Wrappers.lambdaQuery().eq(AppUser::getUsername, openId)); + private AppUserInfo createAndSaveAppUserInfo(String openId) { + AppUser appUser = new AppUser(); + appUser.setWxOpenid(openId); + appUser.setUsername(openId); + appUser.setCreateBy(openId); + appUser.setUpdateBy(openId); + appUserService.saveOrUpdate(appUser, Wrappers.lambdaQuery().eq(AppUser::getUsername, openId)); - AppUserInfo appUserDTO = new AppUserInfo(); - appUserDTO.setAppUser(appUser); - return appUserDTO; - } + AppUserInfo appUserDTO = new AppUserInfo(); + appUserDTO.setAppUser(appUser); + return appUserDTO; + } }