package com.oying.modules.system.service.impl; import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.oying.modules.system.domain.Dict; import com.oying.modules.system.domain.DictDetail; import com.oying.modules.system.domain.dto.DictDetailQueryCriteria; import com.oying.modules.system.mapper.DictDetailMapper; import com.oying.modules.system.mapper.DictMapper; import lombok.RequiredArgsConstructor; import com.oying.utils.CacheKey; import com.oying.utils.PageResult; import com.oying.utils.PageUtil; import com.oying.utils.RedisUtils; import com.oying.modules.system.service.DictDetailService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.concurrent.TimeUnit; /** * @author Z * @date 2019-04-10 */ @Service @RequiredArgsConstructor public class DictDetailServiceImpl extends ServiceImpl implements DictDetailService { private final DictMapper dictMapper; private final DictDetailMapper dictDetailMapper; private final RedisUtils redisUtils; @Override public PageResult queryAll(DictDetailQueryCriteria criteria, Page page) { return PageUtil.toPage(dictDetailMapper.findAll(criteria, page)); } @Override @Transactional(rollbackFor = Exception.class) public void create(DictDetail resources) { resources.setDictId(resources.getDict().getId()); save(resources); // 清理缓存 delCaches(resources); } @Override @Transactional(rollbackFor = Exception.class) public void update(DictDetail resources) { DictDetail dictDetail = getById(resources.getId()); resources.setId(dictDetail.getId()); // 更新数据 saveOrUpdate(resources); // 清理缓存 delCaches(dictDetail); } @Override public List getDictByName(String name) { String key = CacheKey.DICT_NAME + name; List dictDetails = redisUtils.getList(key, DictDetail.class); if(CollUtil.isEmpty(dictDetails)){ dictDetails = dictDetailMapper.findByDictName(name); redisUtils.set(key, dictDetails, 1 , TimeUnit.DAYS); } return dictDetails; } @Override @Transactional(rollbackFor = Exception.class) public void delete(Long id) { DictDetail dictDetail = getById(id); removeById(id); // 清理缓存 delCaches(dictDetail); } public void delCaches(DictDetail dictDetail){ Dict dict = dictMapper.selectById(dictDetail.getDictId()); redisUtils.del(CacheKey.DICT_NAME + dict.getName()); } }