|
|
@@ -27,6 +27,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
import java.io.File;
|
|
|
+import java.time.LocalDateTime;
|
|
|
import java.util.Objects;
|
|
|
import java.util.Set;
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
@@ -85,8 +86,15 @@ public class SlideServiceImpl implements SlideService {
|
|
|
AuthUtils.checkDataAuth(user.getId(), slide.getTeacherId(), "您无权修改该课件");
|
|
|
|
|
|
checkSameName(slide.getId(), slide.getCourseId(), modifySlideDTO.getName());
|
|
|
- slide.setName(modifySlideDTO.getName());
|
|
|
- slide = slideDAO.save(slide);
|
|
|
+ if (!modifySlideDTO.getName().equals(slide.getName())) {
|
|
|
+ slide.setName(modifySlideDTO.getName());
|
|
|
+ String oldObjectName = slide.getObjectName();
|
|
|
+ String newObjectName = getObjectName(slide.getCourseId(), slide.getName(), oldObjectName.substring(oldObjectName.lastIndexOf('.') + 1));
|
|
|
+ slide.setObjectName(newObjectName);
|
|
|
+ fileUtils.copy(oldObjectName, newObjectName);
|
|
|
+ slide = slideDAO.save(slide);
|
|
|
+ fileUtils.delete(oldObjectName);
|
|
|
+ }
|
|
|
return new SlideVO(slide);
|
|
|
}
|
|
|
|
|
|
@@ -121,6 +129,22 @@ public class SlideServiceImpl implements SlideService {
|
|
|
slideDAO.save(slide);
|
|
|
}
|
|
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ @Override
|
|
|
+ public void removeSlide(LoginUser user, Integer slideId) {
|
|
|
+ Slide slide = slideDAO.findSlideById(slideId);
|
|
|
+ AuthUtils.checkDataAuth(user.getId(), slide.getTeacherId(), "您无权删除该课件");
|
|
|
+
|
|
|
+ String oldObjectName = slide.getObjectName();
|
|
|
+ String deleteObjectName = getDeleteObjectName(slide.getCourseId(), slide.getName(), oldObjectName.substring(oldObjectName.lastIndexOf('.') + 1));
|
|
|
+ slide.setObjectName(deleteObjectName);
|
|
|
+ slide.setDeleteAt(System.currentTimeMillis());
|
|
|
+ fileUtils.copy(oldObjectName, deleteObjectName);
|
|
|
+ slideDAO.save(slide);
|
|
|
+ fileUtils.delete(oldObjectName);
|
|
|
+ }
|
|
|
+
|
|
|
+ @SuppressWarnings("all")
|
|
|
@SneakyThrows
|
|
|
private void handleFile(Slide slide, MultipartFile file) {
|
|
|
switch (Objects.requireNonNull(file.getContentType())) {
|
|
|
@@ -131,7 +155,7 @@ public class SlideServiceImpl implements SlideService {
|
|
|
slide.setPages(pages);
|
|
|
|
|
|
// 上传文件
|
|
|
- String objectName = slide.getCourseId() + File.separator + slide.getName() + ".pdf";
|
|
|
+ String objectName = getObjectName(slide.getCourseId(), slide.getName(), "pdf");
|
|
|
fileUtils.upload(objectName, file.getInputStream());
|
|
|
slide.setObjectName(objectName);
|
|
|
|
|
|
@@ -141,14 +165,12 @@ public class SlideServiceImpl implements SlideService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- @Transactional(rollbackFor = Exception.class)
|
|
|
- @Override
|
|
|
- public void removeSlide(LoginUser user, Integer slideId) {
|
|
|
- Slide slide = slideDAO.findSlideById(slideId);
|
|
|
- AuthUtils.checkDataAuth(user.getId(), slide.getTeacherId(), "您无权删除该课件");
|
|
|
+ private String getObjectName(Integer courseId, String slideName, String suffix) {
|
|
|
+ return courseId + File.separator + slideName + "." + suffix;
|
|
|
+ }
|
|
|
|
|
|
- slide.setDeleteAt(System.currentTimeMillis());
|
|
|
- slideDAO.save(slide);
|
|
|
+ private String getDeleteObjectName(Integer courseId, String slideName, String suffix) {
|
|
|
+ return courseId + File.separator + "delete" + File.separator + LocalDateTime.now() + File.separator + slideName + "." + suffix;
|
|
|
}
|
|
|
|
|
|
@Transactional(readOnly = true)
|