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

20
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<String,String> 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<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);
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<String, Object> 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());

Loading…
Cancel
Save