package com.js.studentmanagerspringboot.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.js.studentmanagerspringboot.common.Constants;
import com.js.studentmanagerspringboot.dto.UserDto;
import com.js.studentmanagerspringboot.entity.Menu;
import com.js.studentmanagerspringboot.entity.User;
import com.js.studentmanagerspringboot.exception.ServiceException;
import com.js.studentmanagerspringboot.mapper.RoleMapper;
import com.js.studentmanagerspringboot.mapper.RoleMenuMapper;
import com.js.studentmanagerspringboot.mapper.UserMapper;
import com.js.studentmanagerspringboot.service.UserService;
import com.js.studentmanagerspringboot.utils.TokenUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
@Service
public class UserServiceImpl implements UserService {
@Resource
private UserMapper userMapper;
@Resource
private RoleMapper roleMapper;
@Resource
private MenuServiceImpl menuService;
// 关系表
@Resource
private RoleMenuMapper roleMenuMapper;
@Override // 查询全部对象
public UserDto select(UserDto userDto) {
List<User> userList = userMapper.select();
// 查询user表全部数据 逐一判断
if (userList!=null){
for (User user : userList) {
if (user.getUsername().equals(userDto.getUsername()) && user.getPassword().equals(userDto.getPassword())){
// 将user1对象 往userDao对象复制
// true:忽略大小写
BeanUtil.copyProperties(user,userDto,true);
// 将登录用户信息的userid和password设置为token的载荷和标志
String token = TokenUtils.genToken( user.getId().toString(),user.getPassword());
// 将token封装进实体类
userDto.setToken(token);
// 获取登录用户的角色
String role = userDto.getRole();
// 获取当前角色对应的菜单
List<Menu> roleMenus = getRoleMenus(role);
userDto.setMenus(roleMenus);
return userDto;
}
}
}
// 说明没有找到对应用户信息
throw new ServiceException(Constants.CODE_500,"用户名或密码错误!!");
}
@Override
public User register(UserDto userDto){
User registerUser = new User();
// 查询user表全部数据 逐一判断
if (userMapper.select()!=null){
for (User user : userMapper.select()) {
if (!(user.getUsername().equals(userDto.getUsername()))){
// 说明用户名并没有相同 可以进行插入
BeanUtil.copyProperties(userDto,registerUser,true);
userMapper.register(registerUser);
return registerUser;
}
}
}
throw new ServiceException(Constants.CODE_500,"用户已存在!!");
}
// 修改用户信息
@Override
public User edit(UserDto userDto) {
User user = new User();
// 将接受实体类copy到user对象
BeanUtil.copyProperties(userDto,user,true);
Integer edit = userMapper.edit(user);
if (edit == null){
throw new ServiceException(Constants.CODE_600,"信息修改失败");
}
return user;
}
// 根据username进行查询
@Override
public User selectByName(String username) {
if (username!=null){
return userMapper.selectByName(username);
}else {
throw new ServiceException(Constants.CODE_500,"查询失败");
}
}
// 根据id查询
@Override
public User selectById(Integer id) {
User user = userMapper.selectById(id);
return user;
}
@Override
public void deleteById(int id) {
userMapper.deleteById(id);
}
@Override
public void deleteByIds(List<Integer> ids) {
userMapper.deleteByIds(ids);
}
@Override
public List<User> selectPage(Integer pageNum, Integer pageSize, String inputUserName) {
int currentPage= (pageNum-1)*pageSize;
return userMapper.selectPage(currentPage, pageSize,inputUserName);
}
@Override
public Integer selectTotal(String inputUserName) {
return userMapper.selectTotal(inputUserName);
}
// 获取当前角色菜单列表
private List<Menu> getRoleMenus(String key){
Integer roleId = roleMapper.selectByKey(key);
// 当前角色对应的所有菜单
List<Integer> menuIds = roleMenuMapper.selectByRoleId(roleId);
// 查询系统所有的菜单
List<Menu> menus = menuService.findMenus("");
// 筛选完成之后的list
List<Menu> roleMenuList = new ArrayList<>();
// 筛选当前用户角色的菜单
// 首先遍历所有菜单
for (Menu menu : menus) {
// 查询menu是否在用户角色对应的menuIds里面
if (menuIds.contains(menu.getId())){
// 存在保存在集合里面
roleMenuList.add(menu);
}
// 获取子菜单
List<Menu> childrenList = menu.getChildren();
// 如果菜单不在用户对应的菜单选项里面 则移除
childrenList.removeIf(child -> !menuIds.contains(child.getId()));
}
return roleMenuList;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
java开发基于springboot的管理系统源码。这是一个基于springboot+vue+mybatis的学生成绩管理系统。java开发基于springboot的管理系统源码。这是一个基于springboot+vue+mybatis的学生成绩管理系统。java开发基于springboot的管理系统源码。这是一个基于springboot+vue+mybatis的学生成绩管理系统。java开发基于springboot的管理系统源码。这是一个基于springboot+vue+mybatis的学生成绩管理系统。java开发基于springboot的管理系统源码。这是一个基于springboot+vue+mybatis的学生成绩管理系统。java开发基于springboot的管理系统源码。这是一个基于springboot+vue+mybatis的学生成绩管理系统。java开发基于springboot的管理系统源码。这是一个基于springboot+vue+mybatis的学生成绩管理系统。java开发基于springboot的管理系统源码。这是一个基于springboot+vue+mybat
资源推荐
资源详情
资源评论



























收起资源包目录

















































































共 54 条
- 1

程序员张小妍
- 粉丝: 2w+
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 白马服装网电子商务平台可行性分析报告(1)(1).doc
- 中文版3ds-Max-2016基础培训教程2(1).ppt
- 软件的系统部署及升级流程及管理系统(1).doc
- 【推荐下载】人工智能革命已开始-工作交给机器有什么后果(1).doc
- 网站服务合同正规范文(1).doc
- 江苏省计算机二级考试复习资料计算机基础知识部分(1).doc
- 担保业务管理系统产品方案说明书-南京龙戈软件(1).doc
- 幼儿教师信息化教学能力提升策略(1).docx
- 基于深度学习的国土资源遥感影像分析平台设计研究(1).docx
- 【推荐下载】工业互联网面临三大要素的考验(1).pdf
- 新课标背景下中学计算机教学研究(1).docx
- 基于PLC的电镀行车自动控制系统设计(2)(1).doc
- 人工智能在电气工程自动化中的运用(1).docx
- 电子商务类实习报告(1).doc
- 基于云计算技术的高校计算机实验室建设(1).docx
- 基于单片机数字频率计的设计课程设计正文--学位论文(1).doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制

- 1
- 2
- 3
- 4
- 5
前往页