增加功能:

1. 加入权限管理
This commit is contained in:
梁州 2024-11-01 16:57:46 +08:00
parent be2aee9cf8
commit cb0407e302
21 changed files with 1120 additions and 13 deletions

View File

@ -6,21 +6,25 @@ import com.alibaba.fastjson2.JSONObject;
import com.auth0.jwt.JWT; import com.auth0.jwt.JWT;
import com.auth0.jwt.interfaces.DecodedJWT; import com.auth0.jwt.interfaces.DecodedJWT;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.wms.annotation.MyLog; import com.wms.annotation.MyLog;
import com.wms.constants.WmsConstants;
import com.wms.constants.enums.ResponseCode; import com.wms.constants.enums.ResponseCode;
import com.wms.entity.app.ResponseEntity;
import com.wms.entity.app.dto.KateUser; import com.wms.entity.app.dto.KateUser;
import com.wms.entity.app.dto.MenuDto; import com.wms.entity.app.dto.MenuDto;
import com.wms.entity.app.dto.PageDto;
import com.wms.entity.app.dto.UserDto; import com.wms.entity.app.dto.UserDto;
import com.wms.entity.app.request.UserQuery; import com.wms.entity.app.request.*;
import com.wms.entity.app.vo.MenuEntity; import com.wms.entity.app.vo.*;
import com.wms.entity.app.ResponseEntity; import com.wms.entity.table.Menu;
import com.wms.entity.app.vo.UserConfigEntity; import com.wms.entity.table.Permission;
import com.wms.entity.table.Role;
import com.wms.entity.table.User; import com.wms.entity.table.User;
import com.wms.service.MenuService; import com.wms.service.*;
import com.wms.service.StandService;
import com.wms.service.UserService;
import com.wms.constants.WmsConstants;
import com.wms.utils.HttpUtils; import com.wms.utils.HttpUtils;
import com.wms.utils.MyPassword;
import com.wms.utils.StringUtils; import com.wms.utils.StringUtils;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@ -34,13 +38,17 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Objects;
import static com.wms.utils.StringUtils.convertJsonString; import static com.wms.utils.StringUtils.convertJsonString;
/** /**
* WMS用户控制类 * WMS用户控制类
*
* @author 梁州 * @author 梁州
* @date 2023/2/14 * @date 2023/2/14
*/ */
@ -66,9 +74,18 @@ public class UserController {
* 站台服务 * 站台服务
*/ */
private final StandService standService; private final StandService standService;
/**
* 角色服务
*/
private final RoleService roleService;
/**
* 权限服务
*/
private final PermissionService permissionService;
/** /**
* 带密码登录 * 带密码登录
*
* @param userQuery 用户 * @param userQuery 用户
* @return 结果 * @return 结果
*/ */
@ -118,6 +135,7 @@ public class UserController {
/** /**
* 无密码登录 * 无密码登录
*
* @param userQuery 用户 * @param userQuery 用户
* @return 结果 * @return 结果
*/ */
@ -167,6 +185,7 @@ public class UserController {
/** /**
* 获得用户信息菜单 * 获得用户信息菜单
*
* @param codeInfo code信息 * @param codeInfo code信息
* @return 结果 * @return 结果
*/ */
@ -199,7 +218,7 @@ public class UserController {
newUser.setUserName(kateUser.getName()); newUser.setUserName(kateUser.getName());
List<User> localUsers = userService.list(new LambdaQueryWrapper<User>() List<User> localUsers = userService.list(new LambdaQueryWrapper<User>()
.eq(User::getUserName, kateUser.getName())); .eq(User::getUserName, kateUser.getName()));
if (localUsers.size() > 0) {// 本地存在 if (!localUsers.isEmpty()) {// 本地存在
newUser.setRoleId(localUsers.get(0).getRoleId()); newUser.setRoleId(localUsers.get(0).getRoleId());
} else { } else {
if (kateUser.getGroups().contains("CXL-ASRS-Admin")) {// 普通用户 if (kateUser.getGroups().contains("CXL-ASRS-Admin")) {// 普通用户
@ -232,11 +251,12 @@ public class UserController {
/** /**
* 构造用户信息菜单按钮等权限 * 构造用户信息菜单按钮等权限
*
* @param currentUser 当前用户 * @param currentUser 当前用户
* @param ip ip地址 * @param ip ip地址
* @return 用户信息 * @return 用户信息
*/ */
private UserConfigEntity generateUserInfo (UserDto currentUser, String ip) { private UserConfigEntity generateUserInfo(UserDto currentUser, String ip) {
UserConfigEntity userConfigEntity = new UserConfigEntity(); UserConfigEntity userConfigEntity = new UserConfigEntity();
try { try {
if (currentUser.getRoleId() == null) { if (currentUser.getRoleId() == null) {
@ -294,4 +314,675 @@ public class UserController {
} }
return userConfigEntity; return userConfigEntity;
} }
/**
* 获取用户列表
*
* @param userQuery 查询参数
* @return 结果
*/
@PostMapping("/getUserList")
@ResponseBody
@Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED)
@MyLog(logTitle = "获取用户列表", logMethod = "getUserList")
public String getUserList(@RequestBody UserQuery userQuery) {
logger.info("获取用户列表,请求用户名:{}登录ip{}", userQuery.getUserName(), HttpUtils.getIpAddr(servletRequest));
// 创建响应信息
ResponseEntity rsp = new ResponseEntity();
try {
if (userQuery.getRoleId() == null || userQuery.getRoleId() != 1) {
logger.error("操作人员必须是管理员级别。");
// 返回错误
rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("操作人员必须是管理员级别。");
return convertJsonString(rsp);
}
// 查询roleId低于当前查询的roleId的用户
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<User>()
.ge(User::getRoleId, userQuery.getRoleId())
.orderByAsc(User::getRoleId, User::getUserId);
if (StringUtils.isNotEmpty(userQuery.getUserName())) {
queryWrapper.like(User::getUserName, userQuery.getUserName());
}
Page<User> page = userQuery.toMpPage();
Page<User> userPage = userService.page(page, queryWrapper);
PageDto<UserVo> pageDto = PageDto.of(userPage, UserVo::of);
// 返回成功
logger.info("查询用户列表成功。");
rsp.setCode(ResponseCode.OK.getCode());
rsp.setMessage("查询用户列表成功。");
// 返回用户数据
rsp.setReturnData(pageDto);
return convertJsonString(rsp);
} catch (Exception e) {
// 回滚事务
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
logger.info("查询用户列表失败:{}", convertJsonString(e));
// 返回其他异常
rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("查询用户列表失败。");
return convertJsonString(rsp);
}
}
/**
* 获取角色列表
*
* @param roleQuery 查询参数
* @return 结果
*/
@PostMapping("/getRoleList")
@ResponseBody
@Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED)
@MyLog(logTitle = "获取角色列表", logMethod = "getRoleList")
public String getRoleList(@RequestBody RoleQuery roleQuery) {
logger.info("获取角色列表,请求用户名:{}登录ip{}", roleQuery.getUserName(), HttpUtils.getIpAddr(servletRequest));
// 创建响应信息
ResponseEntity rsp = new ResponseEntity();
try {
if (roleQuery.getRoleId() == null || roleQuery.getRoleId() != 1) {
logger.error("操作人员必须是管理员级别。");
// 返回错误
rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("操作人员必须是管理员级别。");
return convertJsonString(rsp);
}
// 查询roleId低于当前查询的roleId的用户
LambdaQueryWrapper<Role> queryWrapper = new LambdaQueryWrapper<Role>()
.ge(Role::getRoleId, roleQuery.getRoleId())
.orderByAsc(Role::getRoleId);
Page<Role> page = roleQuery.toMpPage();
Page<Role> rolePage = roleService.page(page, queryWrapper);
PageDto<RoleVo> pageDto = PageDto.of(rolePage, RoleVo::of);
// 返回成功
logger.info("查询角色列表成功。");
rsp.setCode(ResponseCode.OK.getCode());
rsp.setMessage("查询角色列表成功。");
// 返回用户数据
rsp.setReturnData(pageDto);
return convertJsonString(rsp);
} catch (Exception e) {
// 回滚事务
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
logger.info("查询角色列表失败:{}", convertJsonString(e));
// 返回其他异常
rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("查询角色列表失败。");
return convertJsonString(rsp);
}
}
/**
* 获取角色options
*
* @param roleQuery 查询参数
* @return 结果
*/
@PostMapping("/getRoleOptions")
@ResponseBody
@Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED)
@MyLog(logTitle = "获取角色options", logMethod = "getRoleOptions")
public String getRoleOptions(@RequestBody RoleQuery roleQuery) {
// 创建响应信息
ResponseEntity rsp = new ResponseEntity();
try {
if (roleQuery.getRoleId() == null || roleQuery.getRoleId() != 1) {
// 返回错误
rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("操作人员必须是管理员级别。");
return convertJsonString(rsp);
}
// 查询roleId低于当前查询的roleId的用户
LambdaQueryWrapper<Role> queryWrapper = new LambdaQueryWrapper<Role>()
.ge(Role::getRoleId, roleQuery.getRoleId())
.orderByAsc(Role::getRoleId);
List<Role> roleList = roleService.list(queryWrapper);
List<RoleOption> roleOptions = roleList.stream().map(RoleOption::of).toList();
// 返回成功
rsp.setCode(ResponseCode.OK.getCode());
rsp.setMessage("查询角色列表成功。");
// 返回用户数据
rsp.setReturnData(roleOptions);
return convertJsonString(rsp);
} catch (Exception e) {
// 回滚事务
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
logger.info("获取角色options失败{}", convertJsonString(e));
// 返回其他异常
rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("获取角色options。");
return convertJsonString(rsp);
}
}
/**
* 获取权限列表
*
* @param permissionQuery 查询参数
* @return 结果
*/
@PostMapping("/getPermissionList")
@ResponseBody
@Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED)
@MyLog(logTitle = "获取权限列表", logMethod = "getPermissionList")
public String getPermissionList(@RequestBody PermissionQuery permissionQuery) {
logger.info("获取权限列表,请求用户名:{}登录ip{}", permissionQuery.getUserName(), HttpUtils.getIpAddr(servletRequest));
// 创建响应信息
ResponseEntity rsp = new ResponseEntity();
try {
if (permissionQuery.getRoleId1() == null || permissionQuery.getRoleId1() != 1) {
logger.error("操作人员必须是管理员级别。");
// 返回错误
rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("操作人员必须是管理员级别。");
return convertJsonString(rsp);
}
// 获取所有的菜单信息
List<Permission> permissionList = permissionService.list(
new LambdaQueryWrapper<Permission>().eq(Permission::getRoleId, permissionQuery.getRoleId1()).orderByAsc(Permission::getMenuId)
);
if (permissionList == null || permissionList.isEmpty()) {
logger.error("操作人员的角色没有权限。");
// 返回错误
rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("操作人员的角色没有权限。");
return convertJsonString(rsp);
}
List<String> menuIds = permissionList.stream().map(Permission::getMenuId).distinct().toList();
// 查询所有的菜单
List<Menu> menuList = menuService.list(
new LambdaQueryWrapper<Menu>().in(Menu::getMenuId, menuIds).orderByAsc(Menu::getMenuId)
);
// 先添加一级菜单
List<MenuVo> level1Menus = menuList.stream().filter(menu -> Objects.equals(menu.getParentId(), WmsConstants.ROOT_MENU_ID)).map(MenuVo::of).toList();
// 添加二级菜单
for (MenuVo level1Menu : level1Menus) {
level1Menu.setChildren(menuList.stream().filter(menu -> Objects.equals(menu.getParentId(), level1Menu.getId())).map(MenuVo::of).toList());
}
PermissionVo permissionVo = new PermissionVo();
permissionVo.setMenu(level1Menus);
// 获取待查询角色所有菜单权限
if (permissionQuery.getRoleId2() != null) {
List<Permission> permissionListOfTarget = permissionService.list(
new LambdaQueryWrapper<Permission>()
.eq(Permission::getRoleId, permissionQuery.getRoleId2())
.notIn(Permission::getMenuId, level1Menus.stream().map(MenuVo::getId).distinct().toList())
.orderByAsc(Permission::getMenuId)
);
permissionVo.setMenuIds(permissionListOfTarget.stream().map(Permission::getMenuId).distinct().toList());
} else {
permissionVo.setMenuIds(new ArrayList<>());
}
logger.info("查询权限列表成功。");
rsp.setCode(ResponseCode.OK.getCode());
rsp.setMessage("查询权限列表成功。");
// 返回用户数据
rsp.setReturnData(permissionVo);
return convertJsonString(rsp);
} catch (Exception e) {
// 回滚事务
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
// 返回其他异常
logger.error("查询权限列表异常:{}", convertJsonString(e));
rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("查询权限列表异常。");
return convertJsonString(rsp);
}
}
/**
* 更新角色信息
*
* @param roleUpdateForm 更新参数
* @return 结果
*/
@PostMapping("/updateRoleInfo")
@ResponseBody
@Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED)
@MyLog(logTitle = "更新角色信息", logMethod = "updateRoleInfo")
public String updateRoleInfo(@RequestBody RoleUpdateForm roleUpdateForm) {
logger.info("更新角色信息,请求用户名:{}登录ip{}", roleUpdateForm.getUserName(), HttpUtils.getIpAddr(servletRequest));
// 创建响应信息
ResponseEntity rsp = new ResponseEntity();
try {
if (roleUpdateForm.getRoleId1() == null || roleUpdateForm.getRoleId2() == null) {
logger.error("请求操作的roleId和被操作的roleId必须输入。");
// 返回错误
rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("请求操作的roleId和被操作的roleId必须输入。");
return convertJsonString(rsp);
}
if (roleUpdateForm.getRoleId1() != 1) {
logger.error("操作人员必须是管理员级别。");
// 返回错误
rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("操作人员必须是管理员级别。");
return convertJsonString(rsp);
}
// 更新角色信息
if (StringUtils.isNotEmpty(roleUpdateForm.getRole2Name())) {
roleService.update(new LambdaUpdateWrapper<Role>().set(Role::getRoleName, roleUpdateForm.getRole2Name()).eq(Role::getRoleId, roleUpdateForm.getRoleId2()));
}
// 获取所有的菜单信息
List<Permission> permissionList = permissionService.list(
new LambdaQueryWrapper<Permission>().eq(Permission::getRoleId, roleUpdateForm.getRoleId1()).orderByAsc(Permission::getMenuId)
);
if (permissionList == null || permissionList.isEmpty()) {
logger.error("操作人员的角色没有权限。");
// 返回错误
rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("操作人员的角色没有权限。");
return convertJsonString(rsp);
}
List<String> menuIds = permissionList.stream().map(Permission::getMenuId).distinct().toList();
List<String> updateMenuIds = roleUpdateForm.getMenuIds();
for (String menuId : updateMenuIds) {
if (!menuIds.contains(menuId)) {
logger.error("设定的权限超过操作人员所拥有的权限。");
// 返回错误
rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("设定的权限超过操作人员所拥有的权限。");
return convertJsonString(rsp);
}
}
// 查询所有的菜单
List<Menu> menuList = menuService.list(
new LambdaQueryWrapper<Menu>().in(Menu::getMenuId, updateMenuIds).orderByAsc(Menu::getMenuId)
);
for (Menu menu : menuList) {
if (menu.getParentId() != null && !menu.getParentId().equals(WmsConstants.ROOT_MENU_ID) && !updateMenuIds.contains(menu.getParentId())) {
updateMenuIds.add(menu.getParentId());
}
}
// 移除角色所有权限
permissionService.remove(new LambdaQueryWrapper<Permission>().eq(Permission::getRoleId, roleUpdateForm.getRoleId2()));
// 添加权限
List<Permission> updatePermissionList = new ArrayList<>();
for (String menuId : updateMenuIds) {
// 添加权限
Permission permission = new Permission();
permission.setRoleId(roleUpdateForm.getRoleId2());
permission.setMenuId(menuId);
updatePermissionList.add(permission);
}
if (permissionService.saveBatch(updatePermissionList)) {
// 返回成功
logger.info("更新角色信息成功。");
rsp.setCode(ResponseCode.OK.getCode());
rsp.setMessage("更新角色信息成功。");
} else {
// 返回失败
logger.error("更新角色权限失败。");
rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("更新角色权限失败。");
}
return convertJsonString(rsp);
} catch (Exception e) {
// 回滚事务
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
logger.info("更新角色信息失败:{}", convertJsonString(e));
// 返回其他异常
rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("更新角色信息失败。");
return convertJsonString(rsp);
}
}
/**
* 添加角色信息
*
* @param roleUpdateForm 添加参数
* @return 结果
*/
@PostMapping("/addRoleInfo")
@ResponseBody
@Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED)
@MyLog(logTitle = "添加角色信息", logMethod = "addRoleInfo")
public String addRoleInfo(@RequestBody RoleUpdateForm roleUpdateForm) {
logger.info("添加角色信息,请求用户名:{}登录ip{}", roleUpdateForm.getUserName(), HttpUtils.getIpAddr(servletRequest));
// 创建响应信息
ResponseEntity rsp = new ResponseEntity();
try {
if (roleUpdateForm.getRoleId1() == null || roleUpdateForm.getRoleId1() != 1) {
logger.error("操作人员必须是管理员级别。");
// 返回错误
rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("操作人员必须是管理员级别。");
return convertJsonString(rsp);
}
// 添加角色信息
Role role = new Role();
role.setRoleId(roleService.getOne(new LambdaQueryWrapper<Role>().select(Role::getRoleId).orderByDesc(Role::getRoleId).last("limit 1")).getRoleId() + 1);
role.setRoleName(roleUpdateForm.getRole2Name());
if (!roleService.save(role)) {
// 添加失败
logger.error("添加角色信息失败。");
// 返回错误
rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("添加角色信息失败。");
return convertJsonString(rsp);
}
// 获取所有的菜单信息
List<Permission> permissionList = permissionService.list(
new LambdaQueryWrapper<Permission>().eq(Permission::getRoleId, roleUpdateForm.getRoleId1()).orderByAsc(Permission::getMenuId)
);
if (permissionList == null || permissionList.isEmpty()) {
logger.error("操作人员的角色没有权限。");
// 返回错误
rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("操作人员的角色没有权限。");
return convertJsonString(rsp);
}
List<String> menuIds = permissionList.stream().map(Permission::getMenuId).distinct().toList();
List<String> updateMenuIds = roleUpdateForm.getMenuIds();
for (String menuId : updateMenuIds) {
if (!menuIds.contains(menuId)) {
logger.error("设定的权限超过操作人员所拥有的权限。");
// 返回错误
rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("设定的权限超过操作人员所拥有的权限。");
return convertJsonString(rsp);
}
}
// 查询所有的菜单
List<Menu> menuList = menuService.list(
new LambdaQueryWrapper<Menu>().in(Menu::getMenuId, updateMenuIds).orderByAsc(Menu::getMenuId)
);
for (Menu menu : menuList) {
if (menu.getParentId() != null && !menu.getParentId().equals(WmsConstants.ROOT_MENU_ID) && !updateMenuIds.contains(menu.getParentId())) {
updateMenuIds.add(menu.getParentId());
}
}
// 移除角色所有权限
permissionService.remove(new LambdaQueryWrapper<Permission>().eq(Permission::getRoleId, role.getRoleId()));
// 添加权限
List<Permission> updatePermissionList = new ArrayList<>();
for (String menuId : updateMenuIds) {
// 添加权限
Permission permission = new Permission();
permission.setRoleId(role.getRoleId());
permission.setMenuId(menuId);
updatePermissionList.add(permission);
}
if (permissionService.saveBatch(updatePermissionList)) {
// 返回成功
logger.info("添加角色信息成功。");
rsp.setCode(ResponseCode.OK.getCode());
rsp.setMessage("添加角色信息成功。");
} else {
// 返回失败
logger.error("添加角色权限失败。");
rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("添加角色权限失败。");
}
return convertJsonString(rsp);
} catch (Exception e) {
// 回滚事务
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
logger.info("添加角色信息失败:{}", convertJsonString(e));
// 返回其他异常
rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("添加角色信息失败。");
return convertJsonString(rsp);
}
}
/**
* 删除角色信息
*
* @param roleUpdateForm 更新参数
* @return 结果
*/
@PostMapping("/deleteRoleInfo")
@ResponseBody
@Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED)
@MyLog(logTitle = "删除角色信息", logMethod = "deleteRoleInfo")
public String deleteRoleInfo(@RequestBody RoleUpdateForm roleUpdateForm) {
logger.info("删除角色信息,请求用户名:{}登录ip{}", roleUpdateForm.getUserName(), HttpUtils.getIpAddr(servletRequest));
// 创建响应信息
ResponseEntity rsp = new ResponseEntity();
try {
if (roleUpdateForm.getRoleId1() == null || roleUpdateForm.getRoleId2() == null) {
logger.error("请求操作的roleId和被操作的roleId必须输入。");
// 返回错误
rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("请求操作的roleId和被操作的roleId必须输入。");
return convertJsonString(rsp);
}
if (roleUpdateForm.getRoleId1() != 1) {
logger.error("操作人员必须是管理员级别。");
// 返回错误
rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("操作人员必须是管理员级别。");
return convertJsonString(rsp);
}
// 删除角色信息
roleService.remove(new LambdaQueryWrapper<Role>().eq(Role::getRoleId, roleUpdateForm.getRoleId2()));
// 移除角色所有权限
permissionService.remove(new LambdaQueryWrapper<Permission>().eq(Permission::getRoleId, roleUpdateForm.getRoleId2()));
// 返回成功
logger.info("删除角色信息成功。");
rsp.setCode(ResponseCode.OK.getCode());
rsp.setMessage("删除角色信息成功。");
return convertJsonString(rsp);
} catch (Exception e) {
// 回滚事务
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
logger.info("删除角色信息失败:{}", convertJsonString(e));
// 返回其他异常
rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("删除角色信息失败。");
return convertJsonString(rsp);
}
}
/**
* 更新用户信息
*
* @param userUpdateForm 更新参数
* @return 结果
*/
@PostMapping("/updateUserInfo")
@ResponseBody
@Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED)
@MyLog(logTitle = "更新用户信息", logMethod = "updateUserInfo")
public String updateUserInfo(@RequestBody UserUpdateForm userUpdateForm) {
logger.info("更新用户信息,请求用户名:{}登录ip{}", userUpdateForm.getUserName(), HttpUtils.getIpAddr(servletRequest));
// 创建响应信息
ResponseEntity rsp = new ResponseEntity();
try {
if (userUpdateForm.getRoleId1() == null || userUpdateForm.getRoleId1() != 1) {
logger.error("操作人员必须是管理员级别。");
// 返回错误
rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("操作人员必须是管理员级别。");
return convertJsonString(rsp);
}
if (userUpdateForm.getUserIdUpdate() == null) {
logger.error("缺少用户id。");
// 返回错误
rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("缺少用户id。");
return convertJsonString(rsp);
}
// 更新用户信息
User updateUser = userService.getById(userUpdateForm.getUserIdUpdate());
if (updateUser == null) {
logger.error("用户不存在。");
// 返回错误
rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("用户不存在。");
return convertJsonString(rsp);
}
if (StringUtils.isNotEmpty(userUpdateForm.getUserNameUpdate())) {
updateUser.setUserName(userUpdateForm.getUserNameUpdate());
}
if (StringUtils.isNotEmpty(userUpdateForm.getLoginAccountUpdate())) {
updateUser.setLoginAccount(userUpdateForm.getLoginAccountUpdate());
}
if (userUpdateForm.getRoleIdUpdate() != null) {
updateUser.setRoleId(userUpdateForm.getRoleIdUpdate());
}
updateUser.setUpdateTime(LocalDateTime.now());
if (userService.updateById(updateUser)) {
logger.info("更新用户信息成功。");
rsp.setCode(ResponseCode.OK.getCode());
rsp.setMessage("更新用户信息成功。");
} else {
logger.error("更新用户信息失败。");
// 返回错误
rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("更新用户信息失败。");
}
return convertJsonString(rsp);
} catch (Exception e) {
// 回滚事务
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
logger.info("更新用户信息失败:{}", convertJsonString(e));
// 返回其他异常
rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("更新用户信息失败。");
return convertJsonString(rsp);
}
}
/**
* 添加用户信息
*
* @param userUpdateForm 添加参数
* @return 结果
*/
@PostMapping("/addUserInfo")
@ResponseBody
@Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED)
@MyLog(logTitle = "添加用户信息", logMethod = "addUserInfo")
public String addUserInfo(@RequestBody UserUpdateForm userUpdateForm) {
logger.info("添加用户信息,请求用户名:{}登录ip{}", userUpdateForm.getUserName(), HttpUtils.getIpAddr(servletRequest));
// 创建响应信息
ResponseEntity rsp = new ResponseEntity();
try {
if (userUpdateForm.getRoleId1() == null || userUpdateForm.getRoleId1() != 1) {
logger.error("操作人员必须是管理员级别。");
// 返回错误
rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("操作人员必须是管理员级别。");
return convertJsonString(rsp);
}
if (StringUtils.isEmpty(userUpdateForm.getUserNameUpdate())) {
logger.error("请输入用户名。");
// 返回错误
rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("请输入用户名。");
return convertJsonString(rsp);
}
if (StringUtils.isEmpty(userUpdateForm.getLoginAccountUpdate())) {
logger.error("请输入登录账号。");
// 返回错误
rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("请输入登录账号。");
return convertJsonString(rsp);
}
if (userUpdateForm.getRoleIdUpdate() == null) {
logger.error("请选择角色。");
// 返回错误
rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("请选择角色。");
return convertJsonString(rsp);
}
// 判断loginAccount是否重复
if (userService.exists(new LambdaQueryWrapper<User>().eq(User::getLoginAccount, userUpdateForm.getLoginAccountUpdate()))) {
logger.error("登录账号重复。");
// 返回错误
rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("登录账号重复。");
return convertJsonString(rsp);
}
// 添加角色信息
User newUser = new User();
newUser.setUserId(userService.getOne(new LambdaQueryWrapper<User>().select(User::getUserId).orderByDesc(User::getUserId).last("limit 1")).getUserId() + 1);
newUser.setUserName(userUpdateForm.getUserNameUpdate());
newUser.setLoginAccount(userUpdateForm.getLoginAccountUpdate());
if (StringUtils.isEmpty(userUpdateForm.getLoginPasswordUpdate())) {
newUser.setLoginPassword("");
} else {
newUser.setLoginPassword(MyPassword.encrypt(userUpdateForm.getLoginPasswordUpdate()));
}
newUser.setRoleId(userUpdateForm.getRoleIdUpdate());
newUser.setAddTime(LocalDateTime.now());
newUser.setUpdateTime(LocalDateTime.now());
newUser.setAddUser(userUpdateForm.getUserName());
if (userService.save(newUser)) {
logger.info("添加用户信息成功。");
rsp.setCode(ResponseCode.OK.getCode());
rsp.setMessage("添加用户信息成功。");
} else {
logger.error("添加用户信息失败。");
// 返回错误
rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("添加用户信息失败。");
}
return convertJsonString(rsp);
} catch (Exception e) {
// 回滚事务
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
logger.info("添加用户信息失败:{}", convertJsonString(e));
// 返回其他异常
rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("添加用户信息失败。");
return convertJsonString(rsp);
}
}
/**
* 删除用户信息
*
* @param userUpdateForm 删除参数
* @return 结果
*/
@PostMapping("/deleteUserInfo")
@ResponseBody
@Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED)
@MyLog(logTitle = "删除用户信息", logMethod = "deleteUserInfo")
public String deleteUserInfo(@RequestBody UserUpdateForm userUpdateForm) {
logger.info("删除用户信息,请求用户名:{}登录ip{}", userUpdateForm.getUserName(), HttpUtils.getIpAddr(servletRequest));
// 创建响应信息
ResponseEntity rsp = new ResponseEntity();
try {
if (userUpdateForm.getRoleId1() == null || userUpdateForm.getRoleId1() != 1) {
logger.error("操作人员必须是管理员级别。");
// 返回错误
rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("操作人员必须是管理员级别。");
return convertJsonString(rsp);
}
if (userUpdateForm.getUserIdUpdate() == null) {
logger.error("缺少用户id。");
// 返回错误
rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("缺少用户id。");
return convertJsonString(rsp);
}
// 删除用户信息
if (userService.remove(new LambdaQueryWrapper<User>().eq(User::getUserId, userUpdateForm.getUserIdUpdate()))) {
logger.info("删除用户信息成功。");
rsp.setCode(ResponseCode.OK.getCode());
rsp.setMessage("删除用户信息成功。");
} else {
logger.error("删除用户信息失败。");
// 返回错误
rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("删除用户信息失败。");
}
return convertJsonString(rsp);
} catch (Exception e) {
// 回滚事务
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
logger.info("删除用户信息失败:{}", convertJsonString(e));
// 返回其他异常
rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("删除用户信息失败。");
return convertJsonString(rsp);
}
}
} }

