package com.ruoyi.article.service.impl;
import com.alibaba.excel.EasyExcel;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.article.controller.management.dto.MgtSensitiveWordsDTO;
import com.ruoyi.article.controller.management.dto.MgtSensitiveWordsQuery;
import com.ruoyi.article.controller.management.vo.MgtSensitiveWordsVO;
import com.ruoyi.article.domain.SensitiveWords;
import com.ruoyi.article.listener.SensitiveWordsListener;
import com.ruoyi.article.mapper.SensitiveWordsMapper;
import com.ruoyi.article.service.ISensitiveWordsService;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.utils.page.BeanUtils;
import com.ruoyi.common.core.utils.page.CollUtils;
import com.ruoyi.common.core.utils.page.PageDTO;
import com.ruoyi.system.api.domain.dto.judgeSensitiveWordsDTO;
import com.ruoyi.system.api.domain.vo.judgeSensitiveWordsVO;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
/**
*
* 敏感词管理 服务实现类
*
*
* @author mitao
* @since 2024-05-16
*/
@Service
public class SensitiveWordsServiceImpl extends ServiceImpl implements ISensitiveWordsService {
@Override
public List getMemberArticleList() {
LambdaQueryWrapper wrapper= Wrappers.lambdaQuery();
wrapper.eq(SensitiveWords::getDelFlag,0);
return this.list(wrapper);
}
@Override
public judgeSensitiveWordsVO judgeSensitiveWordsList(judgeSensitiveWordsDTO SensitiveWordsDTO) {
judgeSensitiveWordsVO SensitiveWordsVO = new judgeSensitiveWordsVO();
LambdaQueryWrapper wrapper= Wrappers.lambdaQuery();
wrapper.eq(SensitiveWords::getDelFlag,0);
List list = this.list(wrapper);
if (CollUtils.isNotEmpty(list)) {
List sensitiveWords = new ArrayList<>();
for (SensitiveWords l : list) {
sensitiveWords.add(l.getWord());
}
Pattern pattern = Pattern.compile(String.join("|", sensitiveWords),
Pattern.CASE_INSENSITIVE);
boolean b = pattern.matcher(SensitiveWordsDTO.getText()).find();
if (b) {
SensitiveWordsVO.setType(1);
} else {
SensitiveWordsVO.setType(2);
}
} else {
SensitiveWordsVO.setType(2);
}
return SensitiveWordsVO;
}
/**
* 获取敏感词列表的分页数据
*
* @param query 管理后台-敏感词查询对象
* @return PageDTO
*/
@Override
public PageDTO getSensitiveWordsPage(MgtSensitiveWordsQuery query) {
PageDTO pageVO;
Page page = this.lambdaQuery()
.like(StringUtils.isNotBlank(query.getWord()), SensitiveWords::getWord,
query.getWord()).orderByDesc(SensitiveWords::getCreateTime)
.page(new Page<>(query.getPageCurr(), query.getPageSize()));
if (StringUtils.isEmpty(page.getRecords())) {
pageVO = PageDTO.empty(page);
} else {
pageVO = PageDTO.of(page, MgtSensitiveWordsVO.class);
}
return pageVO;
}
/**
* 添加敏感词
*
* @param dto 敏感词数据传输对象
*/
@Override
public void saveSensitiveWords(MgtSensitiveWordsDTO dto) {
this.save(BeanUtils.copyBean(dto, SensitiveWords.class));
}
/**
* 敏感词导入
*
* @param file 导入文件
* @return
*/
@Override
public void importSensitiveWords(MultipartFile file) throws IOException {
EasyExcel.read(file.getInputStream(), MgtSensitiveWordsDTO.class,
new SensitiveWordsListener(this)).sheet().doRead();
}
}