package com.qianwen.smartman.modules.visual.service.impl; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.qianwen.core.log.exception.ServiceException; import com.qianwen.core.mp.base.BaseServiceImpl; import com.qianwen.core.oss.model.BladeFile; import com.qianwen.smartman.common.utils.Lambda; import com.qianwen.smartman.modules.resource.builder.oss.OssBuilder; import com.qianwen.smartman.modules.resource.service.IOssService; import com.qianwen.smartman.modules.visual.dto.VisualDTO; import com.qianwen.smartman.modules.visual.dto.VisualDownloadDTO; import com.qianwen.smartman.modules.visual.entity.Visual; import com.qianwen.smartman.modules.visual.entity.VisualConfig; import com.qianwen.smartman.modules.visual.mapper.VisualMapper; import com.qianwen.smartman.modules.visual.service.IVisualConfigService; import com.qianwen.smartman.modules.visual.service.IVisualGlobalApiService; import com.qianwen.smartman.modules.visual.service.IVisualService; import com.qianwen.smartman.modules.visual.utils.VisualUtils; import com.qianwen.smartman.modules.visual.vo.VisualInfoVO; import cn.hutool.core.io.FileUtil; import cn.hutool.core.util.ZipUtil; @Service /* loaded from: blade-api.jar:BOOT-INF/classes/org/springblade/modules/visual/service/impl/VisualServiceImpl.class */ public class VisualServiceImpl extends BaseServiceImpl implements IVisualService { private final IVisualConfigService configService; private final IVisualGlobalApiService globalApiService; private final OssBuilder ossBuilder; private final IOssService ossService; public VisualServiceImpl(final IVisualConfigService configService, final IVisualGlobalApiService globalApiService, final OssBuilder ossBuilder, final IOssService ossService) { this.configService = configService; this.globalApiService = globalApiService; this.ossBuilder = ossBuilder; this.ossService = ossService; } @Override // org.springblade.modules.visual.service.IVisualService public VisualDTO detail(Long id) { Visual visual = (Visual) getById(id); VisualConfig visualConfig = this.configService.getOne(Wrappers.query().lambda().eq(VisualConfig::getVisualId, id)); /* VisualConfig visualConfig = (VisualConfig) this.configService.getOne((Wrapper) Wrappers.query().lambda().eq((v0) -> { return v0.getVisualId(); }, id));*/ VisualDTO dto = new VisualDTO(); dto.setVisual(visual); dto.setConfig(visualConfig); dto.setNextId(getGroupNextVisual(visual)); dto.setPrevId(getGroupPrevVisual(visual)); return dto; } private Long getGroupNextVisual(Visual visual) { if (StringUtils.isEmpty(visual.getGroupName())) { return null; } List list = list(Lambda.eq(Visual::getGroupName, visual.getGroupName()).orderByAsc(Visual::getGroupIndex)); /* List list = list((Wrapper) Lambda.eq((v0) -> { return v0.getGroupName(); }, visual.getGroupName()).orderByAsc((v0) -> { return v0.getGroupIndex(); }));*/ if (list.size() <= 1) { return null; } return (Long) list.stream().filter(item -> { return item.getGroupIndex().intValue() > visual.getGroupIndex().intValue(); }).findFirst().map(item2 -> { return item2.getId(); }).orElseGet(() -> { return ((Visual) list.get(0)).getId(); }); } private Long getGroupPrevVisual(Visual visual) { if (StringUtils.isEmpty(visual.getGroupName())) { return null; } List list = list(Lambda.eq(Visual::getGroupName, visual.getGroupName()).orderByDesc(Visual::getGroupIndex)); /* List list = list((Wrapper) Lambda.eq((v0) -> { return v0.getGroupName(); }, visual.getGroupName()).orderByDesc((v0) -> { return v0.getGroupIndex(); }));*/ if (list.size() <= 1) { return null; } return (Long) list.stream().filter(item -> { return item.getGroupIndex().intValue() < visual.getGroupIndex().intValue(); }).findFirst().map(item2 -> { return item2.getId(); }).orElseGet(() -> { return list.get(0).getId(); }); } @Override // org.springblade.modules.visual.service.IVisualService @Transactional(rollbackFor = {Exception.class}) public boolean saveVisual(VisualDTO dto) { Visual visual = dto.getVisual(); VisualConfig visualConfig = dto.getConfig(); boolean tempV = save(visual); visualConfig.setVisualId(visual.getId()); boolean tempVc = this.configService.save(visualConfig); this.globalApiService.updateVisualId(visual, dto.getGlobalApiId()); return tempV && tempVc; } @Override // org.springblade.modules.visual.service.IVisualService @Transactional(rollbackFor = {Exception.class}) public boolean updateVisual(VisualDTO dto) { Visual visual = dto.getVisual(); VisualConfig visualConfig = dto.getConfig(); if (visual != null && visual.getId() != null) { updateById(visual); } if (visualConfig != null && visualConfig.getId() != null) { this.configService.updateById(visualConfig); return true; } return true; } @Override // org.springblade.modules.visual.service.IVisualService @Transactional(rollbackFor = {Exception.class}) public Long copyVisual(Long id) { Visual visual = (Visual) getById(id); VisualConfig visualConfig = (VisualConfig)this.configService.getOne(Wrappers.query().lambda().eq(VisualConfig::getVisualId, id)); /* VisualConfig visualConfig = (VisualConfig) this.configService.getOne((Wrapper) Wrappers.query().lambda().eq((v0) -> { return v0.getVisualId(); }, id));*/ if (visual != null && visualConfig != null) { visual.setId(null); visualConfig.setId(null); VisualDTO dto = new VisualDTO(); dto.setVisual(visual); dto.setConfig(visualConfig); boolean temp = saveVisual(dto); if (temp) { return visual.getId(); } return null; } return null; } @Override // org.springblade.modules.visual.service.IVisualService @Transactional public Long visualImport(final VisualDTO visualDTO) { Visual visual = visualDTO.getVisual(); VisualConfig visualConfig = visualDTO.getConfig(); if (visual != null && visualConfig != null) { visual.setId(null); visualConfig.setId(null); boolean temp = saveVisual(visualDTO); if (temp) { return visual.getId(); } return null; } return null; } @Override // org.springblade.modules.visual.service.IVisualService public List detailsByCatalog(Integer catalogId) { List list = list(Lambda.eq((catalogId != null), Visual::getCategory, catalogId) .select(Visual::getId, Visual::getTitle, Visual::getBackgroundUrl )); /* List list = list(Lambda.eq(catalogId != null, (v0) -> { return v0.getCategory(); }, catalogId).select((v0) -> { return v0.getId(); }, (v0) -> { return v0.getTitle(); }, (v0) -> { return v0.getBackgroundUrl(); }));*/ if (list == null || list.isEmpty()) { return Collections.emptyList(); } List visualIds = list.stream().map((v0) -> { return v0.getId(); }).collect(Collectors.toList()); List config = this.configService.list(Lambda.in((v0) -> { return v0.getVisualId(); }, visualIds)); return config.stream().map(item -> { Visual match = (Visual) list.stream().filter(visual -> { return visual.getId().equals(item.getVisualId()); }).findFirst().orElse(null); return new VisualInfoVO(match != null ? match.getTitle() : "", match != null ? match.getBackgroundUrl() : "", item.getDetail(), item.getComponent()); }).collect(Collectors.toList()); } @Override // org.springblade.modules.visual.service.IVisualService public BladeFile visualZipDownload(List visualIds) throws FileNotFoundException { List visualList = list(Lambda.in((v0) -> { return v0.getId(); }, visualIds)); List configList = this.configService.list(Lambda.in((v0) -> { return v0.getVisualId(); }, visualIds)); List jsText = new ArrayList<>(); visualList.parallelStream().forEach(visual -> { String visualStr = JSONObject.toJSONString(visual); configList.parallelStream().forEach(config -> { VisualDownloadDTO downloadDTO = new VisualDownloadDTO(visualStr, config.getDetail(), config.getComponent()); jsText.add(downloadDTO.toString()); }); }); FileInputStream fileInputStream = null; try { File tempFile = VisualUtils.visualDownload((String[]) jsText.toArray(new String[0])); fileInputStream = new FileInputStream(tempFile); BladeFile bladeFile = this.ossBuilder.tempTemplate().putFile(tempFile.getName(), fileInputStream); tempFile.deleteOnExit(); if (fileInputStream != null) { try { fileInputStream.close(); } catch (IOException e) { e.printStackTrace(); } } return bladeFile; } catch (Throwable th) { if (fileInputStream != null) { try { fileInputStream.close(); } catch (IOException e2) { e2.printStackTrace(); } } throw th; } } @Override // org.springblade.modules.visual.service.IVisualService public void visualZipImport(MultipartFile zipFile, Integer category) { String localFileName = IdWorker.get32UUID() + ".zip"; File localZipFile = new File("static/visual/" + localFileName); try { FileUtils.copyToFile(zipFile.getInputStream(), localZipFile); } catch (IOException e) { log.error("可视化导入错误",e); throw new ServiceException("可视化导入错误"+e.getMessage()); } visualZipImport(localZipFile, category); } @Override // org.springblade.modules.visual.service.IVisualService public void visualZipImport(File zipFile, Integer category) { File distFile = ZipUtil.unzip(zipFile); File[] files = distFile.listFiles(); File imagesDir = (File) Stream.of(files).filter(file -> { return file.isDirectory() && "images".equalsIgnoreCase(file.getName()); }).findFirst().orElse(null); if (imagesDir == null) { String[] jsFilesText = (String[]) Stream.of( files).filter(file2 -> { return file2.isFile() && file2.getName().endsWith("js"); }).map(item -> { return FileUtil.readString(item, "utf-8"); }).toArray(x -> { return new String[x]; }); File distFile2 = VisualUtils.visualDownload(jsFilesText); visualZipImport(distFile2, category); return; } String[] replaceText = VisualUtils.visualFileUpload(files); List dtoList = VisualUtils.createVisualDTO(category, replaceText); dtoList.parallelStream().forEach(dto -> { visualImport(dto); }); } }