View File

@ -0,0 +1,20 @@
package com.wms.entity.app.request;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
@Data
public class PermissionQuery extends PageQuery {
/**
* 角色id1
*/
@JsonProperty("roleId1")
private Integer roleId1;
/**
* 角色id2
*/
@JsonProperty("roleId2")
private Integer roleId2;
}

View File

@ -0,0 +1,20 @@
package com.wms.entity.app.request;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
@Data
public class RoleQuery extends PageQuery {
/**
* 角色id
*/
@JsonProperty("roleId")
private Integer roleId;
/**
* 角色名称
*/
@JsonProperty("roleName")
private String roleName;
}

View File

@ -0,0 +1,35 @@
package com.wms.entity.app.request;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
/**
* 更新角色信息 请求
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class RoleUpdateForm extends PageQuery {
/**
* 角色id1
*/
@JsonProperty("roleId1")
private Integer roleId1;
/**
* 角色id2
*/
@JsonProperty("roleId2")
private Integer roleId2;
/**
* 角色名2
*/
@JsonProperty("role2Name")
private String role2Name;
/**
* 权限列表
*/
@JsonProperty("menuIds")
private List<String> menuIds;
}

View File

@ -0,0 +1,45 @@
package com.wms.entity.app.request;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
/**
* 更新角色信息 请求
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class UserUpdateForm extends PageQuery {
/**
* 角色id1
*/
@JsonProperty("roleId1")
private Integer roleId1;
/**
* 角色id2
*/
@JsonProperty("roleIdUpdate")
private Integer roleIdUpdate;
/**
* 用户id
*/
@JsonProperty("userIdUpdate")
private Integer userIdUpdate;
/**
* 用户名
*/
@JsonProperty("userNameUpdate")
private String userNameUpdate;
/**
* 登录账号
*/
@JsonProperty("loginAccountUpdate")
private String loginAccountUpdate;
/**
* 登录密码
*/
@JsonProperty("loginPasswordUpdate")
private String loginPasswordUpdate;
}

