|
package com.ruoyi.service.impl;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.ruoyi.common.core.domain.AjaxResult;
|
import com.ruoyi.common.core.domain.entity.EsModel;
|
import com.ruoyi.common.utils.MapUtils;
|
import com.ruoyi.common.utils.StringUtils;
|
import com.ruoyi.domain.ZInfoUser;
|
import com.ruoyi.domain.ZfDownload;
|
import com.ruoyi.domain.ZSecret;
|
import com.ruoyi.mapper.ZfDownloadMapper;
|
import com.ruoyi.service.*;
|
import lombok.extern.slf4j.Slf4j;
|
import org.elasticsearch.action.delete.DeleteRequest;
|
import org.elasticsearch.client.RequestOptions;
|
import org.elasticsearch.client.RestHighLevelClient;
|
import org.springframework.stereotype.Service;
|
|
import javax.annotation.Resource;
|
import java.io.IOException;
|
import java.util.*;
|
import java.util.stream.Collectors;
|
|
@Slf4j
|
@Service
|
public class ZSecretDownloadServiceImpl extends ServiceImpl<ZfDownloadMapper,ZfDownload> implements ZSecretDownloadService {
|
@Resource
|
EsService esService;
|
|
@Resource
|
ZSecretShareService zSecretShareService;
|
|
@Resource
|
ZSecretService zSecretService;
|
|
|
@Resource
|
ZInfoUserService zInfoUserService;
|
|
@Resource
|
private RestHighLevelClient restHighLevelClient;
|
|
private LambdaQueryWrapper<ZfDownload> buildCondition(ZfDownload zfDownload, Long userId) {
|
LambdaQueryWrapper<ZfDownload> lqw = new LambdaQueryWrapper<>();
|
lqw.in(ZfDownload::getDownloadId,userId);
|
lqw.orderByDesc(ZfDownload::getDownloadId);
|
lqw.like(zfDownload.getDownloadId() != null, ZfDownload::getDownloadId, zfDownload.getDownloadId())
|
.like(zfDownload.getDownloadContent() != null, ZfDownload::getDownloadContent, zfDownload.getDownloadContent())
|
.eq( ZfDownload::getSysMenuId, zfDownload.getSysMenuId());
|
return lqw;
|
}
|
private LambdaQueryWrapper<ZfDownload> uniqueCondition(ZfDownload zfDownload) {
|
LambdaQueryWrapper<ZfDownload> lqw = new LambdaQueryWrapper<>();
|
lqw.eq(StringUtils.isNotEmpty(String.valueOf(zfDownload.getDownloadId())), ZfDownload::getDownloadId, zfDownload.getDownloadId())
|
.eq(StringUtils.isNotEmpty(String.valueOf(zfDownload.getDownloadContent())), ZfDownload::getDownloadContent, zfDownload.getDownloadContent())
|
.eq(ZfDownload::getSysMenuId, zfDownload.getSysMenuId());
|
return lqw;
|
}
|
|
public Long getUserId() {
|
ZInfoUser myself = zInfoUserService.getMyself();
|
return myself.getUserId();
|
}
|
@Override
|
public AjaxResult addData(ZfDownload zfDownload) {
|
zfDownload.setDownloadId(getUserId());
|
LambdaQueryWrapper<ZfDownload> lqw = uniqueCondition(zfDownload);
|
List<ZfDownload> list = list(lqw);
|
if (list.size() > 0) {
|
throw new RuntimeException("请勿重复下载数据");
|
}
|
|
zfDownload.setDownloadId(getUserId());
|
zfDownload.setShareId(zSecretShareService.getShareId(zfDownload));
|
if (save(zfDownload)) {
|
EsModel esModel = new EsModel();
|
Integer inte = zfDownload.getId().intValue();
|
String uuid = UUID.randomUUID().toString().replace("-", "");
|
esModel.setId(uuid);
|
esModel.setCtId(Long.valueOf(inte));
|
esModel.setCtTableName("隐私");
|
|
esModel.setBy1(String.valueOf(zfDownload.getDownloadId()));
|
esModel.setBy2(String.valueOf(zfDownload.getDownloadContent()));
|
esModel.setBy3(String.valueOf(zfDownload.getShareId()));
|
//这里存储查询详情的路径
|
esService.insertTable(esModel);
|
return AjaxResult.success();
|
} else {
|
return AjaxResult.error();
|
}
|
}
|
|
@Override
|
public Boolean deleteData(Long[] ids) {
|
List<Long> id = new ArrayList<>();
|
|
LambdaQueryWrapper<ZfDownload> lqw = new LambdaQueryWrapper<>();
|
lqw.in(ids != null, ZfDownload::getDownloadContent, ids)
|
.eq(ZfDownload::getSysMenuId, 2031L);
|
|
List<ZfDownload> zfDownloads = list(lqw);
|
System.out.println(zfDownloads);
|
if (zfDownloads.size() == 0){
|
return true;
|
}
|
for (ZfDownload zfDownload: zfDownloads) {
|
id.add(zfDownload.getId());
|
}
|
|
System.out.println(id);
|
|
if (removeByIds(id)) {
|
|
//删除es中的数据
|
zfDownloads.stream().forEach(zfDoctorDownload -> {
|
EsModel esModel = esService.findByCtId(zfDoctorDownload.getId().intValue(), "隐私下载删除");
|
|
if (esModel != null) {
|
DeleteRequest deleteRequest = new DeleteRequest("allsearchdata", esModel.getId());
|
try {
|
restHighLevelClient.delete(deleteRequest, RequestOptions.DEFAULT);
|
} catch (IOException e) {
|
throw new RuntimeException(e);
|
}
|
}
|
});
|
return true;
|
} else {
|
return false;
|
}
|
}
|
|
@Override
|
public AjaxResult selectDoctorList(ZfDownload zfDownload, Integer pageNo, Integer pageSize) {
|
ZInfoUser myself = zInfoUserService.getMyself();
|
LambdaQueryWrapper<ZfDownload> lqw = buildCondition(zfDownload,myself.getUserId());
|
List<ZfDownload> beanRecords = list(lqw);
|
List<ZSecret> bs = new ArrayList<>();
|
for (ZfDownload a: beanRecords) {
|
if (zSecretService.getById(a.getDownloadContent()) != null) {
|
ZSecret ds = zSecretService.getById(a.getDownloadContent());
|
ds.setShareId(a.getShareId().intValue());
|
bs.add(ds);
|
}
|
}
|
List<ZSecret> record = bs.stream().skip((pageNo-1)*pageSize).limit(pageSize).collect(Collectors.toList());
|
|
int totalPage = (bs.size() -1) / pageSize +1;
|
|
Page<ZSecret> zSecretPage = new Page<>(pageNo, pageSize,totalPage);
|
HashMap<String, Object> data = MapUtils.getShareResult(zSecretPage, record,bs.size());
|
return AjaxResult.success(data);
|
}
|
|
}
|