chenlu
2024-06-07 2f640b1038fa331954f78ed1f4317212cf5bb34d
north-glass-erp/src/main/java/com/example/erp/service/userInfo/UserService.java
New file
@@ -0,0 +1,164 @@
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.PermissionBasic;
import com.example.erp.entity.userInfo.Role;
import com.example.erp.entity.userInfo.SysError;
import com.example.erp.entity.userInfo.User;
import com.example.erp.mapper.userInfo.*;
import com.example.erp.tools.TokenTools;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
@DS("user_info")
public class UserService {
    private final UserMapper userMapper;
    private final RoleMapper roleMapper;
    private final UserRoleMapper userRoleMapper;
   private final PermissionRoleMapper permissionRoleMapper;
    public UserService(UserMapper userMapper, RoleMapper roleMapper, PermissionRoleMapper permissionRoleMapper, UserRoleMapper userRoleMapper) {
        this.userMapper = userMapper;
        this.roleMapper = roleMapper;
        this.permissionRoleMapper = permissionRoleMapper;
        this.userRoleMapper = userRoleMapper;
    }
    @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;
    }
    @Transactional
    public Boolean updatePassWord(Map<String,Object> object) {
        boolean saveState = false;
        int userId =0;
        String oldPassWord = "";
        String passWord = "";
        if (object.get("userId") != null) {
            userId = Integer.parseInt(object.get("userId").toString());
        }
        if (object.get("oldPassword") != null) {
            oldPassWord = object.get("oldPassword").toString();
        }
        if (object.get("password") != null) {
            passWord = object.get("password").toString();
        }
        User user =userMapper.findOnePassWord(userId,oldPassWord);
        if (user!=null){
            if (userMapper.updatePassWordById(userId,passWord)){
                saveState = true;
            }
        }
        return saveState;
    }
    /*----------------新版本登陆*/
    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());
            Boolean userIsAdmin= userRoleMapper.getUserIsAdmin(user.getId());
            userDTO.setPermissions(permissionRoleMapper.getUserEditPermission(user.getId(),userIsAdmin));
            return userDTO;
        }else{
            return null;
        }
    }
    public Boolean isLogin() {
        // 返回当前用户是否登录
        return StpUtil.isLogin();
    }
    public Boolean logout() {
        StpUtil.logout();
        return true;
    }
    public Map<String,List<Object>> findAll() {
        List<User> users = userMapper.findAll();
        users.forEach(user -> {
            user.setPassword(null);
        });
        Map<String,List<Object>> map = new HashMap<>();
        map.put("users", Collections.singletonList(users));
        map.put("role", Collections.singletonList(
                roleMapper.selectList(
                new QueryWrapper<Role>()
                        .ne("role","admin")
                )
        ));
        return map;
    }
    public Boolean userDelete(Integer id) {
        return userMapper.userDelete(id);
    }
}