View File

@ -0,0 +1,39 @@
package com.wms.entity.app.vo;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.wms.entity.table.Menu;
import lombok.Data;
import java.util.List;
@Data
public class MenuVo {
/**
* 菜单id
*/
@JsonProperty("id")
private String id;
/**
* 菜单名称
*/
@JsonProperty("label")
private String label;
/**
* 子菜单
*/
@JsonProperty("children")
private List<MenuVo> children;
/**
* 将菜单对象转换为菜单视图对象
* @param menu 菜单对象
* @return 菜单
*/
public static MenuVo of(Menu menu) {
MenuVo menuVo = new MenuVo();
menuVo.setId(menu.getMenuId());
menuVo.setLabel(menu.getLabelName());
return menuVo;
}
}

View File

@ -0,0 +1,20 @@
package com.wms.entity.app.vo;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.util.List;
@Data
public class PermissionVo {
/**
* 请求角色的所有menuId
*/
@JsonProperty("menu")
private List<MenuVo> menu;
/**
* 待查询角色的menuId列表
*/
@JsonProperty("menuIds")
private List<String> menuIds;
}

View File

@ -0,0 +1,31 @@
package com.wms.entity.app.vo;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.wms.entity.table.Role;
import lombok.Data;
@Data
public class RoleOption {
/**
* 标签
*/
@JsonProperty("label")
private String label;
/**
*
*/
@JsonProperty("value")
private Integer value;
/**
* 将角色对象转化为角色选项对象
* @param role 角色
* @return 结果
*/
public static RoleOption of(Role role) {
RoleOption roleOption = new RoleOption();
roleOption.setLabel(role.getRoleName());
roleOption.setValue(role.getRoleId());
return roleOption;
}
}

