若依源码分析(3)

您所在的位置:网站首页 getuserinfo如何该用getuse 若依源码分析(3)

若依源码分析(3)

2023-07-26 06:43| 来源: 网络整理| 查看: 265

系统管理-用户管理 /system/user

在这里插入图片描述

/** * @RequiresPermissions 是Shiro的注解 * 只有当用户拥有system:user:list这个字符串时才能访问此方法 */ @RequiresPermissions("system:user:list") @PostMapping("/list") @ResponseBody public TableDataInfo list(SysUser user) { //设置请求分页数据 startPage(); //调用service层的userService实现selectUserList //根据条件分页查询用户列表 List list = userService.selectUserList(user); //返回响应分页的数据 return getDataTable(list); } 请求分页数据 /** * 设置请求分页数据 */ protected void startPage() { //设置分页数据对象,并建立连接 PageDomain pageDomain = TableSupport.buildPageRequest(); //获取页码及每页的数目 Integer pageNum = pageDomain.getPageNum(); Integer pageSize = pageDomain.getPageSize(); if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)) { //检查字符,防止SQL注入绕过 String orderBy = SqlUtil.escapeOrderBySql(pageDomain.getOrderBy()); //使用分页插件开始分页 PageHelper.startPage(pageNum, pageSize, orderBy); } } 查询用户列表 /** * 根据条件分页查询用户列表 * * @param user 用户信息 * @return 用户信息集合信息 */ @Override @DataScope(deptAlias = "d", userAlias = "u") public List selectUserList(SysUser user) { return userMapper.selectUserList(user); } UserMapper.xml select u.user_id, u.dept_id, u.login_name, u.user_name, u.user_type, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.salt, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name, d.leader from sys_user u left join sys_dept d on u.dept_id = d.dept_id where u.del_flag = '0' AND u.login_name like concat('%', #{loginName}, '%') AND u.status = #{status} AND u.phonenumber like concat('%', #{phonenumber}, '%') AND date_format(u.create_time,'%y%m%d') ;= date_format(#{params.beginTime},'%y%m%d') AND date_format(u.create_time,'%y%m%d') ;= date_format(#{params.endTime},'%y%m%d') AND (u.dept_id = #{deptId} OR u.dept_id IN ( SELECT t.dept_id FROM sys_dept t WHERE FIND_IN_SET (#{deptId},ancestors) )) ${params.dataScope} 编辑用户 /system/user/edit/{id} 回显信息 /** * 修改用户(回显相关信息) */ @GetMapping("/edit/{userId}") //@PathVariable用户获取url中的{userId} public String edit(@PathVariable("userId") Long userId, ModelMap mmap) { //查询数据库,回显当前Id用户的相关信息 //用户信息 mmap.put("user", userService.selectUserById(userId)); //角色信息 mmap.put("roles", roleService.selectRolesByUserId(userId)); //岗位信息 mmap.put("posts", postService.selectPostsByUserId(userId)); return prefix + "/edit"; } userService查询用户信息 /** * 通过用户ID查询用户 * * @param userId 用户ID * @return 用户对象信息 */ @Override public SysUser selectUserById(Long userId) { return userMapper.selectUserById(userId); } userMapper.xml where u.user_id = #{userId} roleService查询角色信息 /** * 根据用户ID查询角色 * * @param userId 用户ID * @return 角色列表 */ @Override public List selectRolesByUserId(Long userId) { List userRoles = roleMapper.selectRolesByUserId(userId); List roles = selectRoleAll(); for (SysRole role : roles) { for (SysRole userRole : userRoles) { if (role.getRoleId().longValue() == userRole.getRoleId().longValue()) { role.setFlag(true); break; } } } return roles; } RoleMapper.xml select r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status, r.del_flag, r.create_time, r.remark from sys_role r WHERE r.del_flag = '0' and ur.user_id = #{userId} postService查询岗位信息 /** * 根据用户ID查询岗位 * * @param userId 用户ID * @return 岗位列表 */ @Override public List selectPostsByUserId(Long userId) { List userPosts = postMapper.selectPostsByUserId(userId); List posts = postMapper.selectPostAll(); for (SysPost post : posts) { for (SysPost userRole : userPosts) { if (post.getPostId().longValue() == userRole.getPostId().longValue()) { post.setFlag(true); break; } } } return posts; } PostMapper.xml AND post_code like concat('%', #{postCode}, '%') AND status = #{status} AND post_name like concat('%', #{postName}, '%') 保存提交 /system/user/edit 提交信息

在这里插入图片描述

/** * 修改保存用户 * 用@validated来校验数据,如果数据异常则会统一抛出异常,方便异常中心统一处理 */ @RequiresPermissions("system:user:edit") @Log(title = "用户管理", businessType = BusinessType.UPDATE) @PostMapping("/edit") @ResponseBody public AjaxResult editSave(@Validated SysUser user) { // 校验用户是否允许操作 userService.checkUserAllowed(user); // 使用用户常量信息类(里面对各个字段做了一定限制)进行校验 // 转换成0和1 if (UserConstants.USER_PHONE_NOT_UNIQUE.equals(userService.checkPhoneUnique(user))) { //手机号不唯一 return error("修改用户'" + user.getLoginName() + "'失败,手机号码已存在"); } else if (UserConstants.USER_EMAIL_NOT_UNIQUE.equals(userService.checkEmailUnique(user))) { return error("修改用户'" + user.getLoginName() + "'失败,邮箱账号已存在"); } // 记录当前更新者的用户名 // Shiro可以直接获得当前登录用户的用户名 user.setUpdateBy(ShiroUtils.getLoginName()); // 保存更新的用户,并响应返回的ajax类型的结果 return toAjax(userService.updateUser(user)); } 重置密码 /system/user/resetPwd/{userId} 回显密码

在这里插入图片描述

/** * 重置密码 - 信息回显 * @param userId * @param mmap * @return */ @RequiresPermissions("system:user:resetPwd") @Log(title = "重置密码", businessType = BusinessType.UPDATE) @GetMapping("/resetPwd/{userId}") public String resetPwd(@PathVariable("userId") Long userId, ModelMap mmap) { //查询到用户信息,放入视图解析器中 mmap.put("user", userService.selectUserById(userId)); //System.out.println(mmap.get("user")); //返回到修改密码界面 return prefix + "/resetPwd"; }

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SKNnYdLJ-1587282576676)(D:/Typora/images/若依/首页/1587276585475.png)]

修改密码 xml update sys_user dept_id = #{deptId}, login_name = #{loginName}, user_name = #{userName}, user_type = #{userType}, email = #{email}, phonenumber = #{phonenumber}, sex = #{sex}, avatar = #{avatar}, password = #{password}, salt = #{salt}, status = #{status}, login_ip = #{loginIp}, login_date = #{loginDate}, update_by = #{updateBy}, remark = #{remark}, update_time = sysdate() where user_id = #{userId} 新增用户 /system/user/add 界面显示 GET请求

在这里插入图片描述

/** * 新增用户 */ @GetMapping("/add") public String add(ModelMap mmap) { //查询所有角色和岗位,便于在页面中响应下拉框中展示 mmap.put("roles", roleService.selectRoleAll()); mmap.put("posts", postService.selectPostAll()); return prefix + "/add"; } 表单提交 POST请求 /** * 表单提交 * 新增保存用户 */ @RequiresPermissions("system:user:add") @Log(title = "用户管理", businessType = BusinessType.INSERT) @PostMapping("/add") @ResponseBody public AjaxResult addSave(@Validated SysUser user) //验证 { // 验证字段唯一性 if (UserConstants.USER_NAME_NOT_UNIQUE.equals(userService.checkLoginNameUnique(user.getLoginName()))) { return error("新增用户'" + user.getLoginName() + "'失败,登录账号已存在"); } else if (UserConstants.USER_PHONE_NOT_UNIQUE.equals(userService.checkPhoneUnique(user))) { return error("新增用户'" + user.getLoginName() + "'失败,手机号码已存在"); } else if (UserConstants.USER_EMAIL_NOT_UNIQUE.equals(userService.checkEmailUnique(user))) { return error("新增用户'" + user.getLoginName() + "'失败,邮箱账号已存在"); } //加盐加密 user.setSalt(ShiroUtils.randomSalt()); user.setPassword(passwordService.encryptPassword(user.getLoginName(), user.getPassword(), user.getSalt())); //设置添加信息 user.setCreateBy(ShiroUtils.getLoginName()); // 返回添加成功或失败 return toAjax(userService.insertUser(user)); } 删除用户 /system/user/remove

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zpy5WgdW-1587282576679)(D:/Typora/images/若依/首页/1587279242503.png)]

