1、新增全文搜索

2、删除失败问题修复
This commit is contained in:
马超 2021-06-07 16:14:31 +08:00
parent d34e0f9b6e
commit 734da29a28
10 changed files with 37 additions and 32 deletions

View File

@ -10,6 +10,9 @@ import com.qiwenshare.file.domain.TreeNode;
import com.qiwenshare.file.domain.UserFile; import com.qiwenshare.file.domain.UserFile;
import com.qiwenshare.file.mapper.UserFileMapper; import com.qiwenshare.file.mapper.UserFileMapper;
import com.qiwenshare.file.vo.file.FileListVo; import com.qiwenshare.file.vo.file.FileListVo;
import com.qiwenshare.ufo.factory.UFOFactory;
import com.qiwenshare.ufo.operation.read.Reader;
import com.qiwenshare.ufo.operation.read.domain.ReadFile;
import com.qiwenshare.ufo.util.PathUtil; import com.qiwenshare.ufo.util.PathUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -32,6 +35,8 @@ public class FileDealComp {
@Autowired @Autowired
private IElasticSearchService elasticSearchService; private IElasticSearchService elasticSearchService;
@Resource
UFOFactory ufoFactory;
/** /**
* 获取重复文件名 * 获取重复文件名
* *
@ -230,6 +235,12 @@ public class FileDealComp {
if (userfileResult != null && userfileResult.size() > 0) { if (userfileResult != null && userfileResult.size() > 0) {
FileSearch fileSearch = new FileSearch(); FileSearch fileSearch = new FileSearch();
BeanUtil.copyProperties(userfileResult.get(0), fileSearch); BeanUtil.copyProperties(userfileResult.get(0), fileSearch);
Reader reader = ufoFactory.getReader(fileSearch.getStorageType());
ReadFile readFile = new ReadFile();
readFile.setFileUrl(fileSearch.getFileUrl());
String content = reader.read(readFile);
//全文搜索
// fileSearch.setContent(content);
elasticSearchService.save(fileSearch); elasticSearchService.save(fileSearch);
} }
} catch (Exception e) { } catch (Exception e) {

View File

@ -15,6 +15,8 @@ public class FileSearch {
private Long fileId; private Long fileId;
@Field(type = FieldType.Text, analyzer = "ik_max_word") @Field(type = FieldType.Text, analyzer = "ik_max_word")
private String fileName; private String fileName;
@Field(type = FieldType.Text, analyzer = "ik_max_word")
private String content;
@Field(type = FieldType.Keyword) @Field(type = FieldType.Keyword)
private String timeStampName; private String timeStampName;
@Field(type = FieldType.Keyword) @Field(type = FieldType.Keyword)

View File

@ -126,7 +126,8 @@ public class FileController {
} }
queryBuilder.withQuery(QueryBuilders.boolQuery() queryBuilder.withQuery(QueryBuilders.boolQuery()
.must(QueryBuilders.matchQuery("fileName", searchFileDTO.getFileName())) // .must(QueryBuilders.matchQuery("fileName", searchFileDTO.getFileName()))
.must(QueryBuilders.multiMatchQuery(searchFileDTO.getFileName(),"fileName", "content"))
.must(QueryBuilders.termQuery("userId", sessionUserBean.getUserId())) .must(QueryBuilders.termQuery("userId", sessionUserBean.getUserId()))
); );
SearchHits<FileSearch> search = elasticsearchRestTemplate.search(queryBuilder.build(), FileSearch.class); SearchHits<FileSearch> search = elasticsearchRestTemplate.search(queryBuilder.build(), FileSearch.class);
@ -255,7 +256,6 @@ public class FileController {
DigestUtils.md5Hex("data"); DigestUtils.md5Hex("data");
for (UserFile userFile : userFiles) { for (UserFile userFile : userFiles) {
//userFile.setDeleteBatchNum(uuid);
userFileService.deleteUserFile(userFile.getUserFileId(),sessionUserBean.getUserId()); userFileService.deleteUserFile(userFile.getUserFileId(),sessionUserBean.getUserId());
fileDealComp.deleteESByUserFileId(userFile.getUserFileId()); fileDealComp.deleteESByUserFileId(userFile.getUserFileId());
} }

View File

@ -138,6 +138,7 @@ public class FiletransferController {
} }
httpServletResponse.addHeader("Content-Disposition", "attachment;fileName=" + fileName);// 设置文件名 httpServletResponse.addHeader("Content-Disposition", "attachment;fileName=" + fileName);// 设置文件名
filetransferService.downloadFile(httpServletResponse, downloadFileDTO); filetransferService.downloadFile(httpServletResponse, downloadFileDTO);
} }

View File

@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qiwenshare.file.api.IElasticSearchService; import com.qiwenshare.file.api.IElasticSearchService;
import com.qiwenshare.file.component.FileDealComp;
import com.qiwenshare.file.config.es.FileSearch; import com.qiwenshare.file.config.es.FileSearch;
import com.qiwenshare.file.domain.FileBean; import com.qiwenshare.file.domain.FileBean;
import com.qiwenshare.file.domain.UserFile; import com.qiwenshare.file.domain.UserFile;
@ -12,6 +13,9 @@ import com.qiwenshare.file.service.FiletransferService;
import com.qiwenshare.file.service.UserFileService; import com.qiwenshare.file.service.UserFileService;
import com.qiwenshare.file.service.UserService; import com.qiwenshare.file.service.UserService;
import com.qiwenshare.file.vo.file.FileListVo; import com.qiwenshare.file.vo.file.FileListVo;
import com.qiwenshare.ufo.factory.UFOFactory;
import com.qiwenshare.ufo.operation.read.Reader;
import com.qiwenshare.ufo.operation.read.domain.ReadFile;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.catalina.User; import org.apache.catalina.User;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -35,6 +39,8 @@ public class TaskController {
FiletransferService filetransferService; FiletransferService filetransferService;
@Autowired @Autowired
private IElasticSearchService elasticSearchService; private IElasticSearchService elasticSearchService;
@Resource
FileDealComp fileDealComp;
@Scheduled(cron = "0 0/1 * * * ?") @Scheduled(cron = "0 0/1 * * * ?")
public void deleteFile() { public void deleteFile() {
@ -55,22 +61,17 @@ public class TaskController {
@Scheduled(fixedRate = 1000 * 60 * 60 * 24) @Scheduled(fixedRate = 1000 * 60 * 60 * 24)
public void updateElasticSearch() { public void updateElasticSearch() {
UserFile userFile = new UserFile();
try { try {
elasticSearchService.deleteAll(); elasticSearchService.deleteAll();
} catch (Exception e) { } catch (Exception e) {
log.error("删除ES失败:" + e); log.error("删除ES失败:" + e);
} }
try {
List<FileListVo> userfiles = userFileService.userFileList(userFile, 0L, 999999L); List<UserFile> userfileList = userFileService.list();
for (FileListVo fileListVo : userfiles) { for (UserFile userFile : userfileList) {
log.info(JSON.toJSONString(fileListVo)); log.info(JSON.toJSONString(userFile));
FileSearch fileSearch = new FileSearch(); fileDealComp.uploadESByUserFileId(userFile.getUserFileId());
BeanUtil.copyProperties(fileListVo, fileSearch);
elasticSearchService.save(fileSearch);
}
} catch (Exception e) {
log.error("更新ES失败:" + e);
} }
} }
} }

View File

@ -2,6 +2,7 @@ package com.qiwenshare.file.controller;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qiwenshare.common.result.RestResult; import com.qiwenshare.common.result.RestResult;
import com.qiwenshare.common.util.JjwtUtil; import com.qiwenshare.common.util.JjwtUtil;
import com.qiwenshare.file.anno.MyLog; import com.qiwenshare.file.anno.MyLog;
@ -14,6 +15,7 @@ import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.digest.Md5Crypt;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.crypto.hash.SimpleHash; import org.apache.shiro.crypto.hash.SimpleHash;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -66,7 +68,12 @@ public class UserController {
} }
String jwt = ""; String jwt = "";
try { try {
jwt = JjwtUtil.createJWT("qiwenshare", "qiwen", JSON.toJSONString(saveUserBean)); UserBean sessionUserBean = new UserBean();
sessionUserBean.setPassword(saveUserBean.getPassword());
sessionUserBean.setQqPassword(saveUserBean.getQqPassword());
sessionUserBean.setTelephone(saveUserBean.getTelephone());
sessionUserBean.setOpenId(saveUserBean.getOpenId());
jwt = JjwtUtil.createJWT("qiwenshare", "qiwen", JSON.toJSONString(sessionUserBean));
} catch (Exception e) { } catch (Exception e) {
log.info("登录失败:{}", e); log.info("登录失败:{}", e);
return RestResult.fail().message("创建token失败"); return RestResult.fail().message("创建token失败");

View File

@ -33,10 +33,6 @@ public class FileBean {
@Column(columnDefinition="bigint(10)") @Column(columnDefinition="bigint(10)")
private Long fileSize; private Long fileSize;
// @Column(columnDefinition="int(1)")
// @Deprecated
// private Integer isOSS;
@Column(columnDefinition="int(1)") @Column(columnDefinition="int(1)")
private Integer storageType; private Integer storageType;

View File

@ -1,8 +1,5 @@
package com.qiwenshare.file.domain; package com.qiwenshare.file.domain;
//import com.baomidou.mybatisplus.annotation.IdType;
//import com.baomidou.mybatisplus.annotation.TableId;
//import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;

View File

@ -41,19 +41,9 @@ public class UserBean {
@Column(columnDefinition = "varchar(35)") @Column(columnDefinition = "varchar(35)")
private String password; private String password;
/**
* qq密码
*/
@Column(columnDefinition = "varchar(35)") @Column(columnDefinition = "varchar(35)")
private String qqPassword; private String qqPassword;
/**
* 重复密码
*/
// @Transient
// @TableField(exist = false)
// private String passwordAgain;
@Column(columnDefinition = "varchar(15)") @Column(columnDefinition = "varchar(15)")
private String telephone; private String telephone;

View File

@ -194,7 +194,7 @@ public class UserFileService extends ServiceImpl<UserFileMapper, UserFile> impl
}else{ }else{
UserFile userFileTemp = userFileMapper.selectById(userFileId); UserFile userFileTemp = userFileMapper.selectById(userFileId);
LambdaUpdateWrapper<UserFile> userFileLambdaUpdateWrapper = new LambdaUpdateWrapper<>(); LambdaUpdateWrapper<UserFile> userFileLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
userFileLambdaUpdateWrapper.set(UserFile::getDeleteFlag, RandomUtil.randomInt(FileConstant.deleteFileRandomSize)) userFileLambdaUpdateWrapper.set(UserFile::getDeleteFlag, RandomUtil.randomInt(1, FileConstant.deleteFileRandomSize))
.set(UserFile::getDeleteTime, DateUtil.getCurrentTime()) .set(UserFile::getDeleteTime, DateUtil.getCurrentTime())
.set(UserFile::getDeleteBatchNum, uuid) .set(UserFile::getDeleteBatchNum, uuid)
.eq(UserFile::getUserFileId, userFileTemp.getUserFileId()); .eq(UserFile::getUserFileId, userFileTemp.getUserFileId());