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<VisualMapper, Visual> 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.<VisualConfig>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<Visual> list = list(Lambda.eq(Visual::getGroupName, visual.getGroupName()).orderByAsc(Visual::getGroupIndex));
|
/*
|
List<Visual> 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<Visual> list = list(Lambda.eq(Visual::getGroupName, visual.getGroupName()).orderByDesc(Visual::getGroupIndex));
|
/*
|
List<Visual> 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.<VisualConfig>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<VisualInfoVO> detailsByCatalog(Integer catalogId) {
|
List<Visual> list = list(Lambda.eq((catalogId != null), Visual::getCategory, catalogId)
|
.select(Visual::getId, Visual::getTitle, Visual::getBackgroundUrl ));
|
/*
|
List<Visual> 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<Long> visualIds = list.stream().map((v0) -> {
|
return v0.getId();
|
}).collect(Collectors.toList());
|
List<VisualConfig> 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<Long> visualIds) throws FileNotFoundException {
|
List<Visual> visualList = list(Lambda.in((v0) -> {
|
return v0.getId();
|
}, visualIds));
|
List<VisualConfig> configList = this.configService.list(Lambda.in((v0) -> {
|
return v0.getVisualId();
|
}, visualIds));
|
List<String> 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<VisualDTO> dtoList = VisualUtils.createVisualDTO(category, replaceText);
|
dtoList.parallelStream().forEach(dto -> {
|
visualImport(dto);
|
});
|
}
|
}
|