View File

@ -0,0 +1,31 @@
package com.wms.entity.app.vo;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.wms.entity.table.Role;
import lombok.Data;
@Data
public class RoleVo {
/**
* 角色id
*/
@JsonProperty("roleId")
private Integer roleId;
/**
* 角色名称
*/
@JsonProperty("roleName")
private String roleName;
/**
* 从数据库实体转换为前端显示
* @param rolePo 数据库实体
* @return excel对象
*/
public static RoleVo of(Role rolePo) {
RoleVo roleVo = new RoleVo();
roleVo.setRoleId(rolePo.getRoleId());
roleVo.setRoleName(rolePo.getRoleName());
return roleVo;
}
}

View File

@ -0,0 +1,59 @@
package com.wms.entity.app.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.wms.entity.table.User;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
@Data
public class UserVo {
/** 用户ID */
@JsonProperty("userId")
private Integer userId;
/** 用户名 */
@JsonProperty("userName")
private String userName;
/** 角色Id */
@JsonProperty("roleId")
private Integer roleId;
/** 登录账户 */
@JsonProperty("loginAccount")
private String loginAccount;
/** 登录密码 */
@JsonProperty("loginPassword")
private String loginPassword;
/** 添加时间 */
@JsonProperty("addTime")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime addTime;
/** 更新时间 */
@JsonProperty("updateTime")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime updateTime;
/** 添加用户名 */
@JsonProperty("addUser")
private String addUser;
/**
* 从数据库实体转换为前端显示
* @param userPo 数据库实体
* @return excel对象
*/
public static UserVo of(User userPo) {
UserVo userVo = new UserVo();
userVo.setUserId(userPo.getUserId());
userVo.setUserName(userPo.getUserName());
userVo.setRoleId(userPo.getRoleId());
userVo.setLoginAccount(userPo.getLoginAccount());
userVo.setLoginPassword("*********");
userVo.setAddTime(userPo.getAddTime());
userVo.setUpdateTime(userPo.getUpdateTime());
userVo.setAddUser(userPo.getAddUser());
return userVo;
}
}

