From 895136cb544ae2f46cd76d184ec14760e82353a7 Mon Sep 17 00:00:00 2001 From: kaiyu <404897439@qq.com> Date: Fri, 16 Apr 2021 17:33:03 +0800 Subject: [PATCH] screen-manage 字典模块 缓存模块 --- screen-manage/src/main/java/com/moral/api/service/impl/SysDictDataServiceImpl.java | 172 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 171 insertions(+), 1 deletions(-) diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/SysDictDataServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/SysDictDataServiceImpl.java index 4eba4ad..cfca955 100644 --- a/screen-manage/src/main/java/com/moral/api/service/impl/SysDictDataServiceImpl.java +++ b/screen-manage/src/main/java/com/moral/api/service/impl/SysDictDataServiceImpl.java @@ -1,10 +1,30 @@ package com.moral.api.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.moral.api.entity.SysDictData; +import com.moral.api.entity.SysDictType; import com.moral.api.mapper.SysDictDataMapper; +import com.moral.api.pojo.dto.sysDictData.SysDictDataDTO; +import com.moral.api.pojo.form.sysDictData.SysDictDataDeleteForm; +import com.moral.api.pojo.form.sysDictData.SysDictDataInsertForm; +import com.moral.api.pojo.form.sysDictData.SysDictDataUpdateForm; import com.moral.api.service.SysDictDataService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.moral.api.service.SysDictTypeService; +import com.moral.api.util.CacheUtils; +import com.moral.constant.Constants; +import com.moral.constant.RedisConstants; +import com.moral.constant.ResponseCodeEnum; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.ObjectUtils; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * <p> @@ -12,9 +32,159 @@ * </p> * * @author moral - * @since 2021-03-09 + * @since 2021-04-13 */ @Service public class SysDictDataServiceImpl extends ServiceImpl<SysDictDataMapper, SysDictData> implements SysDictDataService { + @Autowired + SysDictTypeService sysDictTypeService; + @Autowired + SysDictDataMapper sysDictDataMapper; + @Autowired + RedisTemplate redisTemplate; + + @Override + @Transactional + public SysDictDataDTO deleteData(SysDictDataDeleteForm form) { + //������������������ + SysDictDataDTO dto = new SysDictDataDTO(); + //������ + Integer id = form.getId(); + //������������������ + QueryWrapper existWrapper = new QueryWrapper(); + existWrapper.eq("is_delete",Constants.NOT_DELETE); + existWrapper.eq("id",id); + SysDictData existData = sysDictDataMapper.selectOne(existWrapper); + //������������ + UpdateWrapper deleteWrapper = new UpdateWrapper(); + deleteWrapper.set("is_delete",Constants.DELETE); + deleteWrapper.eq("id",id); + sysDictDataMapper.update(null,deleteWrapper); + //������������ + CacheUtils.clearDictionariesCache(); + //������������������ + dto.setSysDictData(existData); + dto.setCode(ResponseCodeEnum.SUCCESS.getCode()); + dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg()); + return dto; + } + + @Override + public SysDictDataDTO updateData(SysDictDataUpdateForm form) { + SysDictDataDTO dto = new SysDictDataDTO(); + //������ + SysDictData sysDictData = form.formConvertEntity(); + //������������������������ + QueryWrapper<SysDictData> existWrapper = new QueryWrapper<>(); + existWrapper.eq("is_delete", Constants.NOT_DELETE); + existWrapper.eq("id", sysDictData.getId()); + SysDictData existData = sysDictDataMapper.selectOne(existWrapper); + //������������ + sysDictDataMapper.updateById(sysDictData); + //������������ + CacheUtils.clearDictionariesCache(); + //������������������ + dto.setSysDictData(sysDictData); + dto.setCode(ResponseCodeEnum.SUCCESS.getCode()); + dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg()); + return dto; + } + + /** + * @Description: ������������������id������������������������ + * @Param: [form] + * @return: com.moral.api.pojo.dto.sysDictData.SysDictDataDTO + * @Author: ��������� + * @Date: 2021/4/16 + */ + @Override + public SysDictDataDTO insertData(SysDictDataInsertForm form) { + SysDictDataDTO dto = new SysDictDataDTO(); + //������ + SysDictData sysDictData = form.formConvertEntity(); + //������������������������ + SysDictType type = sysDictTypeService.getDictTypeById(sysDictData.getDictTypeId()); + if (ObjectUtils.isEmpty(type)) { + dto.setCode(ResponseCodeEnum.DICTTYPE_NOT_EXIST.getCode()); + dto.setMsg(ResponseCodeEnum.DICTTYPE_NOT_EXIST.getMsg()); + return dto; + } + //������Key������������ + String key = sysDictData.getDataKey(); + QueryWrapper<SysDictData> wrapper = new QueryWrapper<>(); + wrapper.eq("is_delete", Constants.NOT_DELETE); + wrapper.eq("dataKey", key); + wrapper.eq("dict_type_id", type.getId()); + SysDictData existKeyData = sysDictDataMapper.selectOne(wrapper); + if (!ObjectUtils.isEmpty(existKeyData)) { + dto.setCode(ResponseCodeEnum.DICTDATA_KEY_EXIST.getCode()); + dto.setMsg(ResponseCodeEnum.DICTDATA_KEY_EXIST.getMsg()); + return dto; + } + //������������ + sysDictDataMapper.insert(sysDictData); + //������������ + CacheUtils.clearDictionariesCache(); + //������������������ + dto.setSysDictData(sysDictData); + dto.setSysDictType(type); + dto.setCode(ResponseCodeEnum.SUCCESS.getCode()); + dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg()); + return dto; + } + + /** + * @Description: ��������������������������������������������� + * @Param: [typeName] + * @return: java.util.Map<java.lang.String , java.lang.Object> + * @Author: ��������� + * @Date: 2021/4/16 + */ + @Override + public Map<String, Object> queryDataByTypeName(String typeName) { + Map<String, List<SysDictData>> datas = getAllDictData(); + //������������������ + List<SysDictData> sysDictData = datas.get(typeName); + //��������������������������� Map key���dataKey value���dataValue + Map<String, Object> result = new HashMap<>(); + for (SysDictData data : sysDictData) { + result.put(data.getDataKey(), data.getDataValue()); + } + return result; + } + + @Override + public Map<String, List<SysDictData>> getAllDictData() { + Map<String, List<SysDictData>> datas = new HashMap<>(); + //������������������ + datas = (Map<String, List<SysDictData>>) redisTemplate.opsForValue().get(RedisConstants.DICT_DATA_KEY); + if (ObjectUtils.isEmpty(datas)) {//��������������������� + datas = getDictDataFromDB(); + //������������ + redisTemplate.opsForValue().set(RedisConstants.DICT_DATA_KEY, datas); + } + return datas; + } + + + /** + * @Description: ������������������������������������������������������������Map Key��������������� value��������������� + * @Param: [] + * @return: java.util.Map<java.lang.String , java.util.List < com.moral.api.entity.sysDictData>> + * @Author: ��������� + * @Date: 2021/4/14 + */ + private Map<String, List<SysDictData>> getDictDataFromDB() { + Map<String, List<SysDictData>> result = new HashMap<>(); + List<SysDictType> types = sysDictTypeService.getAllDictType(); + for (SysDictType type : types) { + QueryWrapper<SysDictData> wrapper = new QueryWrapper<>(); + wrapper.eq("is_delete", Constants.NOT_DELETE); + wrapper.eq("dict_type_id", type.getId()); + List<SysDictData> datas = sysDictDataMapper.selectList(wrapper); + result.put(type.getName(), datas); + } + return result; + } } -- Gitblit v1.8.0