From fa646de7c0294a65b0bf73a2b7cd917e7b198318 Mon Sep 17 00:00:00 2001 From: penny <2500338766@qq.com> Date: Wed, 4 May 2022 23:19:05 +0800 Subject: [PATCH] =?UTF-8?q?feature1.0.0=EF=BC=9A=E5=AE=8C=E5=96=84img?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bnyer/img/constants/RedisKeyConstant.java | 2 +- .../service/impl/TiktokUserServiceImpl.java | 20 ++++++++++++------- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/constants/RedisKeyConstant.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/constants/RedisKeyConstant.java index 676764b..6fa729e 100644 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/constants/RedisKeyConstant.java +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/constants/RedisKeyConstant.java @@ -30,5 +30,5 @@ public class RedisKeyConstant { /** * 抖音小程序用户登录键 */ - public static final String TIKTOK_USER_LOGIN_KEY = "bnyer.titok.user:"; + public static final String TIKTOK_USER_LOGIN_KEY = "bnyer.tiktok.user:"; } diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/TiktokUserServiceImpl.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/TiktokUserServiceImpl.java index fc66f30..4f8a1d9 100644 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/TiktokUserServiceImpl.java +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/TiktokUserServiceImpl.java @@ -166,8 +166,12 @@ public class TiktokUserServiceImpl implements TiktokUserService { * @return - */ private TiktokSessionInfoVo getSessionInfo(String code) { - String url = tiktokConfig.getSessionInfoUrl()+"?appid=" + tiktokConfig.getAppId() + "&secret=" + tiktokConfig.getSecret() + "&js_code=" + code + "&grant_type=authorization_code"; - JSONObject sessionInfo = JSONObject.parseObject(restTemplate.getForObject(url, String.class)); + Map map = new HashMap<>(); + map.put("appid",tiktokConfig.getAppId()); + map.put("secret", tiktokConfig.getSecret()); + map.put("code", code); + map.put("grant_type", "client_credential"); + JSONObject sessionInfo = restTemplate.postForObject(tiktokConfig.getSessionInfoUrl(), map, JSONObject.class); if(!sessionInfo.getString("err_no").equals(TiktokConstant.SUCCESS)){ log.error("抖音授权session接口调用失败,错误状态码为:【{}】,错误信息为:【{}】",sessionInfo.getString("err_no"),sessionInfo.getString("err_tips")); throw new ServiceException("抖音授权session接口调用失败!",TiktokConstant.TIKTOK_AUTH_ERROR); @@ -240,14 +244,14 @@ public class TiktokUserServiceImpl implements TiktokUserService { TiktokSessionInfoVo sessionInfo = this.getSessionInfo(dto.getCode()); //检查数据库中是否存在该openId,存在则直接设置会话状态登录;不存在则新增 LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(sessionInfo.getOpenId() != null,TiktokUser::getTiktokCode,dto.getCode()); + wrapper.eq(sessionInfo.getOpenId() != null,TiktokUser::getTiktokCode,Sm4Util.sm4Encryption(sessionInfo.getOpenId())); TiktokUser tiktokUser = tiktokUserMapper.selectOne(wrapper); if(tiktokUser == null){ //新用户,新增 tiktokUser = this.saveUserInfo(sessionInfo.getOpenId(), sessionInfo.getSessionKey(), dto.getEncryptedData(), dto.getIv()); } //设置会话状态 - String redisKey = RedisKeyConstant.TIKTOK_USER_LOGIN_KEY+sessionInfo.getOpenId(); + String redisKey = RedisKeyConstant.TIKTOK_USER_LOGIN_KEY+Sm4Util.sm4Encryption(sessionInfo.getOpenId()); //存在该登录态则删除刷新 if(redisService.hasKey(redisKey)){ redisService.deleteObject(redisKey); @@ -255,17 +259,19 @@ public class TiktokUserServiceImpl implements TiktokUserService { StringBuffer sb = new StringBuffer(); String randomId = IdUtils.fastSimpleUUID(); sb.append(randomId).append("#").append(sessionInfo.getOpenId()); - //设置登录会话 - redisService.setCacheObject(redisKey,sb.toString(),30L, TimeUnit.DAYS); + Map map = new HashMap<>(2); map.put("token", sb.toString()); + map.put("sessionKey", sessionInfo.getSessionKey()); map.put("userInfo",tiktokUser); + //设置登录会话 + redisService.setCacheObject(redisKey,map,30L, TimeUnit.DAYS); return map; } @Override public void bindPhone(TiktokBindPhoneDto dto) { - TiktokUserPhoneInfoVo phoneInfo = this.getPhone(dto.getSessionKey(), dto.getEncryptedData(), dto.getIv()); + TiktokUserPhoneInfoVo phoneInfo = this.getPhone(dto.getSessionKey(),dto.getEncryptedData(), dto.getIv()); if(phoneInfo != null){ TiktokUser user = new TiktokUser(); user.setId(dto.getUserId());