guoyuji
2024-05-06 06090881384d424ac4466fd8b8a43b307b8a63d4
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
98
99
100
101
102
103
104
105
106
package com.example.erp.service.userInfo;
 
import cn.dev33.satoken.stp.StpUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.example.erp.controller.dto.UserDTO;
import com.example.erp.entity.userInfo.User;
import com.example.erp.mapper.userInfo.UserMapper;
import com.example.erp.tools.TokenTools;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
 
import java.util.List;
 
@Service
@DS("user_info")
public class UserService {
 
    private final UserMapper userMapper;
 
    public UserService(UserMapper userMapper) {
        this.userMapper = userMapper;
    }
 
 
    @Cacheable(value="users", key="#userDTO.getUserId()")
    public UserDTO login(UserDTO userDTO) {
 
        if(StrUtil.isBlank(userDTO.getUserId()) ||StrUtil.isBlank(userDTO.getPass())){
            return null;
        }else{
            int getUserCount=userMapper.checkUser(userDTO.getUserId(),userDTO.getPass());
            if(getUserCount==1){
                String token = TokenTools.getToken(userDTO.getUserId(),userDTO.getPass());
                userDTO.setToken(token);
                User user = userMapper.findOneLoginName(userDTO.getUserId());
                userDTO.setUserName(user.getUserName());
                return userDTO;
            }
        return null;
 
        }
    }
 
    @CacheEvict(value="users",key="#id",beforeInvocation=true)
    public String deleteCache(String id ) {
        //System.out.println("delete user by id: " + id);
        return null;
 
    }
 
    public String getUserByID(String userId){
        return userMapper.getUserByID(userId);
    }
 
    @Transactional
    public User register(User user) {
        User returnUser = new User();
        if(userMapper.register(user)){
            User getUser = userMapper.findOne(user.getId());
            returnUser.setUserName(getUser.getUserName());
            returnUser.setLoginName(getUser.getLoginName());
        }
        return returnUser;
    }
 
    /*----------------新版本登陆*/
    public UserDTO doLogin(UserDTO userDTO) {
        User user = userMapper.selectOne(new QueryWrapper<User>().
                eq("login_name", userDTO.getUserId()).eq("password", userDTO.getPass()));
        if(user!=null){
            //检查是让有登录,有登录直接退出
            StpUtil.logout(user.getId());
            //重新进行登录
            StpUtil.login(user.getId());
            userDTO.setPass(null);
            userDTO.setId(user.getId());
            userDTO.setUserName(user.getUserName());
            userDTO.setToken(StpUtil.getTokenValue());
            return userDTO;
        }else{
            return null;
        }
    }
 
    public Boolean isLogin() {
        // 返回当前用户是否登录
        return StpUtil.isLogin();
    }
 
    public Boolean logout() {
        StpUtil.logout();
        return true;
    }
 
    public List<User> findAll() {
        List<User> users = userMapper.findAll();
        users.forEach(user -> {
            user.setPassword(null);
        });
        return users;
    }
}