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 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; } @Transactional public Boolean updateUserName(Map object) { boolean saveState = false; int userId =0; String userName = ""; if (object.get("userId") != null) { userId = Integer.parseInt(object.get("userId").toString()); } if (object.get("userName") != null) { userName = object.get("userName").toString(); } if (userMapper.updateUserNameById(userId,userName)){ saveState = true; } return saveState; } /*----------------新版本登陆*/ public UserDTO doLogin(UserDTO userDTO) { User user = userMapper.selectOne(new QueryWrapper(). eq("login_name", userDTO.getUserId()) .eq("password", userDTO.getPass()) .eq("state",1) ); if(user!=null){ //检查是让有登录,有登录直接退出 StpUtil.logout(user.getId()); //重新进行登录 StpUtil.login(user.getId()); userDTO.setPass(null); userDTO.setId(user.getId()); userDTO.setUserName(user.getUserName()); userDTO.setAddress(user.getAddress()); 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> findAll() { List users = userMapper.findAll(); users.forEach(user -> { user.setPassword(null); }); Map> map = new HashMap<>(); map.put("users", Collections.singletonList(users)); map.put("role", Collections.singletonList( roleMapper.selectList( new QueryWrapper() .ne("role","admin") ) )); return map; } public Boolean userDelete(Integer id) { return userMapper.userDelete(id); } }