mirror of
https://github.com/BgaSol/sol-cloud
synced 2026-05-23 09:08:46 +00:00
Merge remote-tracking branch 'origin/main'
# Conflicts: # cloud/web/web-system-8081/src/main/java/com/bgasol/web/system/menu/service/MenuService.java
This commit is contained in:
commit
c69c27fd06
7 changed files with 134 additions and 7 deletions
|
|
@ -3,6 +3,7 @@ package com.bgasol.web.system.department.service;
|
|||
import cn.dev33.satoken.stp.StpUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.bgasol.common.core.base.dto.BasePageDto;
|
||||
import com.bgasol.common.core.base.entity.BaseTreeEntity;
|
||||
import com.bgasol.common.core.base.service.BaseService;
|
||||
import com.bgasol.model.system.department.entity.DepartmentEntity;
|
||||
import com.bgasol.web.system.department.mapper.DepartmentMapper;
|
||||
|
|
@ -15,6 +16,12 @@ import org.springframework.context.annotation.Lazy;
|
|||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.bgasol.common.constant.value.SystemConfigValues.DEFAULT_DEPARTMENT_ID;
|
||||
|
||||
@Service
|
||||
|
|
@ -63,4 +70,36 @@ public class DepartmentService extends BaseService<DepartmentEntity, BasePageDto
|
|||
}
|
||||
return this.findById(DEFAULT_DEPARTMENT_ID);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer delete(String id) {
|
||||
DepartmentEntity department = this.findById(id);
|
||||
if (ObjectUtils.isEmpty(department)){
|
||||
return 1;
|
||||
}
|
||||
HashSet<String> deptIds = new HashSet<>();
|
||||
deptIds.add(id);
|
||||
|
||||
List<DepartmentEntity> departments = findTreeAll(id, null);
|
||||
collectDeleteIds(departments, deptIds);
|
||||
|
||||
deptIds.forEach(super::delete);
|
||||
return 1;
|
||||
}
|
||||
|
||||
private void collectDeleteIds(List<DepartmentEntity> departments, HashSet<String> ids) {
|
||||
List<DepartmentEntity> departmentEntityList = departments.stream()
|
||||
.filter(e -> !e.getChildren().isEmpty())
|
||||
.flatMap(e -> e.getChildren().stream())
|
||||
.toList();
|
||||
|
||||
// 将当前层级子部门的ID添加到删除集合中
|
||||
departmentEntityList.forEach(dept -> ids.add(dept.getId()));
|
||||
departments.forEach(dept -> ids.add(dept.getId()));
|
||||
|
||||
if (!departmentEntityList.isEmpty()) {
|
||||
// 递归处理下一层级的子部门
|
||||
this.collectDeleteIds(departmentEntityList, ids);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|||
import com.bgasol.common.constant.value.SystemConfigValues;
|
||||
import com.bgasol.common.core.base.dto.BasePageDto;
|
||||
import com.bgasol.common.core.base.service.BaseService;
|
||||
import com.bgasol.model.system.department.entity.DepartmentEntity;
|
||||
import com.bgasol.model.system.menu.entity.MenuEntity;
|
||||
import com.bgasol.model.system.user.entity.UserEntity;
|
||||
import com.bgasol.web.system.menu.mapper.MenuMapper;
|
||||
|
|
@ -152,8 +153,34 @@ public class MenuService extends BaseService<MenuEntity, BasePageDto<MenuEntity>
|
|||
|
||||
@Override
|
||||
public Integer delete(String id) {
|
||||
List<MenuEntity> treeAll = this.findTreeAll(id, null);
|
||||
// 递归删除所有子菜单
|
||||
return super.delete(id);
|
||||
MenuEntity menuEntity = this.findById(id);
|
||||
if (ObjectUtils.isEmpty(menuEntity)) {
|
||||
return 1;
|
||||
}
|
||||
HashSet<String> menuIds = new HashSet<>();
|
||||
menuIds.add(id);
|
||||
List<MenuEntity> menus = findTreeAll(id, null);
|
||||
collectDeleteIds(menus, menuIds);
|
||||
menuIds.forEach(menuId -> {
|
||||
this.menuMapper.deleteFromTable("system_c_role_menu", "menu_id", menuId);
|
||||
super.delete(menuId);
|
||||
});
|
||||
return 1;
|
||||
}
|
||||
|
||||
private void collectDeleteIds(List<MenuEntity> menus, Set<String> ids) {
|
||||
List<MenuEntity> menuEntityList = menus.stream()
|
||||
.filter(e -> !e.getChildren().isEmpty())
|
||||
.flatMap(e -> e.getChildren().stream())
|
||||
.toList();
|
||||
|
||||
// 将当前层级子部门的ID添加到删除集合中
|
||||
menuEntityList.forEach(e -> ids.add(e.getId()));
|
||||
menus.forEach(e -> ids.add(e.getId()));
|
||||
|
||||
if (!menuEntityList.isEmpty()) {
|
||||
// 递归处理下一层级的子部门
|
||||
this.collectDeleteIds(menuEntityList, ids);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,13 +2,18 @@ package com.bgasol.web.system.permission.service;
|
|||
|
||||
import com.bgasol.common.core.base.dto.BasePageDto;
|
||||
import com.bgasol.common.core.base.service.BaseService;
|
||||
import com.bgasol.model.system.menu.entity.MenuEntity;
|
||||
import com.bgasol.model.system.permission.entity.PermissionEntity;
|
||||
import com.bgasol.web.system.permission.mapper.PermissionMapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.redisson.api.RedissonClient;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@Transactional
|
||||
|
|
@ -42,4 +47,37 @@ public class PermissionService extends BaseService<PermissionEntity, BasePageDto
|
|||
}
|
||||
return this.findById(parentPermission.getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer delete(String id) {
|
||||
PermissionEntity permissionEntity = this.findById(id);
|
||||
if (ObjectUtils.isEmpty(permissionEntity)) {
|
||||
return 1;
|
||||
}
|
||||
HashSet<String> permissionIds = new HashSet<>();
|
||||
permissionIds.add(id);
|
||||
List<PermissionEntity> permissions = findTreeAll(id, null);
|
||||
collectDeleteIds(permissions, permissionIds);
|
||||
permissionIds.forEach(e -> {
|
||||
this.permissionMapper.deleteFromTable("system_c_role_permission", "permission_id", e);
|
||||
super.delete(e);
|
||||
});
|
||||
return 1;
|
||||
}
|
||||
|
||||
private void collectDeleteIds(List<PermissionEntity> permissions, HashSet<String> ids) {
|
||||
List<PermissionEntity> permissionEntityList = permissions.stream()
|
||||
.filter(e -> !e.getChildren().isEmpty())
|
||||
.flatMap(e -> e.getChildren().stream())
|
||||
.toList();
|
||||
|
||||
// 将当前层级子部门的ID添加到删除集合中
|
||||
permissionEntityList.forEach(e -> ids.add(e.getId()));
|
||||
permissions.forEach(e -> ids.add(e.getId()));
|
||||
|
||||
if (!permissionEntityList.isEmpty()) {
|
||||
// 递归处理下一层级的子部门
|
||||
this.collectDeleteIds(permissionEntityList, ids);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -65,4 +65,12 @@ public class RoleService extends BaseService<RoleEntity, BasePageDto<RoleEntity>
|
|||
roleEntity.setMenus(menuEntities);
|
||||
super.findOtherTable(roleEntity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer delete(String id) {
|
||||
this.roleMapper.deleteFromTable("system_c_role_permission", "role_id", id);
|
||||
this.roleMapper.deleteFromTable("system_c_role_menu", "role_id", id);
|
||||
this.roleMapper.deleteFromTable("system_c_user_role", "role_id", id);
|
||||
return super.delete(id);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ public class UserController extends BaseController<
|
|||
|
||||
@PostMapping("/logout")
|
||||
@Operation(summary = "用户登出", operationId = "logout")
|
||||
@SaCheckPermission({"user:logout"})
|
||||
// @SaCheckPermission({"user:logout"})
|
||||
public BaseVo<?> logout() {
|
||||
this.loginService.logout();
|
||||
return BaseVo.success("登出成功");
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ import com.bgasol.web.system.user.mapper.UserMapper;
|
|||
import com.pig4cloud.captcha.ArithmeticCaptcha;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
|
@ -21,6 +22,8 @@ import org.springframework.transaction.annotation.Transactional;
|
|||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import static com.bgasol.common.constant.value.SystemConfigValues.ADMIN_USER_ID;
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@Transactional
|
||||
|
|
@ -81,9 +84,19 @@ public class LoginService {
|
|||
log.error("密码错误");
|
||||
throw new BaseException("用户名或密码错误");
|
||||
}
|
||||
if (userEntity.getLocked()) {
|
||||
log.error("用户已锁定");
|
||||
throw new BaseException("用户已锁定");
|
||||
|
||||
if (!ADMIN_USER_ID.equals(userEntity.getId())) {
|
||||
userEntity = this.userService.findById(userEntity.getId());
|
||||
if (userEntity.getLocked()) {
|
||||
log.error("用户已锁定");
|
||||
throw new BaseException("用户已锁定");
|
||||
}
|
||||
if (ObjectUtils.isEmpty(userEntity.getRoles())) {
|
||||
throw new BaseException("用户未绑定角色,无法登录");
|
||||
}
|
||||
if (ObjectUtils.isEmpty(userEntity.getDepartment())) {
|
||||
throw new BaseException("用户未绑定部门,无法登录");
|
||||
}
|
||||
}
|
||||
StpUtil.login(userEntity.getId());
|
||||
return StpUtil.getTokenInfo();
|
||||
|
|
|
|||
|
|
@ -53,6 +53,8 @@ public class UserService extends BaseService<UserEntity, UserPageDto> {
|
|||
public Integer delete(String id) {
|
||||
// 退出用户
|
||||
StpUtil.logout(id);
|
||||
// 删除用户关联角色-中间表
|
||||
this.userMapper.deleteFromTable("system_c_user_role", "user_id", id);
|
||||
return super.delete(id);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue