lizijie
2021-08-25 21debf9e346f544e38e5e237fcd40a130fb3f260
screen-manage/src/main/java/com/moral/api/service/impl/SysDictDataServiceImpl.java
@@ -13,6 +13,7 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.moral.api.service.SysDictTypeService;
import com.moral.api.util.CacheUtils;
import com.moral.api.util.LogUtils;
import com.moral.constant.Constants;
import com.moral.constant.RedisConstants;
import com.moral.constant.ResponseCodeEnum;
@@ -43,6 +44,8 @@
    SysDictDataMapper sysDictDataMapper;
    @Autowired
    RedisTemplate redisTemplate;
    @Autowired
    LogUtils logUtils;
    @Override
    @Transactional
@@ -51,18 +54,25 @@
        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);
        SysDictType type = sysDictTypeService.getDictTypeById(existData.getDictTypeId());
        //执行删除
        UpdateWrapper deleteWrapper = new UpdateWrapper();
        deleteWrapper.set("is_delete", Constants.DELETE);
        deleteWrapper.eq("id", id);
        sysDictDataMapper.update(null, deleteWrapper);
        //删除缓存
        CacheUtils.clearDictionariesCache();
        //插入日志
        StringBuilder content = new StringBuilder("删除了字典数据;");
        content.append("类型:"+type.getName()+"("+type.getDesc()+")"+";");
        content.append("key:"+existData.getDataKey()+";");
        content.append("value:"+existData.getDataValue()+";");
        logUtils.saveOperationForManage(content.toString(),Constants.DELETE_OPERATE_TYPE);
        //刷新缓存
        refreshCache();
        //封装返回对象
        dto.setCode(ResponseCodeEnum.SUCCESS.getCode());
        dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg());
@@ -79,6 +89,7 @@
        existWrapper.eq("is_delete", Constants.NOT_DELETE);
        existWrapper.eq("id", sysDictData.getId());
        SysDictData existData = sysDictDataMapper.selectOne(existWrapper);
        SysDictType type = sysDictTypeService.getDictTypeById(existData.getDictTypeId());
        //判断key是否重复
        String key = sysDictData.getDataKey();
        if (!ObjectUtils.isEmpty(key)) {
@@ -95,21 +106,21 @@
        }
        //执行更新
        sysDictDataMapper.updateById(sysDictData);
        //清除缓存
        CacheUtils.clearDictionariesCache();
        //插入日志
        StringBuilder content = new StringBuilder("修改了字典数据;");
        content.append("类型:"+type.getName()+"("+type.getDesc()+")"+";");
        content.append("key:"+existData.getDataKey()+";");
        content.append("value:"+existData.getDataValue()+"->"+sysDictData.getDataValue()+";");
        logUtils.saveOperationForManage(content.toString(),Constants.UPDATE_OPERATE_TYPE);
        //刷新缓存
        refreshCache();
        //封装返回结果
        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();
@@ -136,21 +147,20 @@
        }
        //执行插入
        sysDictDataMapper.insert(sysDictData);
        //清除缓存
        CacheUtils.clearDictionariesCache();
        //插入日志
        StringBuilder content = new StringBuilder("添加了字典数据;");
        content.append("类型:"+type.getName()+"("+type.getDesc()+")"+";");
        content.append("key:"+sysDictData.getDataKey()+";");
        content.append("value:"+sysDictData.getDataValue()+";");
        logUtils.saveOperationForManage(content.toString(),Constants.INSERT_OPERATE_TYPE);
        //刷新缓存
        refreshCache();
        //封装返回结果
        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();
@@ -188,6 +198,13 @@
        return result;
    }
    @Override
    public void refreshCache(){
        redisTemplate.delete(RedisConstants.DICT_DATA_KEY);
        Map<String, List<SysDictData>> datas = getDictDataFromDB();
        redisTemplate.opsForValue().set(RedisConstants.DICT_DATA_KEY, datas);
    }
    /**
     * @Description: 从数据库中根据字典类型读取字典数据,返回Map  Key:类型名称 value:数据集合
@@ -209,3 +226,4 @@
        return result;
    }
}