package com.javaweb.cms.service.impl; import java.util.List; import cn.hutool.cache.Cache; import cn.hutool.cache.CacheUtil; import com.google.common.collect.Lists; import com.javaweb.cms.domain.Tags; import com.javaweb.cms.mapper.TagsMapper; import com.javaweb.cms.util.CmsConstants; import com.javaweb.common.utils.DateUtils; import com.javaweb.common.utils.StringUtils; import com.javaweb.framework.util.ShiroUtils; import com.javaweb.system.domain.SysUser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.javaweb.cms.mapper.ArticleTemplateMapper; import com.javaweb.cms.domain.ArticleTemplate; import com.javaweb.cms.service.IArticleTemplateService; import com.javaweb.common.core.text.Convert; /** * 文章模板Service业务层处理 * * @author markbro * @date 2019-12-31 */ @Service public class ArticleTemplateServiceImpl implements IArticleTemplateService { @Autowired private ArticleTemplateMapper articleTemplateMapper; @Autowired private TagsMapper tagsMapper; private Cache tagCache= CacheUtil.newLFUCache(100); /** * 查询文章模板 * * @param id 文章模板ID * @return 文章模板 */ @Override public ArticleTemplate selectArticleTemplateById(Long id) { return articleTemplateMapper.selectArticleTemplateById(id); } /** * 查询文章模板列表 * * @param articleTemplate 文章模板 * @return 文章模板 */ @Override public List selectArticleTemplateList(ArticleTemplate articleTemplate) { List articleTemplates=articleTemplateMapper.selectArticleTemplateList(articleTemplate); selectTags(articleTemplates); return articleTemplates; } /** * 新增文章模板 * * @param articleTemplate 文章模板 * @return 结果 */ @Override public int insertArticleTemplate(ArticleTemplate articleTemplate) { SysUser user= ShiroUtils.getSysUser(); articleTemplate.setUserId(user.getUserId().toString()); articleTemplate.setUserName(user.getUserName()); articleTemplate.setCreateTime(DateUtils.getNowDate()); articleTemplate.setAudit(0); return articleTemplateMapper.insertArticleTemplate(articleTemplate); } /** * 修改文章模板 * * @param articleTemplate 文章模板 * @return 结果 */ @Override public int updateArticleTemplate(ArticleTemplate articleTemplate) { return articleTemplateMapper.updateArticleTemplate(articleTemplate); } /** * 删除文章模板对象 * * @param ids 需要删除的数据ID * @return 结果 */ @Override public int deleteArticleTemplateByIds(String ids) { return articleTemplateMapper.deleteArticleTemplateByIds(Convert.toStrArray(ids)); } /** * 删除文章模板信息 * * @param id 文章模板ID * @return 结果 */ @Override public int deleteArticleTemplateById(Long id) { return articleTemplateMapper.deleteArticleTemplateById(id); } @Override public List selectArticleTemplateTags(String tagIds) { List tags = articleTemplateMapper.selectArticleTemplateTags(); if(StringUtils.isEmpty(tagIds)){ return tags; } if(tagIds.endsWith(",")){ tagIds=tagIds.substring(0,tagIds.length()-1); } String[] arr=Convert.toStrArray(tagIds); List list= Lists.newArrayList(arr); tags.forEach(t->{ if(list.contains(t.getTagId().toString())){ t.setSelected(true); } }); return tags; } private void selectTags(List articleTemplates){ //转换标签名称,这部分可以使用缓存提升性能 articleTemplates.forEach(a->{ String tagsStr=a.getTags(); if(StringUtils.isNotEmpty(tagsStr)){ String[] tagsArr=Convert.toStrArray(tagsStr); String tags_name=""; List tags= Lists.newArrayList(); for(String id:tagsArr){ if(StringUtils.isNotEmpty(id)){ Tags tag=tagCache.get(id); if(tag==null){ tag=tagsMapper.selectTagsById(Long.valueOf(id)); tagCache.put(id,tag); } tags.add(tag); if(tag!=null){ tags_name+=tag.getTagName()+","; } } } if(tags_name.endsWith(",")){ tags_name=StringUtils.substring(tags_name,0,tags_name.length()-1); } a.setTagNames(tags_name); //a.setTagList(tags); } }); } }