上个小节我们已经可以修改用户基本信息了,除了员工离职功能以外,用户管理模块还差删除用户功能没实现了。在用户管理页面,有两个可以删除用户记录的按钮。一个按钮是用来删除某行记录的,另一个按钮是用来删除选中的多条用户记录。因此说我们设计后端程序的时候,无论删除一条还是多条用户记录都能适配。
在TbUserDao.xml
文件中,定义SQL语句,仅限于删除非超级管理员的员工记录。
<delete id="deleteUserByIds"> DELETE FROM tb_user WHERE id IN <foreach collection="array" open="(" separator="," close=")" item="one"> #{one} </foreach> AND root=FALSE </delete>
代码块预览 复制
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
在TbUserDao.java
接口中,声明DAO方法。
public interface TbUserDao { …… public int deleteUserByIds(Integer[] ids); }
代码块预览 复制
- 1
- 2
- 3
- 4
在UserService.java
接口中,定义抽象方法。
public interface UserService { …… public int deleteUserByIds(Integer[] ids); }
代码块预览 复制
- 1
- 2
- 3
- 4
在UserServiceImpl.java
类中,实现抽象方法。
public class UserServiceImpl implements UserService { …… @Override public int deleteUserByIds(Integer[] ids) { int rows = userDao.deleteUserByIds(ids); return rows; } }
代码块预览 复制
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
创建DeleteUserByIdsForm.java
类,保存Ajax提交的数据。
@Schema(description = "删除用户表单") @Data public class DeleteUserByIdsForm { @NotEmpty(message = "ids不能为空") @Schema(description = "用户ID") private Integer[] ids; }
代码块预览 复制
- 1
- 2
- 3
- 4
- 5
- 6
- 7
在UserController.java
类中,定义Web方法。
public class UserController { …… @PostMapping("/deleteUserByIds") @SaCheckPermission(value = {"ROOT", "USER:DELETE"}, mode = SaMode.OR) @Operation(summary = "删除用户") public R deleteUserByIds(@Valid @RequestBody DeleteUserByIdsForm form) { Integer userId = StpUtil.getLoginIdAsInt(); if (ArrayUtil.contains(form.getIds(), userId)) { return R.error("您不能删除自己的帐户"); } int rows = userService.deleteUserByIds(form.getIds()); if (rows > 0) { //把被删除的用户踢下线 for (Integer id : form.getIds()) { StpUtil.logoutByLoginId(id); } } return R.ok().put("rows", rows); } }
代码块预览 复制
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20