/** * 删除用户 * @param ids * @return */ @RequiresPermissions("system:user:remove") @Log(title = "用户管理", businessType = BusinessType.DELETE) @PostMapping("/remove") @ResponseBody public AjaxResult remove(String ids) { try { return toAjax(userService.deleteUserByIds(ids)); } catch (Exception e) { return error(e.getMessage()); } } 分配用户角色 /system/user/authRole/{userId}

在这里插入图片描述

授权角色 /system/user/authRole/insertAuthRole /** * 用户授权角色 */ @RequiresPermissions("system:user:add") @Log(title = "用户管理", businessType = BusinessType.GRANT) @PostMapping("/authRole/insertAuthRole") @ResponseBody public AjaxResult insertAuthRole(Long userId, Long[] roleIds) //不止一个角色 { userService.insertUserAuth(userId, roleIds); return success(); } // service层 /** * 用户授权角色 * * @param userId 用户ID * @param roleIds 角色组 */ @Override public void insertUserAuth(Long userId, Long[] roleIds) { // 先重置原有角色 删除用户与角色的关联 userRoleMapper.deleteUserRoleByUserId(userId); // 添加角色 insertUserRole(userId, roleIds); } delete from sys_user_role where user_id = #{userId} 用户和角色是一对多的关系 /** * 新增用户角色信息 * 一对多的关系 * * @param user 用户对象 */ public void insertUserRole(Long userId, Long[] roleIds) { if (StringUtils.isNotNull(roleIds)) { // 新增用户与角色管理 List list = new ArrayList(); for (Long roleId : roleIds) { // 一个用户和一个角色对应sys_user_role表中的一行 // 所以如果一个用户有多个角色,就会对应多行数据,因此SysUserRole也会有多个 // 最后会形成一个list SysUserRole ur = new SysUserRole(); ur.setUserId(userId); ur.setRoleId(roleId); list.add(ur); } if (list.size() > 0) { //批量添加角色信息 userRoleMapper.batchUserRole(list); } } } 搜索用户(条件查询) /system/user/list 搜索框搜索

