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.Log; import com.example.erp.entity.userInfo.Role; import com.example.erp.entity.userInfo.User; import com.example.erp.mapper.pp.ProductionSchedulingMapper; 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 java.util.*; @Service @DS("user_info") public class UserService { private final UserMapper userMapper; private final RoleMapper roleMapper; private final UserRoleMapper userRoleMapper; private final PermissionRoleMapper permissionRoleMapper; private final ProductionSchedulingMapper productionSchedulingMapper; @Autowired LogService logService; public UserService(UserMapper userMapper, RoleMapper roleMapper, PermissionRoleMapper permissionRoleMapper, UserRoleMapper userRoleMapper, ProductionSchedulingMapper productionSchedulingMapper) { this.userMapper = userMapper; this.roleMapper = roleMapper; this.permissionRoleMapper = permissionRoleMapper; this.userRoleMapper = userRoleMapper; this.productionSchedulingMapper = productionSchedulingMapper; } @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)); Log log = new Log(); log.setOperator(user.getUserName()); log.setOperatorId(userDTO.getUserId()); log.setContent(userDTO.toString()); log.setFunction("用户登录"); logService.saveLog(log); 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); } public Map selectProcessSv() { Map map = new HashMap<>(); map.put("process", productionSchedulingMapper.selectProcess()); return map; } public Boolean updateProcessSv(Integer id, String process) { return userMapper.updateProcessMp(id,process); } public Object findByAddress(Map userName) { if(Objects.equals(userName.get("userName"), "")){ userName.put("userName", null) ; } List users = userMapper.findByAddress(userName.get("userName")); List> userList = new ArrayList<>(); users.forEach(user -> { Map userMap = new HashMap<>(); userMap.put("value", user.getLoginName()); userMap.put("text", user.getUserName()); userList.add(userMap); }); Map> map = new HashMap<>(); map.put("users", Collections.singletonList(userList)); return map; } public Object getUserLog() { Map map = new HashMap<>(); map.put("data", userMapper.getUserLog()); return map; } //查询用户优化参数 public String getOptimizeParms(String username) { // 获取当前登录用户 return userMapper.selectOptimizeParmsById(username); } }