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<DictDetailMapper, DictDetail> implements DictDetailService {
|
|
private final DictMapper dictMapper;
|
private final DictDetailMapper dictDetailMapper;
|
private final RedisUtils redisUtils;
|
|
@Override
|
public PageResult<DictDetail> queryAll(DictDetailQueryCriteria criteria, Page<Object> 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<DictDetail> getDictByName(String name) {
|
String key = CacheKey.DICT_NAME + name;
|
List<DictDetail> 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());
|
}
|
}
|