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.ZIdea; 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 ZIdeaDownloadServiceImpl extends ServiceImpl implements ZIdeaDownloadService { @Resource EsService esService; @Resource ZIdeaShareService zIdeaShareService; @Resource ZIdeaService zIdeaService; @Resource ZInfoUserService zInfoUserService; @Resource private RestHighLevelClient restHighLevelClient; private LambdaQueryWrapper buildCondition(ZfDownload zfDownload, Long userId) { LambdaQueryWrapper 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 uniqueCondition(ZfDownload zfDownload) { LambdaQueryWrapper 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 lqw = uniqueCondition(zfDownload); List list = list(lqw); if (list.size() > 0) { throw new RuntimeException("请勿重复下载数据"); } zfDownload.setDownloadId(getUserId()); zfDownload.setShareId(zIdeaShareService.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 id = new ArrayList<>(); LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.in(ids != null, ZfDownload::getDownloadContent, ids) .eq(ZfDownload::getSysMenuId, 2027L); List 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 lqw = buildCondition(zfDownload,myself.getUserId()); List beanRecords = list(lqw); List bs = new ArrayList<>(); for (ZfDownload a: beanRecords) { if (zIdeaService.getById(a.getDownloadContent()) != null) { ZIdea ds = zIdeaService.getById(a.getDownloadContent()); ds.setShareId(a.getShareId().intValue()); bs.add(ds); } } List record = bs.stream().skip((pageNo-1)*pageSize).limit(pageSize).collect(Collectors.toList()); int totalPage = (bs.size() -1) / pageSize +1; Page zIdeaPage = new Page<>(pageNo, pageSize,totalPage); HashMap data = MapUtils.getShareResult(zIdeaPage, record,bs.size()); return AjaxResult.success(data); } }