字典支持树上下结构
This commit is contained in:
parent
5da1cc8c0e
commit
570dc63be3
|
@ -1,5 +1,6 @@
|
||||||
package net.maku.system.service.impl;
|
package net.maku.system.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
@ -49,10 +50,20 @@ public class SysDictTypeServiceImpl extends BaseServiceImpl<SysDictTypeDao, SysD
|
||||||
return new PageResult<>(SysDictTypeConvert.INSTANCE.convertList(page.getRecords()), page.getTotal());
|
return new PageResult<>(SysDictTypeConvert.INSTANCE.convertList(page.getRecords()), page.getTotal());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<SysDictTypeVO> list(Long pid) {
|
||||||
|
LambdaQueryWrapper<SysDictTypeEntity> wrapper = new LambdaQueryWrapper<>();
|
||||||
|
wrapper.eq(pid != null, SysDictTypeEntity::getPid, pid);
|
||||||
|
|
||||||
|
List<SysDictTypeEntity> list = baseMapper.selectList(wrapper);
|
||||||
|
return SysDictTypeConvert.INSTANCE.convertList(list);
|
||||||
|
}
|
||||||
|
|
||||||
private Wrapper<SysDictTypeEntity> getWrapper(SysDictTypeQuery query) {
|
private Wrapper<SysDictTypeEntity> getWrapper(SysDictTypeQuery query) {
|
||||||
LambdaQueryWrapper<SysDictTypeEntity> wrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<SysDictTypeEntity> wrapper = new LambdaQueryWrapper<>();
|
||||||
wrapper.like(StrUtil.isNotBlank(query.getDictType()), SysDictTypeEntity::getDictType, query.getDictType());
|
wrapper.like(StrUtil.isNotBlank(query.getDictType()), SysDictTypeEntity::getDictType, query.getDictType());
|
||||||
wrapper.like(StrUtil.isNotBlank(query.getDictName()), SysDictTypeEntity::getDictName, query.getDictName());
|
wrapper.like(StrUtil.isNotBlank(query.getDictName()), SysDictTypeEntity::getDictName, query.getDictName());
|
||||||
|
wrapper.isNull(SysDictTypeEntity::getPid);
|
||||||
wrapper.orderByAsc(SysDictTypeEntity::getSort);
|
wrapper.orderByAsc(SysDictTypeEntity::getSort);
|
||||||
|
|
||||||
return wrapper;
|
return wrapper;
|
||||||
|
@ -63,6 +74,11 @@ public class SysDictTypeServiceImpl extends BaseServiceImpl<SysDictTypeDao, SysD
|
||||||
public void save(SysDictTypeVO vo) {
|
public void save(SysDictTypeVO vo) {
|
||||||
SysDictTypeEntity entity = SysDictTypeConvert.INSTANCE.convert(vo);
|
SysDictTypeEntity entity = SysDictTypeConvert.INSTANCE.convert(vo);
|
||||||
|
|
||||||
|
// 更新上级,有子节点
|
||||||
|
if (vo.getPid() != null) {
|
||||||
|
this.updateHasChild(vo.getPid(), 1);
|
||||||
|
}
|
||||||
|
|
||||||
baseMapper.insert(entity);
|
baseMapper.insert(entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -71,7 +87,39 @@ public class SysDictTypeServiceImpl extends BaseServiceImpl<SysDictTypeDao, SysD
|
||||||
public void update(SysDictTypeVO vo) {
|
public void update(SysDictTypeVO vo) {
|
||||||
SysDictTypeEntity entity = SysDictTypeConvert.INSTANCE.convert(vo);
|
SysDictTypeEntity entity = SysDictTypeConvert.INSTANCE.convert(vo);
|
||||||
|
|
||||||
|
// 更新上级,有子节点
|
||||||
|
if (vo.getPid() != null) {
|
||||||
|
this.updateHasChild(vo.getPid(), 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取原先的上级ID
|
||||||
|
Long oldPid = baseMapper.selectById(vo.getId()).getPid();
|
||||||
|
|
||||||
|
// 更新
|
||||||
updateById(entity);
|
updateById(entity);
|
||||||
|
|
||||||
|
// 上级已修改
|
||||||
|
if (!ObjectUtil.equals(oldPid, vo.getPid())) {
|
||||||
|
long count = baseMapper.selectCount(new LambdaQueryWrapper<SysDictTypeEntity>().eq(SysDictTypeEntity::getPid, oldPid));
|
||||||
|
if (count == 0) {
|
||||||
|
// 更新原先的上级,没有子节点
|
||||||
|
this.updateHasChild(oldPid, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新上级,有子节点
|
||||||
|
*
|
||||||
|
* @param pid 上级ID
|
||||||
|
* @param hasChild 是否有子节点
|
||||||
|
*/
|
||||||
|
private void updateHasChild(Long pid, Integer hasChild) {
|
||||||
|
SysDictTypeEntity entity = new SysDictTypeEntity();
|
||||||
|
entity.setId(pid);
|
||||||
|
entity.setHasChild(hasChild);
|
||||||
|
baseMapper.updateById(entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -107,7 +155,7 @@ public class SysDictTypeServiceImpl extends BaseServiceImpl<SysDictTypeDao, SysD
|
||||||
|
|
||||||
for (SysDictDataEntity data : dataList) {
|
for (SysDictDataEntity data : dataList) {
|
||||||
if (type.getId().equals(data.getDictTypeId())) {
|
if (type.getId().equals(data.getDictTypeId())) {
|
||||||
dict.getDataList().add(new SysDictVO.DictData(data.getDictLabel(), data.getDictValue(), data.getLabelClass()));
|
dict.getDataList().add(new SysDictVO.DictData(data.getDictLabel(), data.getDictValue(), data.getLabelClass(), null));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user