在这里插入图片描述在这里插入图片描述

组织机构筛选

在这里插入图片描述 在这里插入图片描述

导出用户 /system/user/export /** * 导出用户信息 * @param user * @return */ @Log(title = "用户管理", businessType = BusinessType.EXPORT) @RequiresPermissions("system:user:export") @PostMapping("/export") @ResponseBody public AjaxResult export(SysUser user) { //查询用户列表 List list = userService.selectUserList(user); //利用Excel工具类进行相关信息的编写 //工具类在poi包下 //POI是Apache软件基金会用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程序对Microsoft Office格式档案读和写的功能。 ExcelUtil util = new ExcelUtil(SysUser.class); //数据导入到excel return util.exportExcel(list, "用户数据"); }

在这里插入图片描述

导入用户 /system/user/import /** * 导入用户 * @param file * @param updateSupport * @return * @throws Exception */ @Log(title = "用户管理", businessType = BusinessType.IMPORT) @RequiresPermissions("system:user:import") @PostMapping("/importData") @ResponseBody public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception { ExcelUtil util = new ExcelUtil(SysUser.class); List userList = util.importExcel(file.getInputStream()); String operName = ShiroUtils.getSysUser().getLoginName(); String message = userService.importUser(userList, updateSupport, operName); return AjaxResult.success(message); }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3