| | |
| | | package com.mes.userinfo.service.impl; |
| | | |
| | | import cn.hutool.core.collection.CollectionUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | |
| | | import com.mes.common.config.Const; |
| | | import com.mes.common.utils.JwtUtil; |
| | | import com.mes.common.utils.RedisUtil; |
| | | import com.mes.common.utils.UserInfoUtils; |
| | | import com.mes.entity.request.GeneralRequest; |
| | | import com.mes.menu.mapper.SysMenuMapper; |
| | | import com.mes.role.entity.SysRole; |
| | | import com.mes.role.entity.SysRoleMenu; |
| | | import com.mes.role.service.SysRoleService; |
| | | import com.mes.userinfo.entity.LoginUser; |
| | | import com.mes.userinfo.entity.SysUser; |
| | | import com.mes.userinfo.entity.SysUserRole; |
| | | import com.mes.userinfo.entity.request.UserRequest; |
| | | import com.mes.userinfo.entity.vo.SysUserVO; |
| | | import com.mes.userinfo.mapper.SysUserMapper; |
| | | import com.mes.userinfo.service.SysUserRoleService; |
| | |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.security.authentication.AuthenticationManager; |
| | | import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; |
| | | import org.springframework.security.core.Authentication; |
| | | import org.springframework.security.core.context.SecurityContextHolder; |
| | | import org.springframework.security.core.userdetails.UserDetails; |
| | | import org.springframework.security.core.userdetails.UserDetailsService; |
| | | import org.springframework.security.core.userdetails.UsernameNotFoundException; |
| | |
| | | @Resource |
| | | BCryptPasswordEncoder passwordEncoder; |
| | | |
| | | @Value("${test.common}") |
| | | private String value; |
| | | |
| | | @Override |
| | | public Map<String, String> login(SysUser user) { |
| | | log.info(value); |
| | | UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(user.getUserName(), user.getPassword()); |
| | | Authentication authenticate = authenticationManager.authenticate(authenticationToken); |
| | | if (Objects.isNull(authenticate)) { |
| | |
| | | |
| | | @Override |
| | | public String logout() { |
| | | Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); |
| | | LoginUser loginUser = (LoginUser) authentication.getPrincipal(); |
| | | Long userid = loginUser.getUser().getId(); |
| | | redisUtil.deleteObject("login:" + userid); |
| | | log.info("用户退出"); |
| | | SysUser user = UserInfoUtils.get(); |
| | | redisUtil.deleteObject("login:" + user.getId()); |
| | | return "注销成功"; |
| | | } |
| | | |
| | |
| | | BeanUtils.copyProperties(user, sysUser); |
| | | this.updateById(sysUser); |
| | | log.info("删除用户角色信息"); |
| | | sysUserRoleService.removeByIds(user.getRoleList()); |
| | | List<Long> roleIds = user.getRoleList().stream().map(SysRole::getId).collect(Collectors.toList()); |
| | | sysUserRoleService.remove(new LambdaQueryWrapper<SysUserRole>() |
| | | .eq(SysUserRole::getUserId, sysUser.getId()).in(CollectionUtil.isNotEmpty(roleIds), SysUserRole::getRoleId, roleIds)); |
| | | log.info("保存用户角色信息"); |
| | | saveUserRole(user.getRoleList(), sysUser.getId()); |
| | | return null; |
| | | return user; |
| | | } |
| | | |
| | | @Override |
| | |
| | | } |
| | | |
| | | @Override |
| | | public List<SysUserVO> listByUserName(UserRequest request) { |
| | | public SysUser queryByUserName(String userName) { |
| | | return baseMapper.selectOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUserName, userName)); |
| | | } |
| | | |
| | | @Override |
| | | public List<SysUserVO> listByUserName(GeneralRequest request) { |
| | | MPJLambdaWrapper<SysUser> wrapper = new MPJLambdaWrapper<>(); |
| | | wrapper.selectAll(SysUser.class) |
| | | .selectCollection(SysRole.class, SysUserVO::getRoleList) |
| | | .leftJoin(SysUserRole.class, SysUserRole::getUserId, SysUser::getId) |
| | | .leftJoin(SysRole.class, SysRole::getId, SysUserRole::getRoleId) |
| | | .like(StringUtils.hasText(request.getUserName()), SysUser::getUserName, request.getUserName()); |
| | | .like(StringUtils.hasText(request.getKey()), SysUser::getUserName, request.getKey()); |
| | | return baseMapper.selectJoinList(SysUserVO.class, wrapper); |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | @Override |
| | | public void clearUserAuthorityInfoByMenuId(Long userId) { |
| | | public void clearUserAuthorityInfo(String userName) { |
| | | redisUtil.deleteObject("GrantedAuthority:" + userName); |
| | | } |
| | | |
| | | @Override |
| | | public void clearUserAuthorityInfoByRoleId(Long roleId) { |
| | | List<SysUser> sysUsers = this.list(new QueryWrapper<SysUser>() |
| | | .inSql("id", "select user_id from sys_user_role where role_id = " + roleId)); |
| | | |
| | | sysUsers.forEach(u -> { |
| | | this.clearUserAuthorityInfo(u.getUserName()); |
| | | }); |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public void clearUserAuthorityInfoByMenuId(Long menuId) { |
| | | MPJLambdaWrapper<SysUserRole> wrapper = new MPJLambdaWrapper<SysUserRole>().selectAll(SysUser.class).distinct() |
| | | .leftJoin(SysUser.class, SysUser::getId, SysUserRole::getUserId) |
| | | .leftJoin(SysRoleMenu.class, SysRoleMenu::getRoleId, SysUserRole::getRoleId) |
| | | .eq(SysRoleMenu::getMenuId, menuId); |
| | | List<SysUser> sysUsers = sysUserRoleService.selectJoinList(SysUser.class, wrapper); |
| | | sysUsers.forEach(u -> { |
| | | this.clearUserAuthorityInfo(u.getUserName()); |
| | | }); |
| | | } |
| | | |
| | | /** |