课程附件-资源上传及查询改造

This commit is contained in:
wsw 2023-07-23 23:02:46 +08:00
parent 1edc205e9f
commit 295992e4d4
4 changed files with 48 additions and 22 deletions

View File

@ -35,6 +35,10 @@ public class BackendConstant {
public static final String RESOURCE_TYPE_PDF = "PDF"; public static final String RESOURCE_TYPE_PDF = "PDF";
public static final String RESOURCE_TYPE_WORD = "WORD"; public static final String RESOURCE_TYPE_WORD = "WORD";
public static final String RESOURCE_TYPE_PPT = "PPT"; public static final String RESOURCE_TYPE_PPT = "PPT";
public static final String RESOURCE_TYPE_EXCEL = "EXCEL";
public static final String RESOURCE_TYPE_ZIP= "ZIP";
public static final String RESOURCE_TYPE_RAR = "RAR";
public static final String RESOURCE_TYPE_TXT = "TXT";
public static final HashMap<String, String> RESOURCE_EXT_2_CONTENT_TYPE = public static final HashMap<String, String> RESOURCE_EXT_2_CONTENT_TYPE =
new HashMap<>() { new HashMap<>() {
@ -46,13 +50,14 @@ public class BackendConstant {
put("pdf", "application/pdf"); put("pdf", "application/pdf");
put("mp4", "video/mp4"); put("mp4", "video/mp4");
put("doc", "application/msword"); put("doc", "application/msword");
put( put("docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document");
"docx",
"application/vnd.openxmlformats-officedocument.wordprocessingml.document");
put("ppt", "application/vnd.ms-powerpoint"); put("ppt", "application/vnd.ms-powerpoint");
put( put("pptx", "application/vnd.openxmlformats-officedocument.presentationml.presentation");
"pptx", put("xls", "application/vnd.ms-excel");
"application/vnd.openxmlformats-officedocument.presentationml.presentation"); put("xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
put("txt", "text/plain");
put("zip", "application/zip");
put("rar", "application/x-rar");
} }
}; };
public static final HashMap<String, String> RESOURCE_EXT_2_TYPE = public static final HashMap<String, String> RESOURCE_EXT_2_TYPE =
@ -68,6 +73,11 @@ public class BackendConstant {
put("docx", RESOURCE_TYPE_WORD); put("docx", RESOURCE_TYPE_WORD);
put("ppt", RESOURCE_TYPE_PPT); put("ppt", RESOURCE_TYPE_PPT);
put("pptx", RESOURCE_TYPE_PPT); put("pptx", RESOURCE_TYPE_PPT);
put("xls", RESOURCE_TYPE_EXCEL);
put("xlsx", RESOURCE_TYPE_EXCEL);
put("txt", RESOURCE_TYPE_TXT);
put("zip", RESOURCE_TYPE_ZIP);
put("rar", RESOURCE_TYPE_RAR);
} }
}; };
public static final HashMap<String, String> RESOURCE_TYPE_2_DIR = public static final HashMap<String, String> RESOURCE_TYPE_2_DIR =
@ -78,6 +88,10 @@ public class BackendConstant {
put(RESOURCE_TYPE_PDF, UPLOAD_PDF_DIR); put(RESOURCE_TYPE_PDF, UPLOAD_PDF_DIR);
put(RESOURCE_TYPE_WORD, UPLOAD_WORD_DIR); put(RESOURCE_TYPE_WORD, UPLOAD_WORD_DIR);
put(RESOURCE_TYPE_PPT, UPLOAD_PPT_DIR); put(RESOURCE_TYPE_PPT, UPLOAD_PPT_DIR);
put(RESOURCE_TYPE_EXCEL, UPLOAD_EXCEL_DIR);
put(RESOURCE_TYPE_TXT, UPLOAD_TXT_DIR);
put(RESOURCE_TYPE_ZIP, UPLOAD_ZIP_DIR);
put(RESOURCE_TYPE_RAR, UPLOAD_RAR_DIR);
} }
}; };
@ -91,6 +105,10 @@ public class BackendConstant {
public static final String UPLOAD_PDF_DIR = "pdf/"; public static final String UPLOAD_PDF_DIR = "pdf/";
public static final String UPLOAD_WORD_DIR = "word/"; public static final String UPLOAD_WORD_DIR = "word/";
public static final String UPLOAD_PPT_DIR = "word/"; public static final String UPLOAD_PPT_DIR = "word/";
public static final String UPLOAD_EXCEL_DIR = "excel/";
public static final String UPLOAD_TXT_DIR = "txt/";
public static final String UPLOAD_ZIP_DIR = "zip/";
public static final String UPLOAD_RAR_DIR = "rar/";
public static final String PRIVACY_FIELD_TYPE_EMAIL = "email"; public static final String PRIVACY_FIELD_TYPE_EMAIL = "email";
public static final String PRIVACY_FIELD_TYPE_PHONE = "phone"; public static final String PRIVACY_FIELD_TYPE_PHONE = "phone";

View File

@ -27,7 +27,7 @@ import xyz.playedu.api.BCtx;
import xyz.playedu.api.constant.BackendConstant; import xyz.playedu.api.constant.BackendConstant;
import xyz.playedu.api.domain.Resource; import xyz.playedu.api.domain.Resource;
import xyz.playedu.api.exception.ServiceException; import xyz.playedu.api.exception.ServiceException;
import xyz.playedu.api.request.backend.UploadVideoMergeRequest; import xyz.playedu.api.request.backend.UploadFileMergeRequest;
import xyz.playedu.api.service.MinioService; import xyz.playedu.api.service.MinioService;
import xyz.playedu.api.service.ResourceService; import xyz.playedu.api.service.ResourceService;
import xyz.playedu.api.service.UploadService; import xyz.playedu.api.service.UploadService;
@ -92,8 +92,8 @@ public class UploadController {
return JsonResponse.data(data); return JsonResponse.data(data);
} }
@PostMapping("/minio/merge-video") @PostMapping("/minio/merge-file")
public JsonResponse minioMergeVideo(@RequestBody @Validated UploadVideoMergeRequest req) public JsonResponse minioMergeFile(@RequestBody @Validated UploadFileMergeRequest req)
throws ServiceException { throws ServiceException {
String type = BackendConstant.RESOURCE_EXT_2_TYPE.get(req.getExtension()); String type = BackendConstant.RESOURCE_EXT_2_TYPE.get(req.getExtension());
if (type == null) { if (type == null) {
@ -102,10 +102,10 @@ public class UploadController {
String extension = req.getExtension(); String extension = req.getExtension();
String originalFilename = req.getOriginalFilename().replaceAll("(?i)." + extension, ""); String originalFilename = req.getOriginalFilename().replaceAll("(?i)." + extension, "");
// 合并视频文件 // 合并资源文件
String url = minioService.merge(req.getFilename(), req.getUploadId()); String url = minioService.merge(req.getFilename(), req.getUploadId());
// 视频素材保存 // 资源素材保存
Resource videoResource = Resource videoResource =
resourceService.create( resourceService.create(
BCtx.getId(), BCtx.getId(),
@ -118,14 +118,16 @@ public class UploadController {
"", "",
req.getFilename(), req.getFilename(),
url); url);
// 视频封面素材保存
Resource posterResource = // 视频资源特殊处理--视频封面资源
uploadService.storeBase64Image(BCtx.getId(), req.getPoster(), null); if(BackendConstant.RESOURCE_TYPE_VIDEO.equals(type)){
// 视频的封面素材改为[隐藏 && 属于视频的子素材] // 视频封面素材保存
resourceService.changeParentId(posterResource.getId(), videoResource.getId()); Resource posterResource = uploadService.storeBase64Image(BCtx.getId(), req.getPoster(), null);
// 视频信息 // 视频的封面素材改为[隐藏 && 属于视频的子素材]
resourceService.storeResourceVideo( resourceService.changeParentId(posterResource.getId(), videoResource.getId());
videoResource.getId(), req.getDuration(), posterResource.getUrl()); // 视频信息
resourceService.storeResourceVideo(videoResource.getId(), req.getDuration(), posterResource.getUrl());
}
HashMap<String, Object> data = new HashMap<>(); HashMap<String, Object> data = new HashMap<>();
data.put("url", url); data.put("url", url);

View File

@ -28,7 +28,7 @@ import lombok.Data;
* @create 2023/3/8 14:49 * @create 2023/3/8 14:49
*/ */
@Data @Data
public class UploadVideoMergeRequest { public class UploadFileMergeRequest {
@NotBlank(message = "请输入课程标题") @NotBlank(message = "请输入课程标题")
private String filename; private String filename;

View File

@ -61,7 +61,10 @@
AND `resources`.`extension` = #{extension} AND `resources`.`extension` = #{extension}
</if> </if>
<if test="type != null and type != ''"> <if test="type != null and type != ''">
AND `resources`.`type` = #{type} AND `resources`.`type` IN
<foreach item="item" collection="type.split(',')" open="(" separator="," close=")">
#{item}
</foreach>
</if> </if>
<if test="adminId != null and adminId != 0"> <if test="adminId != null and adminId != 0">
AND `resources`.`admin_id` = #{adminId} AND `resources`.`admin_id` = #{adminId}
@ -127,7 +130,10 @@
AND `resources`.`extension` = #{extension} AND `resources`.`extension` = #{extension}
</if> </if>
<if test="type != null and type != ''"> <if test="type != null and type != ''">
AND `resources`.`type` = #{type} AND `resources`.`type` IN
<foreach item="item" collection="type.split(',')" open="(" separator="," close=")">
#{item}
</foreach>
</if> </if>
<if test="adminId != null and adminId != 0"> <if test="adminId != null and adminId != 0">
AND `resources`.`admin_id` = #{adminId} AND `resources`.`admin_id` = #{adminId}