@Cacheable 同一个service方法中不起作用


@Service
@Transactional
@CacheConfig(cacheNames = Constants.ESEN_PROFILE_TAG_CACHE_NAME)
public class TagServiceImpl implements TagService{

    private final Logger log = LoggerFactory.getLogger(TagServiceImpl.class);

    private final TagRepository tagRepository;

    private final TagMapper tagMapper;

    @Autowired
    private TagServiceImpl instance;

    public TagServiceImpl(TagRepository tagRepository, TagMapper tagMapper) {
        this.tagRepository = tagRepository;
        this.tagMapper = tagMapper;
    }

  
    @Override
    public List<TagResultDTO> query(String userId) {
        String currentUserId = SecurityUtils.getCurrentUserId();
        if (StringUtils.isEmpty(userId)) {
            userId = currentUserId;
        }
        List<Tag> tags = instance.getTags(userId);
        return tags.stream().map(tag -> {
            TagResultDTO resultDTO = new TagResultDTO();
            resultDTO.setName(tag.getName());
            resultDTO.setFavorite(false);

            if (null != tag.getFavorites() && tag.getFavorites().size() > 0) {
                resultDTO.setCount(Long.valueOf(tag.getFavorites().size()));
                tag.getFavorites().forEach(
                    tagFavorite -> {
                        if (currentUserId.equals(tagFavorite.getCreatedBy())){
                            resultDTO.setFavorite(true);
                        }
                    });

            } else {
                resultDTO.setCount(0L);
            }

            return resultDTO;
        }).collect(Collectors.toList());

    }

    @Cacheable(key = "'tags' + #userId")
    public List<Tag> getTags(String userId) {
        List<Tag> tags =  tagRepository.findAllByUserIdAndDelFlagFalseOrderByCreatedTime(userId);
        tags.forEach(tag -> {
            tag.getFavorites();
        });
        return tags;
    }

}
发布了39 篇原创文章 · 获赞 3 · 访问量 4万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览