Browse Source

feature1.0.0:完善img服务

master
penny 4 years ago
parent
commit
fa646de7c0
  1. 2
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/constants/RedisKeyConstant.java
  2. 18
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/TiktokUserServiceImpl.java

2
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:";
} }

18
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/TiktokUserServiceImpl.java

@ -166,8 +166,12 @@ public class TiktokUserServiceImpl implements TiktokUserService {
* @return - * @return -
*/ */
private TiktokSessionInfoVo getSessionInfo(String code) { private TiktokSessionInfoVo getSessionInfo(String code) {
String url = tiktokConfig.getSessionInfoUrl()+"?appid=" + tiktokConfig.getAppId() + "&secret=" + tiktokConfig.getSecret() + "&js_code=" + code + "&grant_type=authorization_code"; Map<String,String> map = new HashMap<>();
JSONObject sessionInfo = JSONObject.parseObject(restTemplate.getForObject(url, String.class)); 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)){ if(!sessionInfo.getString("err_no").equals(TiktokConstant.SUCCESS)){
log.error("抖音授权session接口调用失败,错误状态码为:【{}】,错误信息为:【{}】",sessionInfo.getString("err_no"),sessionInfo.getString("err_tips")); log.error("抖音授权session接口调用失败,错误状态码为:【{}】,错误信息为:【{}】",sessionInfo.getString("err_no"),sessionInfo.getString("err_tips"));
throw new ServiceException("抖音授权session接口调用失败!",TiktokConstant.TIKTOK_AUTH_ERROR); throw new ServiceException("抖音授权session接口调用失败!",TiktokConstant.TIKTOK_AUTH_ERROR);
@ -240,14 +244,14 @@ public class TiktokUserServiceImpl implements TiktokUserService {
TiktokSessionInfoVo sessionInfo = this.getSessionInfo(dto.getCode()); TiktokSessionInfoVo sessionInfo = this.getSessionInfo(dto.getCode());
//检查数据库中是否存在该openId,存在则直接设置会话状态登录;不存在则新增 //检查数据库中是否存在该openId,存在则直接设置会话状态登录;不存在则新增
LambdaQueryWrapper<TiktokUser> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<TiktokUser> 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); TiktokUser tiktokUser = tiktokUserMapper.selectOne(wrapper);
if(tiktokUser == null){ if(tiktokUser == null){
//新用户,新增 //新用户,新增
tiktokUser = this.saveUserInfo(sessionInfo.getOpenId(), sessionInfo.getSessionKey(), dto.getEncryptedData(), dto.getIv()); 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)){ if(redisService.hasKey(redisKey)){
redisService.deleteObject(redisKey); redisService.deleteObject(redisKey);
@ -255,11 +259,13 @@ public class TiktokUserServiceImpl implements TiktokUserService {
StringBuffer sb = new StringBuffer(); StringBuffer sb = new StringBuffer();
String randomId = IdUtils.fastSimpleUUID(); String randomId = IdUtils.fastSimpleUUID();
sb.append(randomId).append("#").append(sessionInfo.getOpenId()); sb.append(randomId).append("#").append(sessionInfo.getOpenId());
//设置登录会话
redisService.setCacheObject(redisKey,sb.toString(),30L, TimeUnit.DAYS);
Map<String, Object> map = new HashMap<>(2); Map<String, Object> map = new HashMap<>(2);
map.put("token", sb.toString()); map.put("token", sb.toString());
map.put("sessionKey", sessionInfo.getSessionKey());
map.put("userInfo",tiktokUser); map.put("userInfo",tiktokUser);
//设置登录会话
redisService.setCacheObject(redisKey,map,30L, TimeUnit.DAYS);
return map; return map;
} }

Loading…
Cancel
Save