package cn.mb.cloud.auth.security.service.impl;
|
|
import cn.mb.cloud.auth.security.entity.SysSocialDetails;
|
import cn.mb.cloud.auth.security.entity.SysUser;
|
import cn.mb.cloud.auth.security.mapper.SysSocialDetailsMapper;
|
import cn.mb.cloud.auth.security.mapper.SysUserMapper;
|
import cn.mb.cloud.auth.security.service.SysSocialDetailsService;
|
import cn.mb.cloud.auth.security.social.handler.LoginHandler;
|
import cn.mb.cloud.common.api.vo.UserVO;
|
import cn.mb.cloud.common.core.constant.CacheConstants;
|
import cn.mb.cloud.common.core.constant.enums.LoginTypeEnum;
|
import com.baomidou.mybatisplus.core.toolkit.StringPool;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import lombok.AllArgsConstructor;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.cache.CacheManager;
|
import org.springframework.stereotype.Service;
|
|
import java.util.Map;
|
|
/**
|
* @author jason
|
* @date 2018年08月16日
|
*/
|
@Slf4j
|
@AllArgsConstructor
|
@Service("sysSocialDetailsService")
|
public class SysSocialDetailsServiceImpl extends ServiceImpl<SysSocialDetailsMapper, SysSocialDetails>
|
implements SysSocialDetailsService {
|
|
private final Map<String, LoginHandler> loginHandlerMap;
|
|
private final CacheManager cacheManager;
|
|
private final SysUserMapper sysUserMapper;
|
|
/**
|
* 绑定社交账号
|
*
|
* @param type type
|
* @param code code
|
* @param userId
|
* @return
|
*/
|
@Override
|
public Boolean bindSocial(String type, String code, Long userId) {
|
String identify = loginHandlerMap.get(type).identify(code);
|
SysUser sysUser = sysUserMapper.selectById(userId);
|
|
if (LoginTypeEnum.GITEE.getType().equals(type)) {
|
sysUser.setGiteeLogin(identify);
|
} else if (LoginTypeEnum.OSC.getType().equals(type)) {
|
sysUser.setOscId(identify);
|
} else if (LoginTypeEnum.WECHAT.getType().equals(type)) {
|
sysUser.setWxOpenid(identify);
|
} else if (LoginTypeEnum.QQ.getType().equals(type)) {
|
sysUser.setQqOpenid(identify);
|
} else if (LoginTypeEnum.MINI_APP.getType().equals(type)) {
|
sysUser.setMiniOpenid(identify);
|
}
|
|
sysUserMapper.updateById(sysUser);
|
// 更新緩存
|
cacheManager.getCache(CacheConstants.USER_DETAILS).evict(sysUser.getUsername());
|
return Boolean.TRUE;
|
}
|
|
/**
|
* 根据入参查询用户信息
|
*
|
* @param inStr TYPE@code
|
* @return
|
*/
|
@Override
|
public UserVO getUserInfo(String inStr) {
|
int size = 0;
|
String[] inStrs = inStr.split(StringPool.AT);
|
String type = inStrs[0];
|
//size += inStrs[0].length();
|
size++;
|
String loginStr = inStrs[1];
|
size++;
|
//size += inStrs[1].length();
|
String threeAvatar = null;
|
String threeName = null;
|
if (inStrs.length > size) {
|
threeAvatar = inStrs[2];
|
//size += inStrs[2].length();
|
size++;
|
if (inStrs.length > size) {
|
threeName = inStrs[3];
|
}
|
}
|
return loginHandlerMap.get(type).handle(loginStr, threeAvatar, threeName);
|
}
|
|
}
|