文章目錄
- 一. 需求分析
- 二. API
- 三. 服務端開發
- 1. Dao
- 2. Service
- 3. Controller
- 四. 前端開發
- 1. API方法
- 2. 頁面
- 1.before-remove鉤子方法
- 2.handleRemove鉤子方法
一. 需求分析
課程圖片上傳成功后,可以重新上傳,方法是先刪除現有圖片再上傳新圖片;
注意:此刪除只刪除課程數據庫的課程圖片信息,不去刪除文件數據庫的文件信息及文件系統服務器上的文件;
由于課程圖片來源于該用戶的文件數據庫,所以此圖片可能存在多個地方共用的情況,所以要刪除文件系統中的文件需要到圖片庫由用戶確認后再刪除。
二. API
在課程管理服務添加刪除課程圖片api:
文件位置:xcEduService01\xc-service-api\src\main\java\com\xuecheng\api\course\CourseControllerApi.java
@ApiOperation("刪除課程圖片")
public ResponseResult deleteCoursePic(String courseId);
三. 服務端開發
1. Dao
文件位置:xcEduService01\xc-service-manage-course\src\main\java\com\xuecheng\manage_course\dao\ CoursePicRepository.java
public interface CoursePicRepository extends JpaRepository<CoursePic,String> {//當返回值大于0,表示刪除成功的記錄數long deleteByCourseid(String courseId);
}
2. Service
文件位置:xcEduService01\xc-service-manage-course\src\main\java\com\xuecheng\manage_course\service\ CourseService.java
//刪除課程圖片
@Transactional
public ResponseResult deleteCoursePic(String courseId) {//執行刪除long result = coursePicRepository.deleteByCourseid(courseId);if(result>0){return new ResponseResult(CommonCode.SUCCESS);}return new ResponseResult(CommonCode.FAIL);
}
3. Controller
文件位置:xcEduService01\xc-service-manage-course\src\main\java\com\xuecheng\manage_course\controller\ CourseController.java
@Override
@DeleteMapping("/coursepic/delete")
public ResponseResult deleteCoursePic(@RequestParam("courseId") String courseId) {return courseService.deleteCoursePic(courseId);
}
四. 前端開發
1. API方法
文件位置:xc-ui-pc-teach\src\module\course\api\course.js
//刪除課程圖片
export const deleteCoursePic= courseId => {return http.requestDelete(apiUrl+'/course/coursepic/delete?courseId='+courseId)
}
2. 頁面
文件位置:xc-ui-pc-teach\src\module\course\page\course_manage\course_picture.vue
1.before-remove鉤子方法
在upload組件的before-remove鉤子方法 中實現刪除動作。
<template><div><el-uploadaction="/api/filesystem/upload"list-type="picture-card":before-upload="setuploaddata":on-success="handleSuccess":file-list="fileList":limit="picmax":on-exceed="rejectupload":before-remove="handleRemove":data="uploadval"name="multipartFile"><i class="el-icon-plus"></i></el-upload></div>
</template>
2.handleRemove鉤子方法
//刪除圖片handleRemove(file, fileList) {console.log(file)return new Promise((resolve,reject)=>{courseApi.deleteCoursePic(this.courseid).then(res=>{if(res.success){//成功resolve();}else{this.$message.error("刪除失敗");//失敗reject();}})})//調用服務端去刪除課程圖片信息,如果返回false,前端停止刪除//異步調用
/* return new Promise((resolve,rejct)=>{courseApi.deleteCoursePic(this.courseid).then(res=>{if(res.success){//成功resolve()}else{this.$message.error("刪除失敗");//失敗rejct()}})})*/},