需要权限:管理员
是否真的删除呢?不是的呢,只是修改状态。
接口
/**
* 需要管理员权限
*
* @param userId
* @return
*/
@DeleteMapping("/{userId}")
public ResponseResult deleteUser(HttpServletResponse response, HttpServletRequest request,
@PathVariable("userId") String userId) {
//判断当前操作的用户是谁
//根据用户角色判断是否可以删除
//TODO:通过注解的方式来控制权限
return userService.deleteUserById(userId, request, response);
}
修改用户状态代码
/**
* 删除用户,并不是真的删除
* 而是修改状态
* <p>
* PS:需要管理员权限
*/
@Override
public ResponseResult deleteUserById(String userId, HttpServletRequest request, HttpServletResponse response) {
//检验当前操作的用户是谁
SobUser currentUser = checkSobUser(request, response);
if (currentUser == null) {
return ResponseResult.ACCOUNT_NOT_LOGIN();
}
//判断角色
if (!Constants.User.ROLE_ADMIN.equals(currentUser.getRoles())) {
return ResponseResult.PERMISSION_FORBID();
}
//可以删除用户了
int result = userDao.deleteUserByState(userId);
if (result > 0) {
return ResponseResult.SUCCESS("删除成功");
}
return ResponseResult.FAILED("用户不存在");
}
DAO里的方法
/**
* 通过修改用户的状态来删除用户
*
* @param userId
* @return
*/
@Modifying
@Query(nativeQuery = true, value = "UPDATE `tb_user` SET `state` = '0' WHERE `id` = ?")
int deleteUserByState(String userId);