"...java/me/zhengjie/git@ustchcs.com:gujinli1118/eladmin.git" did not exist on "a74cf51c0a5707ec5576adaa10ef821f4e21c14e"
Commit 90a4a80a authored by ZhengJie's avatar ZhengJie
Browse files

[代码完善](v2.5): v2.5 beta 菜单部门优化,其他杂项优化

菜单和部门表加入 sub_count 字段,记录子节点数目,树形表格懒加载使用。
脚本同步更新

2.5 Beta 详情:https://www.ydyno.com/archives/1225.html
parent 48570fcb
...@@ -23,8 +23,6 @@ import me.zhengjie.modules.system.service.RoleService; ...@@ -23,8 +23,6 @@ import me.zhengjie.modules.system.service.RoleService;
import me.zhengjie.modules.system.service.dto.RoleSmallDto; import me.zhengjie.modules.system.service.dto.RoleSmallDto;
import me.zhengjie.modules.system.service.dto.UserDto; import me.zhengjie.modules.system.service.dto.UserDto;
import me.zhengjie.utils.enums.DataScopeEnum; import me.zhengjie.utils.enums.DataScopeEnum;
import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.*; import java.util.*;
...@@ -36,14 +34,12 @@ import java.util.*; ...@@ -36,14 +34,12 @@ import java.util.*;
**/ **/
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
@CacheConfig(cacheNames = "role")
public class DataServiceImpl implements DataService { public class DataServiceImpl implements DataService {
private final RoleService roleService; private final RoleService roleService;
private final DeptService deptService; private final DeptService deptService;
@Override @Override
@Cacheable
public List<Long> getDeptIds(UserDto user) { public List<Long> getDeptIds(UserDto user) {
// 用于存储部门id // 用于存储部门id
Set<Long> deptIds = new HashSet<>(); Set<Long> deptIds = new HashSet<>();
...@@ -90,7 +86,6 @@ public class DataServiceImpl implements DataService { ...@@ -90,7 +86,6 @@ public class DataServiceImpl implements DataService {
* @return 数据权限 * @return 数据权限
*/ */
@Override @Override
@Cacheable
public List<Long> getDeptChildren(List<Dept> deptList) { public List<Long> getDeptChildren(List<Dept> deptList) {
List<Long> list = new ArrayList<>(); List<Long> list = new ArrayList<>();
deptList.forEach(dept -> { deptList.forEach(dept -> {
......
...@@ -28,9 +28,6 @@ import me.zhengjie.utils.ValidationUtil; ...@@ -28,9 +28,6 @@ import me.zhengjie.utils.ValidationUtil;
import me.zhengjie.modules.system.repository.DeptRepository; import me.zhengjie.modules.system.repository.DeptRepository;
import me.zhengjie.modules.system.service.DeptService; import me.zhengjie.modules.system.service.DeptService;
import me.zhengjie.modules.system.service.mapstruct.DeptMapper; import me.zhengjie.modules.system.service.mapstruct.DeptMapper;
import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Propagation;
...@@ -47,7 +44,6 @@ import java.util.stream.Collectors; ...@@ -47,7 +44,6 @@ import java.util.stream.Collectors;
*/ */
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
@CacheConfig(cacheNames = "dept")
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
public class DeptServiceImpl implements DeptService { public class DeptServiceImpl implements DeptService {
...@@ -55,7 +51,6 @@ public class DeptServiceImpl implements DeptService { ...@@ -55,7 +51,6 @@ public class DeptServiceImpl implements DeptService {
private final DeptMapper deptMapper; private final DeptMapper deptMapper;
@Override @Override
@Cacheable
public List<DeptDto> queryAll(DeptQueryCriteria criteria, Boolean isQuery) throws Exception { public List<DeptDto> queryAll(DeptQueryCriteria criteria, Boolean isQuery) throws Exception {
Sort sort = new Sort(Sort.Direction.ASC, "deptSort"); Sort sort = new Sort(Sort.Direction.ASC, "deptSort");
if (isQuery) { if (isQuery) {
...@@ -79,7 +74,6 @@ public class DeptServiceImpl implements DeptService { ...@@ -79,7 +74,6 @@ public class DeptServiceImpl implements DeptService {
} }
@Override @Override
@Cacheable(key = "#p0")
public DeptDto findById(Long id) { public DeptDto findById(Long id) {
Dept dept = deptRepository.findById(id).orElseGet(Dept::new); Dept dept = deptRepository.findById(id).orElseGet(Dept::new);
ValidationUtil.isNull(dept.getId(),"Dept","id",id); ValidationUtil.isNull(dept.getId(),"Dept","id",id);
...@@ -87,7 +81,6 @@ public class DeptServiceImpl implements DeptService { ...@@ -87,7 +81,6 @@ public class DeptServiceImpl implements DeptService {
} }
@Override @Override
@Cacheable
public List<Dept> findByPid(long pid) { public List<Dept> findByPid(long pid) {
return deptRepository.findByPid(pid); return deptRepository.findByPid(pid);
} }
...@@ -98,16 +91,21 @@ public class DeptServiceImpl implements DeptService { ...@@ -98,16 +91,21 @@ public class DeptServiceImpl implements DeptService {
} }
@Override @Override
@CacheEvict(allEntries = true)
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public DeptDto create(Dept resources) { public void create(Dept resources) {
return deptMapper.toDto(deptRepository.save(resources)); deptRepository.save(resources);
// 计算子节点数目
resources.setSubCount(0);
if(resources.getPid() != null){
updateSubCnt(resources.getPid());
}
} }
@Override @Override
@CacheEvict(allEntries = true)
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void update(Dept resources) { public void update(Dept resources) {
// 旧的菜单
DeptDto old = findById(resources.getId());
if(resources.getPid() != null && resources.getId().equals(resources.getPid())) { if(resources.getPid() != null && resources.getId().equals(resources.getPid())) {
throw new BadRequestException("上级不能为自己"); throw new BadRequestException("上级不能为自己");
} }
...@@ -115,14 +113,21 @@ public class DeptServiceImpl implements DeptService { ...@@ -115,14 +113,21 @@ public class DeptServiceImpl implements DeptService {
ValidationUtil.isNull( dept.getId(),"Dept","id",resources.getId()); ValidationUtil.isNull( dept.getId(),"Dept","id",resources.getId());
resources.setId(dept.getId()); resources.setId(dept.getId());
deptRepository.save(resources); deptRepository.save(resources);
if(resources.getPid() == null){
updateSubCnt(old.getPid());
} else {
updateSubCnt(resources.getPid());
}
} }
@Override @Override
@CacheEvict(allEntries = true)
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void delete(Set<DeptDto> deptDtos) { public void delete(Set<DeptDto> deptDtos) {
for (DeptDto deptDto : deptDtos) { for (DeptDto deptDto : deptDtos) {
deptRepository.deleteById(deptDto.getId()); deptRepository.deleteById(deptDto.getId());
if(deptDto.getPid() != null){
updateSubCnt(deptDto.getPid());
}
} }
} }
...@@ -199,4 +204,9 @@ public class DeptServiceImpl implements DeptService { ...@@ -199,4 +204,9 @@ public class DeptServiceImpl implements DeptService {
map.put("content",CollectionUtil.isEmpty(trees)? deptDtos :trees); map.put("content",CollectionUtil.isEmpty(trees)? deptDtos :trees);
return map; return map;
} }
private void updateSubCnt(Long deptId){
int count = deptRepository.countByPid(deptId);
deptRepository.updateSubCntById(count, deptId);
}
} }
\ No newline at end of file
...@@ -25,9 +25,6 @@ import me.zhengjie.modules.system.repository.DictDetailRepository; ...@@ -25,9 +25,6 @@ import me.zhengjie.modules.system.repository.DictDetailRepository;
import me.zhengjie.modules.system.service.DictDetailService; import me.zhengjie.modules.system.service.DictDetailService;
import me.zhengjie.modules.system.service.dto.DictDetailDto; import me.zhengjie.modules.system.service.dto.DictDetailDto;
import me.zhengjie.modules.system.service.mapstruct.DictDetailMapper; import me.zhengjie.modules.system.service.mapstruct.DictDetailMapper;
import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -41,7 +38,6 @@ import java.util.Map; ...@@ -41,7 +38,6 @@ import java.util.Map;
*/ */
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
@CacheConfig(cacheNames = "dictDetail")
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
public class DictDetailServiceImpl implements DictDetailService { public class DictDetailServiceImpl implements DictDetailService {
...@@ -49,14 +45,12 @@ public class DictDetailServiceImpl implements DictDetailService { ...@@ -49,14 +45,12 @@ public class DictDetailServiceImpl implements DictDetailService {
private final DictDetailMapper dictDetailMapper; private final DictDetailMapper dictDetailMapper;
@Override @Override
@Cacheable
public Map<String,Object> queryAll(DictDetailQueryCriteria criteria, Pageable pageable) { public Map<String,Object> queryAll(DictDetailQueryCriteria criteria, Pageable pageable) {
Page<DictDetail> page = dictDetailRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable); Page<DictDetail> page = dictDetailRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable);
return PageUtil.toPage(page.map(dictDetailMapper::toDto)); return PageUtil.toPage(page.map(dictDetailMapper::toDto));
} }
@Override @Override
@Cacheable(key = "#p0")
public DictDetailDto findById(Long id) { public DictDetailDto findById(Long id) {
DictDetail dictDetail = dictDetailRepository.findById(id).orElseGet(DictDetail::new); DictDetail dictDetail = dictDetailRepository.findById(id).orElseGet(DictDetail::new);
ValidationUtil.isNull(dictDetail.getId(),"DictDetail","id",id); ValidationUtil.isNull(dictDetail.getId(),"DictDetail","id",id);
...@@ -64,14 +58,12 @@ public class DictDetailServiceImpl implements DictDetailService { ...@@ -64,14 +58,12 @@ public class DictDetailServiceImpl implements DictDetailService {
} }
@Override @Override
@CacheEvict(allEntries = true)
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public DictDetailDto create(DictDetail resources) { public void create(DictDetail resources) {
return dictDetailMapper.toDto(dictDetailRepository.save(resources)); dictDetailRepository.save(resources);
} }
@Override @Override
@CacheEvict(allEntries = true)
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void update(DictDetail resources) { public void update(DictDetail resources) {
DictDetail dictDetail = dictDetailRepository.findById(resources.getId()).orElseGet(DictDetail::new); DictDetail dictDetail = dictDetailRepository.findById(resources.getId()).orElseGet(DictDetail::new);
...@@ -81,7 +73,6 @@ public class DictDetailServiceImpl implements DictDetailService { ...@@ -81,7 +73,6 @@ public class DictDetailServiceImpl implements DictDetailService {
} }
@Override @Override
@CacheEvict(allEntries = true)
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void delete(Long id) { public void delete(Long id) {
dictDetailRepository.deleteById(id); dictDetailRepository.deleteById(id);
......
...@@ -20,17 +20,11 @@ import lombok.RequiredArgsConstructor; ...@@ -20,17 +20,11 @@ import lombok.RequiredArgsConstructor;
import me.zhengjie.modules.system.domain.Dict; import me.zhengjie.modules.system.domain.Dict;
import me.zhengjie.modules.system.service.dto.DictDetailDto; import me.zhengjie.modules.system.service.dto.DictDetailDto;
import me.zhengjie.modules.system.service.dto.DictQueryCriteria; import me.zhengjie.modules.system.service.dto.DictQueryCriteria;
import me.zhengjie.utils.FileUtil; import me.zhengjie.utils.*;
import me.zhengjie.utils.PageUtil;
import me.zhengjie.utils.QueryHelp;
import me.zhengjie.utils.ValidationUtil;
import me.zhengjie.modules.system.repository.DictRepository; import me.zhengjie.modules.system.repository.DictRepository;
import me.zhengjie.modules.system.service.DictService; import me.zhengjie.modules.system.service.DictService;
import me.zhengjie.modules.system.service.dto.DictDto; import me.zhengjie.modules.system.service.dto.DictDto;
import me.zhengjie.modules.system.service.mapstruct.DictMapper; import me.zhengjie.modules.system.service.mapstruct.DictMapper;
import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -46,15 +40,14 @@ import java.util.*; ...@@ -46,15 +40,14 @@ import java.util.*;
*/ */
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
@CacheConfig(cacheNames = "dict")
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
public class DictServiceImpl implements DictService { public class DictServiceImpl implements DictService {
private final DictRepository dictRepository; private final DictRepository dictRepository;
private final DictMapper dictMapper; private final DictMapper dictMapper;
private final RedisUtils redisUtils;
@Override @Override
@Cacheable
public Map<String, Object> queryAll(DictQueryCriteria dict, Pageable pageable){ public Map<String, Object> queryAll(DictQueryCriteria dict, Pageable pageable){
Page<Dict> page = dictRepository.findAll((root, query, cb) -> QueryHelp.getPredicate(root, dict, cb), pageable); Page<Dict> page = dictRepository.findAll((root, query, cb) -> QueryHelp.getPredicate(root, dict, cb), pageable);
return PageUtil.toPage(page.map(dictMapper::toDto)); return PageUtil.toPage(page.map(dictMapper::toDto));
...@@ -67,7 +60,6 @@ public class DictServiceImpl implements DictService { ...@@ -67,7 +60,6 @@ public class DictServiceImpl implements DictService {
} }
@Override @Override
@Cacheable(key = "#p0")
public DictDto findById(Long id) { public DictDto findById(Long id) {
Dict dict = dictRepository.findById(id).orElseGet(Dict::new); Dict dict = dictRepository.findById(id).orElseGet(Dict::new);
ValidationUtil.isNull(dict.getId(),"Dict","id",id); ValidationUtil.isNull(dict.getId(),"Dict","id",id);
...@@ -75,14 +67,12 @@ public class DictServiceImpl implements DictService { ...@@ -75,14 +67,12 @@ public class DictServiceImpl implements DictService {
} }
@Override @Override
@CacheEvict(allEntries = true)
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public DictDto create(Dict resources) { public void create(Dict resources) {
return dictMapper.toDto(dictRepository.save(resources)); dictRepository.save(resources);
} }
@Override @Override
@CacheEvict(allEntries = true)
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void update(Dict resources) { public void update(Dict resources) {
Dict dict = dictRepository.findById(resources.getId()).orElseGet(Dict::new); Dict dict = dictRepository.findById(resources.getId()).orElseGet(Dict::new);
...@@ -92,12 +82,10 @@ public class DictServiceImpl implements DictService { ...@@ -92,12 +82,10 @@ public class DictServiceImpl implements DictService {
} }
@Override @Override
@CacheEvict(allEntries = true)
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void delete(Set<Long> ids) { public void delete(Set<Long> ids) {
for (Long id : ids) { dictRepository.deleteByIdIn(ids);
dictRepository.deleteById(id); redisUtils.delByKeys("dict::", ids);
}
} }
@Override @Override
......
...@@ -19,17 +19,11 @@ import lombok.RequiredArgsConstructor; ...@@ -19,17 +19,11 @@ import lombok.RequiredArgsConstructor;
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.service.dto.JobQueryCriteria; import me.zhengjie.modules.system.service.dto.JobQueryCriteria;
import me.zhengjie.utils.FileUtil; import me.zhengjie.utils.*;
import me.zhengjie.utils.PageUtil;
import me.zhengjie.utils.QueryHelp;
import me.zhengjie.utils.ValidationUtil;
import me.zhengjie.modules.system.repository.JobRepository; import me.zhengjie.modules.system.repository.JobRepository;
import me.zhengjie.modules.system.service.JobService; import me.zhengjie.modules.system.service.JobService;
import me.zhengjie.modules.system.service.dto.JobDto; import me.zhengjie.modules.system.service.dto.JobDto;
import me.zhengjie.modules.system.service.mapstruct.JobMapper; import me.zhengjie.modules.system.service.mapstruct.JobMapper;
import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -45,29 +39,26 @@ import java.util.*; ...@@ -45,29 +39,26 @@ import java.util.*;
*/ */
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
@CacheConfig(cacheNames = "job")
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
public class JobServiceImpl implements JobService { 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;
@Override @Override
@Cacheable
public Map<String,Object> queryAll(JobQueryCriteria criteria, Pageable pageable) { public Map<String,Object> queryAll(JobQueryCriteria criteria, Pageable pageable) {
Page<Job> page = jobRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable); Page<Job> page = jobRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable);
return PageUtil.toPage(page.map(jobMapper::toDto).getContent(),page.getTotalElements()); return PageUtil.toPage(page.map(jobMapper::toDto).getContent(),page.getTotalElements());
} }
@Override @Override
@Cacheable
public List<JobDto> queryAll(JobQueryCriteria criteria) { public List<JobDto> queryAll(JobQueryCriteria criteria) {
List<Job> list = jobRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder)); List<Job> list = jobRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder));
return jobMapper.toDto(list); return jobMapper.toDto(list);
} }
@Override @Override
@Cacheable(key = "#p0")
public JobDto findById(Long id) { public JobDto findById(Long id) {
Job job = jobRepository.findById(id).orElseGet(Job::new); Job job = jobRepository.findById(id).orElseGet(Job::new);
ValidationUtil.isNull(job.getId(),"Job","id",id); ValidationUtil.isNull(job.getId(),"Job","id",id);
...@@ -75,18 +66,16 @@ public class JobServiceImpl implements JobService { ...@@ -75,18 +66,16 @@ public class JobServiceImpl implements JobService {
} }
@Override @Override
@CacheEvict(allEntries = true)
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public JobDto create(Job resources) { public void create(Job resources) {
Job job = jobRepository.findByName(resources.getName()); Job job = jobRepository.findByName(resources.getName());
if(job != null){ if(job != null){
throw new EntityExistException(Job.class,"name",resources.getName()); throw new EntityExistException(Job.class,"name",resources.getName());
} }
return jobMapper.toDto(jobRepository.save(resources)); jobRepository.save(resources);
} }
@Override @Override
@CacheEvict(allEntries = true)
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void update(Job resources) { public void update(Job resources) {
Job job = jobRepository.findById(resources.getId()).orElseGet(Job::new); Job job = jobRepository.findById(resources.getId()).orElseGet(Job::new);
...@@ -100,11 +89,12 @@ public class JobServiceImpl implements JobService { ...@@ -100,11 +89,12 @@ public class JobServiceImpl implements JobService {
} }
@Override @Override
@CacheEvict(allEntries = true)
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void delete(Set<Long> ids) { public void delete(Set<Long> ids) {
for (Long id : ids) { for (Long id : ids) {
jobRepository.deleteById(id); jobRepository.deleteById(id);
// 删除缓存
redisUtils.del("job::"+id);
} }
} }
......
...@@ -34,9 +34,6 @@ import me.zhengjie.utils.FileUtil; ...@@ -34,9 +34,6 @@ import me.zhengjie.utils.FileUtil;
import me.zhengjie.utils.QueryHelp; import me.zhengjie.utils.QueryHelp;
import me.zhengjie.utils.StringUtils; import me.zhengjie.utils.StringUtils;
import me.zhengjie.utils.ValidationUtil; import me.zhengjie.utils.ValidationUtil;
import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Propagation;
...@@ -52,7 +49,6 @@ import java.util.stream.Collectors; ...@@ -52,7 +49,6 @@ import java.util.stream.Collectors;
*/ */
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
@CacheConfig(cacheNames = "menu")
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
public class MenuServiceImpl implements MenuService { public class MenuServiceImpl implements MenuService {
...@@ -61,7 +57,6 @@ public class MenuServiceImpl implements MenuService { ...@@ -61,7 +57,6 @@ public class MenuServiceImpl implements MenuService {
private final RoleService roleService; private final RoleService roleService;
@Override @Override
@Cacheable
public List<MenuDto> queryAll(MenuQueryCriteria criteria, Boolean isQuery) throws Exception { public List<MenuDto> queryAll(MenuQueryCriteria criteria, Boolean isQuery) throws Exception {
Sort sort = new Sort(Sort.Direction.ASC, "menuSort"); Sort sort = new Sort(Sort.Direction.ASC, "menuSort");
if(isQuery){ if(isQuery){
...@@ -84,7 +79,6 @@ public class MenuServiceImpl implements MenuService { ...@@ -84,7 +79,6 @@ public class MenuServiceImpl implements MenuService {
} }
@Override @Override
@Cacheable(key = "#p0")
public MenuDto findById(long id) { public MenuDto findById(long id) {
Menu menu = menuRepository.findById(id).orElseGet(Menu::new); Menu menu = menuRepository.findById(id).orElseGet(Menu::new);
ValidationUtil.isNull(menu.getId(),"Menu","id",id); ValidationUtil.isNull(menu.getId(),"Menu","id",id);
...@@ -92,7 +86,6 @@ public class MenuServiceImpl implements MenuService { ...@@ -92,7 +86,6 @@ public class MenuServiceImpl implements MenuService {
} }
@Override @Override
@Cacheable
public List<MenuDto> findByRoles(List<RoleSmallDto> roles) { public List<MenuDto> findByRoles(List<RoleSmallDto> roles) {
Set<Long> roleIds = roles.stream().map(RoleSmallDto::getId).collect(Collectors.toSet()); Set<Long> roleIds = roles.stream().map(RoleSmallDto::getId).collect(Collectors.toSet());
LinkedHashSet<Menu> menus = menuRepository.findByRoles_IdInAndTypeNotOrderByMenuSortAsc(roleIds, 2); LinkedHashSet<Menu> menus = menuRepository.findByRoles_IdInAndTypeNotOrderByMenuSortAsc(roleIds, 2);
...@@ -100,8 +93,8 @@ public class MenuServiceImpl implements MenuService { ...@@ -100,8 +93,8 @@ public class MenuServiceImpl implements MenuService {
} }
@Override @Override
@CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class)
public MenuDto create(Menu resources) { public void create(Menu resources) {
if(menuRepository.findByTitle(resources.getTitle()) != null){ if(menuRepository.findByTitle(resources.getTitle()) != null){
throw new EntityExistException(Menu.class,"title",resources.getTitle()); throw new EntityExistException(Menu.class,"title",resources.getTitle());
} }
...@@ -119,16 +112,23 @@ public class MenuServiceImpl implements MenuService { ...@@ -119,16 +112,23 @@ public class MenuServiceImpl implements MenuService {
throw new BadRequestException("外链必须以http://或者https://开头"); throw new BadRequestException("外链必须以http://或者https://开头");
} }
} }
return menuMapper.toDto(menuRepository.save(resources)); menuRepository.save(resources);
// 计算子节点数目
resources.setSubCount(0);
if(resources.getPid() != null){
updateSubCnt(resources.getPid());
}
} }
@Override @Override
@CacheEvict(allEntries = true) @Transactional(rollbackFor = Exception.class)
public void update(Menu resources) { public void update(Menu resources) {
if(resources.getId().equals(resources.getPid())) { if(resources.getId().equals(resources.getPid())) {
throw new BadRequestException("上级不能为自己"); throw new BadRequestException("上级不能为自己");
} }
Menu menu = menuRepository.findById(resources.getId()).orElseGet(Menu::new); Menu menu = menuRepository.findById(resources.getId()).orElseGet(Menu::new);
// 记录旧的父节点ID
Long oldPid = menu.getPid();
ValidationUtil.isNull(menu.getId(),"Permission","id",resources.getId()); ValidationUtil.isNull(menu.getId(),"Permission","id",resources.getId());
if(resources.getIFrame()){ if(resources.getIFrame()){
...@@ -165,6 +165,12 @@ public class MenuServiceImpl implements MenuService { ...@@ -165,6 +165,12 @@ public class MenuServiceImpl implements MenuService {
menu.setPermission(resources.getPermission()); menu.setPermission(resources.getPermission());
menu.setType(resources.getType()); menu.setType(resources.getType());
menuRepository.save(menu); menuRepository.save(menu);
// 计算子节点数目
if(resources.getPid() == null){
updateSubCnt(oldPid);
} else {
updateSubCnt(resources.getPid());
}
} }
@Override @Override
...@@ -181,17 +187,18 @@ public class MenuServiceImpl implements MenuService { ...@@ -181,17 +187,18 @@ public class MenuServiceImpl implements MenuService {
} }
@Override @Override
@CacheEvict(allEntries = true)
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void delete(Set<Menu> menuSet) { public void delete(Set<Menu> menuSet) {
for (Menu menu : menuSet) { for (Menu menu : menuSet) {
roleService.untiedMenu(menu.getId()); roleService.untiedMenu(menu.getId());
menuRepository.deleteById(menu.getId()); menuRepository.deleteById(menu.getId());
if(menu.getPid() != null){
updateSubCnt(menu.getPid());
}
} }
} }
@Override @Override
@Cacheable
public Object getMenus(Long pid) { public Object getMenus(Long pid) {
List<Menu> menus; List<Menu> menus;
if(pid != null && !pid.equals(0L)){ if(pid != null && !pid.equals(0L)){
...@@ -203,7 +210,6 @@ public class MenuServiceImpl implements MenuService { ...@@ -203,7 +210,6 @@ public class MenuServiceImpl implements MenuService {
} }
@Override @Override
@Cacheable
public List<MenuDto> getSuperior(MenuDto menuDto, List<Menu> menus) { public List<MenuDto> getSuperior(MenuDto menuDto, List<Menu> menus) {
if(menuDto.getPid() == null){ if(menuDto.getPid() == null){
menus.addAll(menuRepository.findByPidIsNull()); menus.addAll(menuRepository.findByPidIsNull());
...@@ -214,7 +220,6 @@ public class MenuServiceImpl implements MenuService { ...@@ -214,7 +220,6 @@ public class MenuServiceImpl implements MenuService {
} }
@Override @Override
@Cacheable(key = "'pid:'+#p0")
public List<Menu> findByPid(long pid) { public List<Menu> findByPid(long pid) {
return menuRepository.findByPid(pid); return menuRepository.findByPid(pid);
} }
...@@ -294,7 +299,6 @@ public class MenuServiceImpl implements MenuService { ...@@ -294,7 +299,6 @@ public class MenuServiceImpl implements MenuService {
} }
@Override @Override
@Cacheable
public Menu findOne(Long id) { public Menu findOne(Long id) {
Menu menu = menuRepository.findById(id).orElseGet(Menu::new); Menu menu = menuRepository.findById(id).orElseGet(Menu::new);
ValidationUtil.isNull(menu.getId(),"Menu","id",id); ValidationUtil.isNull(menu.getId(),"Menu","id",id);
...@@ -317,4 +321,9 @@ public class MenuServiceImpl implements MenuService { ...@@ -317,4 +321,9 @@ public class MenuServiceImpl implements MenuService {
} }
FileUtil.downloadExcel(list, response); FileUtil.downloadExcel(list, response);
} }
private void updateSubCnt(Long menuId){
int count = menuRepository.countByPid(menuId);
menuRepository.updateSubCntById(count, menuId);
}
} }
...@@ -32,11 +32,9 @@ import me.zhengjie.modules.system.service.mapstruct.RoleMapper; ...@@ -32,11 +32,9 @@ import me.zhengjie.modules.system.service.mapstruct.RoleMapper;
import me.zhengjie.modules.system.service.mapstruct.RoleSmallMapper; import me.zhengjie.modules.system.service.mapstruct.RoleSmallMapper;
import me.zhengjie.utils.*; import me.zhengjie.utils.*;
import me.zhengjie.utils.enums.DataScopeEnum; import me.zhengjie.utils.enums.DataScopeEnum;
import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -53,7 +51,6 @@ import java.util.stream.Collectors; ...@@ -53,7 +51,6 @@ import java.util.stream.Collectors;
*/ */
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
@CacheConfig(cacheNames = "role")
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
public class RoleServiceImpl implements RoleService { public class RoleServiceImpl implements RoleService {
...@@ -61,28 +58,26 @@ public class RoleServiceImpl implements RoleService { ...@@ -61,28 +58,26 @@ public class RoleServiceImpl implements RoleService {
private final RoleMapper roleMapper; private final RoleMapper roleMapper;
private final RoleSmallMapper roleSmallMapper; private final RoleSmallMapper roleSmallMapper;
private final DeptRepository deptRepository; private final DeptRepository deptRepository;
private final RedisUtils redisUtils;
@Override @Override
@Cacheable public List<RoleDto> queryAll() {
public Object queryAll(Pageable pageable) { Sort sort = new Sort(Sort.Direction.ASC, "level");
return roleMapper.toDto(roleRepository.findAll(pageable).getContent()); return roleMapper.toDto(roleRepository.findAll(sort));
} }
@Override @Override
@Cacheable
public List<RoleDto> queryAll(RoleQueryCriteria criteria) { public List<RoleDto> queryAll(RoleQueryCriteria criteria) {
return roleMapper.toDto(roleRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder))); return roleMapper.toDto(roleRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder)));
} }
@Override @Override
@Cacheable
public Object queryAll(RoleQueryCriteria criteria, Pageable pageable) { public Object queryAll(RoleQueryCriteria criteria, Pageable pageable) {
Page<Role> page = roleRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable); Page<Role> page = roleRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable);
return PageUtil.toPage(page.map(roleMapper::toDto)); return PageUtil.toPage(page.map(roleMapper::toDto));
} }
@Override @Override
@Cacheable(key = "#p0")
public RoleDto findById(long id) { public RoleDto findById(long id) {
Role role = roleRepository.findById(id).orElseGet(Role::new); Role role = roleRepository.findById(id).orElseGet(Role::new);
ValidationUtil.isNull(role.getId(),"Role","id",id); ValidationUtil.isNull(role.getId(),"Role","id",id);
...@@ -90,18 +85,16 @@ public class RoleServiceImpl implements RoleService { ...@@ -90,18 +85,16 @@ public class RoleServiceImpl implements RoleService {
} }
@Override @Override
@CacheEvict(allEntries = true)
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public RoleDto create(Role resources) { public void create(Role resources) {
if(roleRepository.findByName(resources.getName()) != null){ if(roleRepository.findByName(resources.getName()) != null){
throw new EntityExistException(Role.class,"username",resources.getName()); throw new EntityExistException(Role.class,"username",resources.getName());
} }
checkDataScope(resources); checkDataScope(resources);
return roleMapper.toDto(roleRepository.save(resources)); roleRepository.save(resources);
} }
@Override @Override
@CacheEvict(allEntries = true)
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void update(Role resources) { public void update(Role resources) {
Role role = roleRepository.findById(resources.getId()).orElseGet(Role::new); Role role = roleRepository.findById(resources.getId()).orElseGet(Role::new);
...@@ -135,7 +128,6 @@ public class RoleServiceImpl implements RoleService { ...@@ -135,7 +128,6 @@ public class RoleServiceImpl implements RoleService {
} }
@Override @Override
@CacheEvict(allEntries = true)
public void updateMenu(Role resources, RoleDto roleDTO) { public void updateMenu(Role resources, RoleDto roleDTO) {
Role role = roleMapper.toEntity(roleDTO); Role role = roleMapper.toEntity(roleDTO);
role.setMenus(resources.getMenus()); role.setMenus(resources.getMenus());
...@@ -143,29 +135,27 @@ public class RoleServiceImpl implements RoleService { ...@@ -143,29 +135,27 @@ public class RoleServiceImpl implements RoleService {
} }
@Override @Override
@CacheEvict(allEntries = true)
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void untiedMenu(Long id) { public void untiedMenu(Long id) {
roleRepository.untiedMenu(id); roleRepository.untiedMenu(id);
} }
@Override @Override
@CacheEvict(allEntries = true)
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void delete(Set<Long> ids) { public void delete(Set<Long> ids) {
for (Long id : ids) { for (Long id : ids) {
roleRepository.deleteById(id); roleRepository.deleteById(id);
// 删除缓存
redisUtils.del("role::"+id);
} }
} }
@Override @Override
@Cacheable(key = "'findByUsers_Id:' + #p0")
public List<RoleSmallDto> findByUsersId(Long id) { public List<RoleSmallDto> findByUsersId(Long id) {
return roleSmallMapper.toDto(new ArrayList<>(roleRepository.findByUsers_Id(id))); return roleSmallMapper.toDto(new ArrayList<>(roleRepository.findByUsers_Id(id)));
} }
@Override @Override
@Cacheable
public Integer findByRoles(Set<Role> roles) { public Integer findByRoles(Set<Role> roles) {
Set<RoleDto> roleDtos = new HashSet<>(); Set<RoleDto> roleDtos = new HashSet<>();
for (Role role : roles) { for (Role role : roles) {
...@@ -175,7 +165,6 @@ public class RoleServiceImpl implements RoleService { ...@@ -175,7 +165,6 @@ public class RoleServiceImpl implements RoleService {
} }
@Override @Override
@Cacheable(key = "'loadPermissionByUser:' + #p0.username")
public List<GrantedAuthority> mapToGrantedAuthorities(UserDto user) { public List<GrantedAuthority> mapToGrantedAuthorities(UserDto user) {
Set<String> permissions = new HashSet<>(); Set<String> permissions = new HashSet<>();
// 如果是管理员直接返回 // 如果是管理员直接返回
......
...@@ -28,9 +28,6 @@ import me.zhengjie.modules.system.service.dto.UserDto; ...@@ -28,9 +28,6 @@ import me.zhengjie.modules.system.service.dto.UserDto;
import me.zhengjie.modules.system.service.dto.UserQueryCriteria; import me.zhengjie.modules.system.service.dto.UserQueryCriteria;
import me.zhengjie.modules.system.service.mapstruct.UserMapper; import me.zhengjie.modules.system.service.mapstruct.UserMapper;
import me.zhengjie.utils.*; import me.zhengjie.utils.*;
import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -49,7 +46,6 @@ import java.util.stream.Collectors; ...@@ -49,7 +46,6 @@ import java.util.stream.Collectors;
*/ */
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
@CacheConfig(cacheNames = "user")
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
public class UserServiceImpl implements UserService { public class UserServiceImpl implements UserService {
...@@ -59,21 +55,18 @@ public class UserServiceImpl implements UserService { ...@@ -59,21 +55,18 @@ public class UserServiceImpl implements UserService {
private final FileProperties properties; private final FileProperties properties;
@Override @Override
@Cacheable
public Object queryAll(UserQueryCriteria criteria, Pageable pageable) { public Object queryAll(UserQueryCriteria criteria, Pageable pageable) {
Page<User> page = userRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable); Page<User> page = userRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable);
return PageUtil.toPage(page.map(userMapper::toDto)); return PageUtil.toPage(page.map(userMapper::toDto));
} }
@Override @Override
@Cacheable
public List<UserDto> queryAll(UserQueryCriteria criteria) { public List<UserDto> queryAll(UserQueryCriteria criteria) {
List<User> users = userRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder)); List<User> users = userRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder));
return userMapper.toDto(users); return userMapper.toDto(users);
} }
@Override @Override
@Cacheable(key = "#p0")
public UserDto findById(long id) { public UserDto findById(long id) {
User user = userRepository.findById(id).orElseGet(User::new); User user = userRepository.findById(id).orElseGet(User::new);
ValidationUtil.isNull(user.getId(),"User","id",id); ValidationUtil.isNull(user.getId(),"User","id",id);
...@@ -81,20 +74,18 @@ public class UserServiceImpl implements UserService { ...@@ -81,20 +74,18 @@ public class UserServiceImpl implements UserService {
} }
@Override @Override
@CacheEvict(allEntries = true)
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public UserDto create(User resources) { public void create(User resources) {
if(userRepository.findByUsername(resources.getUsername())!=null){ if(userRepository.findByUsername(resources.getUsername())!=null){
throw new EntityExistException(User.class,"username",resources.getUsername()); throw new EntityExistException(User.class,"username",resources.getUsername());
} }
if(userRepository.findByEmail(resources.getEmail())!=null){ if(userRepository.findByEmail(resources.getEmail())!=null){
throw new EntityExistException(User.class,"email",resources.getEmail()); throw new EntityExistException(User.class,"email",resources.getEmail());
} }
return userMapper.toDto(userRepository.save(resources)); userRepository.save(resources);
} }
@Override @Override
@CacheEvict(allEntries = true)
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void update(User resources) { public void update(User resources) {
User user = userRepository.findById(resources.getId()).orElseGet(User::new); User user = userRepository.findById(resources.getId()).orElseGet(User::new);
...@@ -112,9 +103,9 @@ public class UserServiceImpl implements UserService { ...@@ -112,9 +103,9 @@ public class UserServiceImpl implements UserService {
// 如果用户的角色改变了,需要手动清理下缓存 // 如果用户的角色改变了,需要手动清理下缓存
if (!resources.getRoles().equals(user.getRoles())) { if (!resources.getRoles().equals(user.getRoles())) {
String key = "role::loadPermissionByUser:" + user.getUsername(); String key = "role::permission:" + user.getUsername();
redisUtils.del(key); redisUtils.del(key);
key = "role::findByUsers_Id:" + user.getId(); key = "role::user:" + user.getId();
redisUtils.del(key); redisUtils.del(key);
} }
...@@ -131,7 +122,6 @@ public class UserServiceImpl implements UserService { ...@@ -131,7 +122,6 @@ public class UserServiceImpl implements UserService {
} }
@Override @Override
@CacheEvict(allEntries = true)
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void updateCenter(User resources) { public void updateCenter(User resources) {
User user = userRepository.findById(resources.getId()).orElseGet(User::new); User user = userRepository.findById(resources.getId()).orElseGet(User::new);
...@@ -142,7 +132,6 @@ public class UserServiceImpl implements UserService { ...@@ -142,7 +132,6 @@ public class UserServiceImpl implements UserService {
} }
@Override @Override
@CacheEvict(allEntries = true)
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void delete(Set<Long> ids) { public void delete(Set<Long> ids) {
for (Long id : ids) { for (Long id : ids) {
...@@ -151,7 +140,6 @@ public class UserServiceImpl implements UserService { ...@@ -151,7 +140,6 @@ public class UserServiceImpl implements UserService {
} }
@Override @Override
@Cacheable(key = "'loadUserByUsername:'+#p0")
public UserDto findByName(String userName) { public UserDto findByName(String userName) {
User user; User user;
if(ValidationUtil.isEmail(userName)){ if(ValidationUtil.isEmail(userName)){
...@@ -167,14 +155,12 @@ public class UserServiceImpl implements UserService { ...@@ -167,14 +155,12 @@ public class UserServiceImpl implements UserService {
} }
@Override @Override
@CacheEvict(allEntries = true)
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void updatePass(String username, String pass) { public void updatePass(String username, String pass) {
userRepository.updatePass(username,pass,new Date()); userRepository.updatePass(username,pass,new Date());
} }
@Override @Override
@CacheEvict(allEntries = true)
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void updateAvatar(MultipartFile multipartFile) { public void updateAvatar(MultipartFile multipartFile) {
User user = userRepository.findByUsername(SecurityUtils.getCurrentUsername()); User user = userRepository.findByUsername(SecurityUtils.getCurrentUsername());
...@@ -189,7 +175,6 @@ public class UserServiceImpl implements UserService { ...@@ -189,7 +175,6 @@ public class UserServiceImpl implements UserService {
} }
@Override @Override
@CacheEvict(allEntries = true)
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void updateEmail(String username, String email) { public void updateEmail(String username, String email) {
userRepository.updateEmail(username,email); userRepository.updateEmail(username,email);
......
...@@ -17,12 +17,8 @@ package me.zhengjie.modules.system.service.mapstruct; ...@@ -17,12 +17,8 @@ package me.zhengjie.modules.system.service.mapstruct;
import me.zhengjie.base.BaseMapper; import me.zhengjie.base.BaseMapper;
import me.zhengjie.modules.system.domain.Dept; import me.zhengjie.modules.system.domain.Dept;
import me.zhengjie.modules.system.repository.DeptRepository;
import me.zhengjie.modules.system.service.dto.DeptDto; import me.zhengjie.modules.system.service.dto.DeptDto;
import me.zhengjie.utils.SpringContextHolder;
import org.mapstruct.AfterMapping;
import org.mapstruct.Mapper; import org.mapstruct.Mapper;
import org.mapstruct.MappingTarget;
import org.mapstruct.ReportingPolicy; import org.mapstruct.ReportingPolicy;
/** /**
...@@ -31,20 +27,4 @@ import org.mapstruct.ReportingPolicy; ...@@ -31,20 +27,4 @@ import org.mapstruct.ReportingPolicy;
*/ */
@Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE) @Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface DeptMapper extends BaseMapper<DeptDto, Dept> { public interface DeptMapper extends BaseMapper<DeptDto, Dept> {
/**
* 转换后的特殊处理
* @param deptDto /
* @return /
*/
@AfterMapping
default DeptDto dealDto(@MappingTarget DeptDto deptDto) {
DeptRepository deptRepository = SpringContextHolder.getBean(DeptRepository.class);
if(deptRepository.countByPid(deptDto.getId()) > 0){
deptDto.setHasChildren(true);
deptDto.setLeaf(false);
}
return deptDto;
}
} }
\ No newline at end of file
...@@ -17,12 +17,8 @@ package me.zhengjie.modules.system.service.mapstruct; ...@@ -17,12 +17,8 @@ package me.zhengjie.modules.system.service.mapstruct;
import me.zhengjie.base.BaseMapper; import me.zhengjie.base.BaseMapper;
import me.zhengjie.modules.system.domain.Menu; import me.zhengjie.modules.system.domain.Menu;
import me.zhengjie.modules.system.repository.MenuRepository;
import me.zhengjie.modules.system.service.dto.MenuDto; import me.zhengjie.modules.system.service.dto.MenuDto;
import me.zhengjie.utils.SpringContextHolder;
import org.mapstruct.AfterMapping;
import org.mapstruct.Mapper; import org.mapstruct.Mapper;
import org.mapstruct.MappingTarget;
import org.mapstruct.ReportingPolicy; import org.mapstruct.ReportingPolicy;
/** /**
...@@ -31,19 +27,4 @@ import org.mapstruct.ReportingPolicy; ...@@ -31,19 +27,4 @@ import org.mapstruct.ReportingPolicy;
*/ */
@Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE) @Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface MenuMapper extends BaseMapper<MenuDto, Menu> { public interface MenuMapper extends BaseMapper<MenuDto, Menu> {
/**
* 转换
* @param menuDto /
* @return /
*/
@AfterMapping
default MenuDto dealDto(@MappingTarget MenuDto menuDto) {
MenuRepository menuRepository = SpringContextHolder.getBean(MenuRepository.class);
if(menuRepository.countByPid(menuDto.getId()) > 0){
menuDto.setLeaf(false);
menuDto.setHasChildren(true);
}
return menuDto;
}
} }
...@@ -63,7 +63,8 @@ public class LocalStorageController { ...@@ -63,7 +63,8 @@ public class LocalStorageController {
@PostMapping @PostMapping
@PreAuthorize("@el.check('storage:add')") @PreAuthorize("@el.check('storage:add')")
public ResponseEntity<Object> create(@RequestParam String name, @RequestParam("file") MultipartFile file){ public ResponseEntity<Object> create(@RequestParam String name, @RequestParam("file") MultipartFile file){
return new ResponseEntity<>(localStorageService.create(name, file),HttpStatus.CREATED); localStorageService.create(name, file);
return new ResponseEntity<>(HttpStatus.CREATED);
} }
@ApiOperation("修改文件") @ApiOperation("修改文件")
......
...@@ -56,9 +56,8 @@ public interface LocalStorageService { ...@@ -56,9 +56,8 @@ public interface LocalStorageService {
* 上传 * 上传
* @param name 文件名称 * @param name 文件名称
* @param file 文件 * @param file 文件
* @return /
*/ */
LocalStorageDto create(String name, MultipartFile file); void create(String name, MultipartFile file);
/** /**
* 编辑 * 编辑
......
...@@ -73,7 +73,7 @@ public class LocalStorageServiceImpl implements LocalStorageService { ...@@ -73,7 +73,7 @@ public class LocalStorageServiceImpl implements LocalStorageService {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public LocalStorageDto create(String name, MultipartFile multipartFile) { public void create(String name, MultipartFile multipartFile) {
FileUtil.checkSize(properties.getMaxSize(), multipartFile.getSize()); FileUtil.checkSize(properties.getMaxSize(), multipartFile.getSize());
String suffix = FileUtil.getExtensionName(multipartFile.getOriginalFilename()); String suffix = FileUtil.getExtensionName(multipartFile.getOriginalFilename());
String type = FileUtil.getFileType(suffix); String type = FileUtil.getFileType(suffix);
...@@ -91,7 +91,7 @@ public class LocalStorageServiceImpl implements LocalStorageService { ...@@ -91,7 +91,7 @@ public class LocalStorageServiceImpl implements LocalStorageService {
type, type,
FileUtil.getSize(multipartFile.getSize()) FileUtil.getSize(multipartFile.getSize())
); );
return localStorageMapper.toDto(localStorageRepository.save(localStorage)); localStorageRepository.save(localStorage);
}catch (Exception e){ }catch (Exception e){
FileUtil.del(file); FileUtil.del(file);
throw e; throw e;
......
...@@ -67,7 +67,6 @@ public class QiNiuServiceImpl implements QiNiuService { ...@@ -67,7 +67,6 @@ public class QiNiuServiceImpl implements QiNiuService {
private Long maxSize; private Long maxSize;
@Override @Override
@Cacheable
public Object queryAll(QiniuQueryCriteria criteria, Pageable pageable){ public Object queryAll(QiniuQueryCriteria criteria, Pageable pageable){
return PageUtil.toPage(qiniuContentRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable)); return PageUtil.toPage(qiniuContentRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable));
} }
......
This diff is collapsed.
...@@ -43,11 +43,13 @@ alter table sys_menu CHANGE component_name name VARCHAR(255) COMMENT '组件名 ...@@ -43,11 +43,13 @@ alter table sys_menu CHANGE component_name name VARCHAR(255) COMMENT '组件名
alter table sys_menu CHANGE sort menu_sort INT(5) COMMENT '排序'; alter table sys_menu CHANGE sort menu_sort INT(5) COMMENT '排序';
/* pid 允许为空 */ /* pid 允许为空 */
alter table sys_menu modify pid BIGINT(20) null; alter table sys_menu modify pid BIGINT(20) null;
/* 加入子节点数量字段 */
alter table sys_menu add sub_count INT(5) DEFAULT 0 COMMENT '子菜单数目';
/* 加入通用字段 */ /* 加入通用字段 */
alter table sys_menu add update_by VARCHAR(255) COMMENT '更新者'; alter table sys_menu add update_by VARCHAR(255) COMMENT '更新者';
alter table sys_menu add create_by VARCHAR(255) COMMENT '创建者'; alter table sys_menu add create_by VARCHAR(255) COMMENT '创建者';
alter table sys_menu add update_time datetime COMMENT '更新时间'; alter table sys_menu add update_time datetime COMMENT '更新时间';
-- sys_menu end -- -- sys_menu end --
-- sys_job 表改动 start -- -- sys_job 表改动 start --
/* id 改为 menu_id */ /* id 改为 menu_id */
...@@ -62,13 +64,15 @@ alter table sys_job add update_by VARCHAR(255) COMMENT '更新者'; ...@@ -62,13 +64,15 @@ alter table sys_job add update_by VARCHAR(255) COMMENT '更新者';
alter table sys_job add update_time datetime COMMENT '更新时间'; alter table sys_job add update_time datetime COMMENT '更新时间';
-- sys_job end -- -- sys_job end --
-- sys_dept 表改动 start-- -- sys_dept 表改动 start--
/* id 改为 menu_id */ /* id 改为 menu_id */
alter table sys_dept CHANGE id dept_id BIGINT(20) AUTO_INCREMENT COMMENT 'ID'; alter table sys_dept CHANGE id dept_id BIGINT(20) AUTO_INCREMENT COMMENT 'ID';
/* pid 允许为空 */ /* pid 允许为空 */
alter table sys_dept modify pid BIGINT(20) null; alter table sys_dept modify pid BIGINT(20) null;
/* 加入排序字段 */ /* 加入排序字段 */
alter table sys_dept add dept_sort int(5) DEFAULT 999 COMMENT '排序'; alter table sys_dept add dept_sort int(5) DEFAULT 999 COMMENT '排序';
/* 加入子节点数量字段 */
alter table sys_dept add sub_count INT(5) DEFAULT 0 COMMENT '子部门数目';
/* 加入通用字段 */ /* 加入通用字段 */
alter table sys_dept add create_by VARCHAR(255) COMMENT '创建者'; alter table sys_dept add create_by VARCHAR(255) COMMENT '创建者';
alter table sys_dept add update_by VARCHAR(255) COMMENT '更新者'; alter table sys_dept add update_by VARCHAR(255) COMMENT '更新者';
......
/** 将admin改为管理员 */ /** 将admin改为管理员 */
update sys_user set is_admin = 1 WHERE user_id = 1 update sys_user set is_admin = 1 WHERE user_id = 1
UPDATE sys_dept SET pid = NULL WHERE pid = 0; UPDATE sys_dept SET pid = NULL WHERE pid = 0;
UPDATE sys_menu SET pid = NULL WHERE pid = 0; UPDATE sys_menu SET pid = NULL WHERE pid = 0;
\ No newline at end of file -- 创建零时表并复制数据 --
create table sys_menu_tmp select * from sys_menu;
create table sys_dept_tmp select * from sys_dept;
-- 更新 sub_count --
UPDATE sys_menu s set s.sub_count = (
SELECT COUNT(1) FROM sys_menu_tmp tmp WHERE tmp.pid = s.menu_id
);
UPDATE sys_dept d set d.sub_count = (
SELECT COUNT(1) FROM sys_dept_tmp tmp WHERE tmp.pid = d.dept_id
);
-- 删除零时表 --
DROP TABLE sys_menu_tmp;
DROP TABLE sys_dept_tmp;
\ No newline at end of file
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment