diff --git a/coder-common-thin-modules/coder-common-thin-system/src/main/java/org/leocoder/thin/system/service/dictdata/SysDictDataService.java b/coder-common-thin-modules/coder-common-thin-system/src/main/java/org/leocoder/thin/system/service/dictdata/SysDictDataService.java new file mode 100644 index 0000000..f44ec8b --- /dev/null +++ b/coder-common-thin-modules/coder-common-thin-system/src/main/java/org/leocoder/thin/system/service/dictdata/SysDictDataService.java @@ -0,0 +1,17 @@ +package org.leocoder.thin.system.service.dictdata; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.leocoder.thin.domain.pojo.system.SysDictData; + +/** + * @author Leocoder + * @description [字典数据表-服务实现层接口] + */ +public interface SysDictDataService extends IService { + + /** + * @description [字典数据同步Redis进行缓存] + * @author Leocoder + */ + void listDictCacheRedis(); +} \ No newline at end of file diff --git a/coder-common-thin-modules/coder-common-thin-system/src/main/java/org/leocoder/thin/system/service/dictdata/SysDictDataServiceImpl.java b/coder-common-thin-modules/coder-common-thin-system/src/main/java/org/leocoder/thin/system/service/dictdata/SysDictDataServiceImpl.java new file mode 100644 index 0000000..5d78c33 --- /dev/null +++ b/coder-common-thin-modules/coder-common-thin-system/src/main/java/org/leocoder/thin/system/service/dictdata/SysDictDataServiceImpl.java @@ -0,0 +1,62 @@ +package org.leocoder.thin.system.service.dictdata; + +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.leocoder.thin.common.constants.CoderCacheConstants; +import org.leocoder.thin.common.constants.CoderConstants; +import org.leocoder.thin.common.utils.cache.RedisUtil; +import org.leocoder.thin.domain.pojo.system.SysDictData; +import org.leocoder.thin.domain.pojo.system.SysDictType; +import org.leocoder.thin.mybatisplus.mapper.system.SysDictDataMapper; +import org.leocoder.thin.mybatisplus.mapper.system.SysDictTypeMapper; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @author Leocoder + * @description [字典数据表-服务实现层] + */ +@Slf4j +@RequiredArgsConstructor +@Service +public class SysDictDataServiceImpl extends ServiceImpl implements SysDictDataService { + + private final SysDictDataMapper sysDictDataMapper; + + private final SysDictTypeMapper sysDictTypeMapper; + + private final RedisUtil redisUtil; + + /** + * @description [字典数据同步Redis进行缓存] + * @author Leocoder + */ + @Override + public void listDictCacheRedis() { + // 1、查询所有可用的字典数据 + LambdaQueryWrapper dictTypeWrapper = new LambdaQueryWrapper<>(); + dictTypeWrapper.select(SysDictType::getDictType, SysDictType::getDictStatus); + List dictTypeList = sysDictTypeMapper.selectList(dictTypeWrapper); + if (CollectionUtil.isNotEmpty(dictTypeList)) { + // 2、根据字典类型查询字典数据 + for (SysDictType sysDictType : dictTypeList) { + if (sysDictType.getDictStatus().equals(CoderConstants.ZERO_STRING)) { + LambdaQueryWrapper dictDataWrapper = new LambdaQueryWrapper<>(); + dictDataWrapper.eq(SysDictData::getDictStatus, CoderConstants.ZERO_STRING); + dictDataWrapper.eq(SysDictData::getDictType, sysDictType.getDictType()); + dictDataWrapper.orderByAsc(SysDictData::getSorted); + List dictDataList = sysDictDataMapper.selectList(dictDataWrapper); + // 3、把字典数据循环存到Redis,设计Redis的key:CoderDict:dictType -> [{},{},{}] + redisUtil.setCacheObject(CoderCacheConstants.DICT_REDIS_KEY + sysDictType.getDictType(), dictDataList); + } else { + redisUtil.deleteKey(CoderCacheConstants.DICT_REDIS_KEY + sysDictType.getDictType()); + } + } + } + } + +} \ No newline at end of file diff --git a/coder-common-thin-modules/coder-common-thin-system/src/main/java/org/leocoder/thin/system/service/dicttype/SysDictTypeService.java b/coder-common-thin-modules/coder-common-thin-system/src/main/java/org/leocoder/thin/system/service/dicttype/SysDictTypeService.java new file mode 100644 index 0000000..cb79965 --- /dev/null +++ b/coder-common-thin-modules/coder-common-thin-system/src/main/java/org/leocoder/thin/system/service/dicttype/SysDictTypeService.java @@ -0,0 +1,12 @@ +package org.leocoder.thin.system.service.dicttype; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.leocoder.thin.domain.pojo.system.SysDictType; + +/** + * @author Leocoder + * @description [字典类型表-服务实现层接口] + */ +public interface SysDictTypeService extends IService { + +} \ No newline at end of file diff --git a/coder-common-thin-modules/coder-common-thin-system/src/main/java/org/leocoder/thin/system/service/dicttype/SysDictTypeServiceImpl.java b/coder-common-thin-modules/coder-common-thin-system/src/main/java/org/leocoder/thin/system/service/dicttype/SysDictTypeServiceImpl.java new file mode 100644 index 0000000..3958a07 --- /dev/null +++ b/coder-common-thin-modules/coder-common-thin-system/src/main/java/org/leocoder/thin/system/service/dicttype/SysDictTypeServiceImpl.java @@ -0,0 +1,21 @@ +package org.leocoder.thin.system.service.dicttype; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.leocoder.thin.domain.pojo.system.SysDictType; +import org.leocoder.thin.mybatisplus.mapper.system.SysDictTypeMapper; +import org.springframework.stereotype.Service; + +/** + * @author Leocoder + * @description [字典类型表-服务实现层] + */ +@Slf4j +@RequiredArgsConstructor +@Service +public class SysDictTypeServiceImpl extends ServiceImpl implements SysDictTypeService { + + private final SysDictTypeMapper sysDictTypeMapper; + +} \ No newline at end of file