mirror of https://github.com/elunez/eladmin
parent
9de236d692
commit
7a2fbae8b6
|
@ -15,8 +15,6 @@
|
||||||
*/
|
*/
|
||||||
package me.zhengjie.utils;
|
package me.zhengjie.utils;
|
||||||
|
|
||||||
import me.zhengjie.exception.BadRequestException;
|
|
||||||
import org.hibernate.exception.ConstraintViolationException;
|
|
||||||
import java.io.PrintWriter;
|
import java.io.PrintWriter;
|
||||||
import java.io.StringWriter;
|
import java.io.StringWriter;
|
||||||
|
|
||||||
|
@ -36,16 +34,4 @@ public class ThrowableUtil {
|
||||||
return sw.toString();
|
return sw.toString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void throwForeignKeyException(Throwable e, String msg){
|
|
||||||
Throwable t = e.getCause();
|
|
||||||
while ((t != null) && !(t instanceof ConstraintViolationException)) {
|
|
||||||
t = t.getCause();
|
|
||||||
}
|
|
||||||
if (t != null) {
|
|
||||||
throw new BadRequestException(msg);
|
|
||||||
}
|
|
||||||
assert false;
|
|
||||||
throw new BadRequestException("删除失败");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -57,4 +57,13 @@ public interface RoleRepository extends JpaRepository<Role, Long>, JpaSpecificat
|
||||||
@Modifying
|
@Modifying
|
||||||
@Query(value = "delete from sys_roles_menus where menu_id = ?1",nativeQuery = true)
|
@Query(value = "delete from sys_roles_menus where menu_id = ?1",nativeQuery = true)
|
||||||
void untiedMenu(Long id);
|
void untiedMenu(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据部门查询
|
||||||
|
* @param deptIds /
|
||||||
|
* @return /
|
||||||
|
*/
|
||||||
|
@Query(value = "select count(1) from sys_role r, sys_roles_depts d where " +
|
||||||
|
"r.role_id = d.role_id and d.dept_id in ?1",nativeQuery = true)
|
||||||
|
int countByDepts(Set<Long> deptIds);
|
||||||
}
|
}
|
||||||
|
|
|
@ -95,4 +95,28 @@ public interface UserRepository extends JpaRepository<User, Long>, JpaSpecificat
|
||||||
* @param ids /
|
* @param ids /
|
||||||
*/
|
*/
|
||||||
void deleteAllByIdIn(Set<Long> ids);
|
void deleteAllByIdIn(Set<Long> ids);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据岗位查询
|
||||||
|
* @param ids /
|
||||||
|
* @return /
|
||||||
|
*/
|
||||||
|
@Query(value = "SELECT count(1) FROM sys_user u, sys_users_jobs j WHERE u.user_id = j.user_id AND j.job_id IN ?1", nativeQuery = true)
|
||||||
|
int countByJobs(Set<Long> ids);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据部门查询
|
||||||
|
* @param deptIds /
|
||||||
|
* @return /
|
||||||
|
*/
|
||||||
|
@Query(value = "SELECT count(1) FROM sys_user u WHERE u.dept_id IN ?1", nativeQuery = true)
|
||||||
|
int countByDepts(Set<Long> deptIds);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据角色查询
|
||||||
|
* @return /
|
||||||
|
*/
|
||||||
|
@Query(value = "SELECT count(1) FROM sys_user u, sys_users_roles r WHERE " +
|
||||||
|
"u.user_id = r.user_id AND r.role_id in ?1", nativeQuery = true)
|
||||||
|
int countByRoles(Set<Long> ids);
|
||||||
}
|
}
|
||||||
|
|
|
@ -113,11 +113,9 @@ public class DeptController {
|
||||||
deptDtos = deptService.getDeleteDepts(deptList, deptDtos);
|
deptDtos = deptService.getDeleteDepts(deptList, deptDtos);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
try {
|
// 验证是否被角色或用户关联
|
||||||
|
deptService.verification(deptDtos);
|
||||||
deptService.delete(deptDtos);
|
deptService.delete(deptDtos);
|
||||||
}catch (Throwable e){
|
|
||||||
ThrowableUtil.throwForeignKeyException(e, "所选部门中存在岗位或者角色关联,请取消关联后再试");
|
|
||||||
}
|
|
||||||
return new ResponseEntity<>(HttpStatus.OK);
|
return new ResponseEntity<>(HttpStatus.OK);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -89,11 +89,9 @@ public class JobController {
|
||||||
@DeleteMapping
|
@DeleteMapping
|
||||||
@PreAuthorize("@el.check('job:del')")
|
@PreAuthorize("@el.check('job:del')")
|
||||||
public ResponseEntity<Object> delete(@RequestBody Set<Long> ids){
|
public ResponseEntity<Object> delete(@RequestBody Set<Long> ids){
|
||||||
try {
|
// 验证是否被用户关联
|
||||||
|
jobService.verification(ids);
|
||||||
jobService.delete(ids);
|
jobService.delete(ids);
|
||||||
}catch (Throwable e){
|
|
||||||
ThrowableUtil.throwForeignKeyException(e, "所选岗位存在用户关联,请取消关联后再试");
|
|
||||||
}
|
|
||||||
return new ResponseEntity<>(HttpStatus.OK);
|
return new ResponseEntity<>(HttpStatus.OK);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -136,11 +136,9 @@ public class RoleController {
|
||||||
RoleDto role = roleService.findById(id);
|
RoleDto role = roleService.findById(id);
|
||||||
getLevels(role.getLevel());
|
getLevels(role.getLevel());
|
||||||
}
|
}
|
||||||
try {
|
// 验证是否被用户关联
|
||||||
|
roleService.verification(ids);
|
||||||
roleService.delete(ids);
|
roleService.delete(ids);
|
||||||
} catch (Throwable e){
|
|
||||||
ThrowableUtil.throwForeignKeyException(e, "所选角色存在用户关联,请取消关联后再试");
|
|
||||||
}
|
|
||||||
return new ResponseEntity<>(HttpStatus.OK);
|
return new ResponseEntity<>(HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -116,4 +116,10 @@ public interface DeptService {
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
List<Long> getDeptChildren(Long deptId, List<Dept> deptList);
|
List<Long> getDeptChildren(Long deptId, List<Dept> deptList);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 验证是否被角色或用户关联
|
||||||
|
* @param deptDtos /
|
||||||
|
*/
|
||||||
|
void verification(Set<DeptDto> deptDtos);
|
||||||
}
|
}
|
|
@ -79,4 +79,10 @@ public interface JobService {
|
||||||
* @throws IOException /
|
* @throws IOException /
|
||||||
*/
|
*/
|
||||||
void download(List<JobDto> queryAll, HttpServletResponse response) throws IOException;
|
void download(List<JobDto> queryAll, HttpServletResponse response) throws IOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 验证是否被用户关联
|
||||||
|
* @param ids /
|
||||||
|
*/
|
||||||
|
void verification(Set<Long> ids);
|
||||||
}
|
}
|
|
@ -120,4 +120,10 @@ public interface RoleService {
|
||||||
* @return 权限信息
|
* @return 权限信息
|
||||||
*/
|
*/
|
||||||
List<GrantedAuthority> mapToGrantedAuthorities(UserDto user);
|
List<GrantedAuthority> mapToGrantedAuthorities(UserDto user);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 验证是否被用户关联
|
||||||
|
* @param ids /
|
||||||
|
*/
|
||||||
|
void verification(Set<Long> ids);
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,6 +21,7 @@ import lombok.RequiredArgsConstructor;
|
||||||
import me.zhengjie.exception.BadRequestException;
|
import me.zhengjie.exception.BadRequestException;
|
||||||
import me.zhengjie.modules.system.domain.Dept;
|
import me.zhengjie.modules.system.domain.Dept;
|
||||||
import me.zhengjie.modules.system.domain.User;
|
import me.zhengjie.modules.system.domain.User;
|
||||||
|
import me.zhengjie.modules.system.repository.RoleRepository;
|
||||||
import me.zhengjie.modules.system.repository.UserRepository;
|
import me.zhengjie.modules.system.repository.UserRepository;
|
||||||
import me.zhengjie.modules.system.service.dto.DeptDto;
|
import me.zhengjie.modules.system.service.dto.DeptDto;
|
||||||
import me.zhengjie.modules.system.service.dto.DeptQueryCriteria;
|
import me.zhengjie.modules.system.service.dto.DeptQueryCriteria;
|
||||||
|
@ -57,6 +58,7 @@ public class DeptServiceImpl implements DeptService {
|
||||||
private final DeptMapper deptMapper;
|
private final DeptMapper deptMapper;
|
||||||
private final UserRepository userRepository;
|
private final UserRepository userRepository;
|
||||||
private final RedisUtils redisUtils;
|
private final RedisUtils redisUtils;
|
||||||
|
private final RoleRepository roleRepository;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<DeptDto> queryAll(DeptQueryCriteria criteria, Boolean isQuery) throws Exception {
|
public List<DeptDto> queryAll(DeptQueryCriteria criteria, Boolean isQuery) throws Exception {
|
||||||
|
@ -240,6 +242,17 @@ public class DeptServiceImpl implements DeptService {
|
||||||
deptRepository.updateSubCntById(count, deptId);
|
deptRepository.updateSubCntById(count, deptId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void verification(Set<DeptDto> deptDtos) {
|
||||||
|
Set<Long> deptIds = deptDtos.stream().map(DeptDto::getId).collect(Collectors.toSet());
|
||||||
|
if(userRepository.countByDepts(deptIds) > 0){
|
||||||
|
throw new BadRequestException("所选部门存在用户关联,请解除后再试!");
|
||||||
|
}
|
||||||
|
if(roleRepository.countByDepts(deptIds) > 0){
|
||||||
|
throw new BadRequestException("所选部门存在角色关联,请解除后再试!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 清理缓存
|
* 清理缓存
|
||||||
* @param id /
|
* @param id /
|
||||||
|
|
|
@ -16,8 +16,10 @@
|
||||||
package me.zhengjie.modules.system.service.impl;
|
package me.zhengjie.modules.system.service.impl;
|
||||||
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import me.zhengjie.exception.BadRequestException;
|
||||||
import me.zhengjie.exception.EntityExistException;
|
import me.zhengjie.exception.EntityExistException;
|
||||||
import me.zhengjie.modules.system.domain.Job;
|
import me.zhengjie.modules.system.domain.Job;
|
||||||
|
import me.zhengjie.modules.system.repository.UserRepository;
|
||||||
import me.zhengjie.modules.system.service.dto.JobQueryCriteria;
|
import me.zhengjie.modules.system.service.dto.JobQueryCriteria;
|
||||||
import me.zhengjie.utils.*;
|
import me.zhengjie.utils.*;
|
||||||
import me.zhengjie.modules.system.repository.JobRepository;
|
import me.zhengjie.modules.system.repository.JobRepository;
|
||||||
|
@ -49,6 +51,7 @@ public class JobServiceImpl implements JobService {
|
||||||
private final JobRepository jobRepository;
|
private final JobRepository jobRepository;
|
||||||
private final JobMapper jobMapper;
|
private final JobMapper jobMapper;
|
||||||
private final RedisUtils redisUtils;
|
private final RedisUtils redisUtils;
|
||||||
|
private final UserRepository userRepository;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Map<String,Object> queryAll(JobQueryCriteria criteria, Pageable pageable) {
|
public Map<String,Object> queryAll(JobQueryCriteria criteria, Pageable pageable) {
|
||||||
|
@ -114,4 +117,11 @@ public class JobServiceImpl implements JobService {
|
||||||
}
|
}
|
||||||
FileUtil.downloadExcel(list, response);
|
FileUtil.downloadExcel(list, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void verification(Set<Long> ids) {
|
||||||
|
if(userRepository.countByJobs(ids) > 0){
|
||||||
|
throw new BadRequestException("所选的岗位中存在用户关联,请解除关联再试!");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -16,6 +16,7 @@
|
||||||
package me.zhengjie.modules.system.service.impl;
|
package me.zhengjie.modules.system.service.impl;
|
||||||
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import me.zhengjie.exception.BadRequestException;
|
||||||
import me.zhengjie.modules.system.domain.Menu;
|
import me.zhengjie.modules.system.domain.Menu;
|
||||||
import me.zhengjie.modules.system.domain.Role;
|
import me.zhengjie.modules.system.domain.Role;
|
||||||
import me.zhengjie.exception.EntityExistException;
|
import me.zhengjie.exception.EntityExistException;
|
||||||
|
@ -202,4 +203,11 @@ public class RoleServiceImpl implements RoleService {
|
||||||
redisUtils.delByKeys("menu::user:",userIds);
|
redisUtils.delByKeys("menu::user:",userIds);
|
||||||
redisUtils.delByKeys("role::auth:",userIds);
|
redisUtils.delByKeys("role::auth:",userIds);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void verification(Set<Long> ids) {
|
||||||
|
if(userRepository.countByRoles(ids) > 0){
|
||||||
|
throw new BadRequestException("所选角色存在用户关联,请解除关联再试!");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue