86183
2022-09-09 0d999e33085c0a25c5525242748f6aa62a401159
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
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);
    }
 
}