fix:修改字典值重复引发的Trans组件失效问题。

This commit is contained in:
LSF 2024-03-07 14:20:02 +08:00
parent adbebc144c
commit 0cc015e6f3
2 changed files with 25 additions and 3 deletions

View File

@ -3,14 +3,16 @@ package net.maku.system.service.impl;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.AllArgsConstructor;
import net.maku.framework.common.exception.ServerException;
import net.maku.framework.common.utils.PageResult;
import net.maku.framework.mybatis.service.impl.BaseServiceImpl;
import net.maku.system.convert.SysDictDataConvert;
import net.maku.system.dao.SysDictDataDao;
import net.maku.system.entity.SysDictDataEntity;
import net.maku.system.service.SysDictDataService;
import net.maku.system.query.SysDictDataQuery;
import net.maku.system.service.SysDictDataService;
import net.maku.system.vo.SysDictDataVO;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -45,6 +47,13 @@ public class SysDictDataServiceImpl extends BaseServiceImpl<SysDictDataDao, SysD
@Override
@Transactional(rollbackFor = Exception.class)
public void save(SysDictDataVO vo) {
SysDictDataEntity sysDictData = getOne(Wrappers.<SysDictDataEntity>lambdaQuery()
.eq(SysDictDataEntity::getDictTypeId, vo.getDictTypeId())
.eq(SysDictDataEntity::getDictValue, vo.getDictValue()));
if (sysDictData != null) {
throw new ServerException("字典值重复!");
}
SysDictDataEntity entity = SysDictDataConvert.INSTANCE.convert(vo);
baseMapper.insert(entity);
@ -53,6 +62,14 @@ public class SysDictDataServiceImpl extends BaseServiceImpl<SysDictDataDao, SysD
@Override
@Transactional(rollbackFor = Exception.class)
public void update(SysDictDataVO vo) {
SysDictDataEntity sysDictData = getOne(Wrappers.<SysDictDataEntity>lambdaQuery()
.eq(SysDictDataEntity::getDictTypeId, vo.getDictTypeId())
.eq(SysDictDataEntity::getDictValue, vo.getDictValue())
.ne(SysDictDataEntity::getId, vo.getId()));
if (sysDictData != null) {
throw new ServerException("字典值重复!");
}
SysDictDataEntity entity = SysDictDataConvert.INSTANCE.convert(vo);
updateById(entity);
@ -64,4 +81,5 @@ public class SysDictDataServiceImpl extends BaseServiceImpl<SysDictDataDao, SysD
removeByIds(idList);
}
}

View File

@ -144,8 +144,12 @@ public class SysDictTypeServiceImpl extends BaseServiceImpl<SysDictTypeDao, SysD
List<SysDictTypeEntity> dictTypeEntities = super.list();
for (SysDictTypeEntity dictTypeEntity : dictTypeEntities) {
if (dictTypeDataMap.containsKey(dictTypeEntity.getId())) {
dictionaryTransService.refreshCache(dictTypeEntity.getDictType(), dictTypeDataMap.get(dictTypeEntity.getId())
.stream().collect(Collectors.toMap(SysDictDataEntity::getDictValue, SysDictDataEntity::getDictLabel)));
try {
dictionaryTransService.refreshCache(dictTypeEntity.getDictType(), dictTypeDataMap.get(dictTypeEntity.getId())
.stream().collect(Collectors.toMap(SysDictDataEntity::getDictValue, SysDictDataEntity::getDictLabel)));
} catch (Exception e) {
log.error("刷新字典缓存异常: type=" + dictTypeEntity, e);
}
}
}
return null;