View File

@ -9,7 +9,7 @@ import lombok.Data;
* 菜单 * 菜单
*/ */
@Data @Data
@TableName(value = "tbl_app_menu", autoResultMap = true) @TableName(value = "tbl_sys_menu", autoResultMap = true)
public class Menu { public class Menu {
/** /**
* 菜单Id * 菜单Id

View File

@ -0,0 +1,27 @@
package com.wms.entity.table;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@Data
@TableName(value = "tbl_sys_permission", autoResultMap = true)
public class Permission {
/**
* 权限id
*/
@TableId(value = "permission_id", type = IdType.AUTO)
private Integer permissionId;
/**
* 菜单id
*/
@TableField("menu_id")
private String menuId;
/**
* 角色id
*/
@TableField("role_id")
private Integer roleId;
}

View File

@ -0,0 +1,22 @@
package com.wms.entity.table;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@Data
@TableName(value = "tbl_sys_role", autoResultMap = true)
public class Role {
/**
* 角色id
*/
@TableId(value = "role_id", type = IdType.AUTO)
private Integer roleId;
/**
* 角色名称
*/
@TableField("role_name")
private String roleName;
}

View File

@ -0,0 +1,9 @@
package com.wms.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.wms.entity.table.Permission;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface PermissionMapper extends BaseMapper<Permission> {
}

View File

@ -0,0 +1,9 @@
package com.wms.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.wms.entity.table.Role;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface RoleMapper extends BaseMapper<Role> {
}

View File

@ -0,0 +1,7 @@
package com.wms.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.wms.entity.table.Permission;
public interface PermissionService extends IService<Permission> {
}

View File

@ -0,0 +1,10 @@
package com.wms.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.wms.entity.table.Role;
/**
* 角色服务类
*/
public interface RoleService extends IService<Role> {
}

View File

@ -0,0 +1,11 @@
package com.wms.service.serviceImplements;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.wms.entity.table.Permission;
import com.wms.mapper.PermissionMapper;
import com.wms.service.PermissionService;
import org.springframework.stereotype.Service;
@Service
public class PermissionServiceImpl extends ServiceImpl<PermissionMapper, Permission> implements PermissionService {
}

View File

@ -0,0 +1,11 @@
package com.wms.service.serviceImplements;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.wms.entity.table.Role;
import com.wms.mapper.RoleMapper;
import com.wms.service.RoleService;
import org.springframework.stereotype.Service;
@Service
public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements RoleService {
}

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.wms.mapper.PermissionMapper">
</mapper>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.wms.mapper.RoleMapper">
</mapper>