From 4a7dc5677b7034dc00a6b5e545826822c051267c Mon Sep 17 00:00:00 2001 From: xjs <1294405880@qq.com> Date: Wed, 29 Jun 2022 17:22:01 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=AE=B2=E5=B8=88=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E9=A1=B5=E9=9D=A2=E5=8F=8Acrud=E6=93=8D=E4=BD=9C=20?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=85=BE=E8=AE=AF=E4=BA=91cos=E5=AF=B9?= =?UTF-8?q?=E8=B1=A1=E5=AD=98=E5=82=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 1 + ruoyi-modules/ruoyi-file/pom.xml | 9 +- .../file/config/TencentCosProperties.java | 37 +++ .../service/AliyunOssFileServiceImpl.java | 3 +- .../service/TencentOssFileServiceImpl.java | 122 +++++++++ ruoyi-ui/src/api/classroom/vod/teacher.js | 61 +++++ .../src/views/classroom/vod/teacher/form.vue | 232 ++++++++++++++++++ .../src/views/classroom/vod/teacher/list.vue | 222 +++++++++++++++++ .../classroom-model/pom.xml | 6 + .../classroom-service/pom.xml | 6 + xjs-business/xjs-project-classroom/pom.xml | 5 - 11 files changed, 696 insertions(+), 8 deletions(-) create mode 100644 ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/TencentCosProperties.java create mode 100644 ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/TencentOssFileServiceImpl.java create mode 100644 ruoyi-ui/src/api/classroom/vod/teacher.js create mode 100644 ruoyi-ui/src/views/classroom/vod/teacher/form.vue create mode 100644 ruoyi-ui/src/views/classroom/vod/teacher/list.vue diff --git a/pom.xml b/pom.xml index 859531cb..c2acafb8 100644 --- a/pom.xml +++ b/pom.xml @@ -47,6 +47,7 @@ 3.5.1 3.6 3.14.0 + 5.6.54 3.5.1 5.7.1 0.7.5 diff --git a/ruoyi-modules/ruoyi-file/pom.xml b/ruoyi-modules/ruoyi-file/pom.xml index 8ad5b1a2..375ad997 100644 --- a/ruoyi-modules/ruoyi-file/pom.xml +++ b/ruoyi-modules/ruoyi-file/pom.xml @@ -69,6 +69,13 @@ ${aliyunoss.version} + + + com.qcloud + cos_api + ${tencentcos.version} + + com.ruoyi @@ -100,4 +107,4 @@ - \ No newline at end of file + diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/TencentCosProperties.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/TencentCosProperties.java new file mode 100644 index 00000000..54f41fbf --- /dev/null +++ b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/TencentCosProperties.java @@ -0,0 +1,37 @@ +package com.ruoyi.file.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * 腾讯对象存储属性 + * @author xiejs + * @since 2022-06-29 + */ +@Data +@Component +@ConfigurationProperties(prefix = "tencent.cos.file") +public class TencentCosProperties { + + /** + * 地域节点 + */ + private String region; + + + private String secretId; + + + private String secretKey; + + /** + * 存储桶名称 + */ + private String bucketName; + + + private String endpoint; + + +} diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/AliyunOssFileServiceImpl.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/AliyunOssFileServiceImpl.java index 1e694641..971603c9 100644 --- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/AliyunOssFileServiceImpl.java +++ b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/AliyunOssFileServiceImpl.java @@ -6,7 +6,6 @@ import com.ruoyi.common.core.text.UUID; import com.ruoyi.common.core.utils.file.FileUploadUtils; import com.ruoyi.file.utils.OssClient; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Primary; import org.springframework.stereotype.Service; import org.springframework.util.Assert; import org.springframework.web.multipart.MultipartFile; @@ -24,7 +23,7 @@ import static com.ruoyi.file.utils.OssClient.*; * @since 2022-01-25 */ @Service -@Primary +//@Primary public class AliyunOssFileServiceImpl implements ISysFileService { @Autowired diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/TencentOssFileServiceImpl.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/TencentOssFileServiceImpl.java new file mode 100644 index 00000000..3980c102 --- /dev/null +++ b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/TencentOssFileServiceImpl.java @@ -0,0 +1,122 @@ +package com.ruoyi.file.service; + +import cn.hutool.core.date.DateUtil; +import com.qcloud.cos.COSClient; +import com.qcloud.cos.ClientConfig; +import com.qcloud.cos.auth.BasicCOSCredentials; +import com.qcloud.cos.http.HttpProtocol; +import com.qcloud.cos.model.ObjectMetadata; +import com.qcloud.cos.model.PutObjectRequest; +import com.qcloud.cos.region.Region; +import com.ruoyi.common.core.text.UUID; +import com.ruoyi.common.core.utils.file.FileUploadUtils; +import com.ruoyi.file.config.TencentCosProperties; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Primary; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Date; + +import static com.ruoyi.file.utils.OssClient.*; + +/** + * 腾讯云cos服务实现 + * + * @author xiejs + * @since 2022-06-29 + */ +@Service +@Primary +public class TencentOssFileServiceImpl implements ISysFileService { + + @Autowired + private TencentCosProperties tencentCosProperties; + + @Override + public String uploadFile(MultipartFile file) throws Exception { + try { + COSClient cosClient = this.createCOSClient(); + String bucketName = tencentCosProperties.getBucketName(); + String endpoint = tencentCosProperties.getEndpoint(); + + //获取流 + InputStream is = file.getInputStream(); + //获取文件后缀 + String extension = FileUploadUtils.getExtension(file); + //获取文件名称 + String fileName = this.getDataTime() + DOT + extension; + + ObjectMetadata objectMetadata = new ObjectMetadata(); + PutObjectRequest putObjectRequest = new PutObjectRequest( + bucketName, fileName, is, objectMetadata + ); + + cosClient.putObject(putObjectRequest); + + cosClient.shutdown(); + + //拼接文件地址 + return HTTPS + bucketName + DOT + endpoint + SLASH + fileName; + } catch (IOException e) { + e.printStackTrace(); + return null; + } + } + + @Override + public void removeFile(String url) { + COSClient cosClient = this.createCOSClient(); + + String endpoint = tencentCosProperties.getEndpoint(); + String bucketName = tencentCosProperties.getBucketName(); + + String host = HTTPS + bucketName + DOT + endpoint + SLASH; + + //如果路径中不包含host + if (!url.contains(host)) { + return; + } + + String objectName = url.substring(host.length()); + + cosClient.deleteObject(bucketName, objectName); + cosClient.shutdown(); + + } + + + /** + * 生成一个当前日期文件名 + * + * @return 文件名 + */ + private String getDataTime() { + String today = DateUtil.format(new Date(), "yyyy-MM"); + return today + SLASH + UUID.randomUUID(); + } + + + /** + * 创建客户端 + * + * @return cosClient + */ + private COSClient createCOSClient() { + //初始化用户身份信息 + String secretId = tencentCosProperties.getSecretId(); + String secretKey = tencentCosProperties.getSecretKey(); + String regionValue = tencentCosProperties.getRegion(); + BasicCOSCredentials credentials = new BasicCOSCredentials(secretId, secretKey); + + //设置bucket的地域 + Region region = new Region(regionValue); + ClientConfig clientConfig = new ClientConfig(region); + clientConfig.setHttpProtocol(HttpProtocol.https); + + //生成cos客户端 + return new COSClient(credentials, clientConfig); + } +} diff --git a/ruoyi-ui/src/api/classroom/vod/teacher.js b/ruoyi-ui/src/api/classroom/vod/teacher.js new file mode 100644 index 00000000..3c11eb93 --- /dev/null +++ b/ruoyi-ui/src/api/classroom/vod/teacher.js @@ -0,0 +1,61 @@ +import request from '@/utils/request' + +const api_name = '/classroom-service-vod/admin/vod/teacher' + +export default { + + pageList(current, limit, searchObj) { + return request({ + url: `${api_name}/findQueryPage/${current}/${limit}`, + method: 'post', + data: searchObj + }) + }, + + //讲师删除 + removeTeacherId(id) { + return request({ + url: `${api_name}/remove/${id}`, + method: 'delete' + }) + }, + //讲师添加 + saveTeacher(teacher) { + return request({ + url: `${api_name}/saveTeacher`, + method: 'post', + data: teacher + }) + }, + //根据id查询 + getTeacherById(id) { + return request({ + url: `${api_name}/getTeacher/${id}`, + method: 'get' + }) + }, + //讲师修改 + updateTeacher(teacher) { + return request({ + url: `${api_name}/updateTeacher`, + method: 'post', + data: teacher + }) + }, + //批量删除 + batchRemove(idList) { + return request({ + url: `${api_name}/removeBatch`, + method: `delete`, + data: idList + }) + }, + //所有讲师 + list() { + return request({ + url: `${api_name}/findAll`, + method: `get` + }) + } + +} diff --git a/ruoyi-ui/src/views/classroom/vod/teacher/form.vue b/ruoyi-ui/src/views/classroom/vod/teacher/form.vue new file mode 100644 index 00000000..ddcae6ec --- /dev/null +++ b/ruoyi-ui/src/views/classroom/vod/teacher/form.vue @@ -0,0 +1,232 @@ + + diff --git a/ruoyi-ui/src/views/classroom/vod/teacher/list.vue b/ruoyi-ui/src/views/classroom/vod/teacher/list.vue new file mode 100644 index 00000000..6c7fd0c7 --- /dev/null +++ b/ruoyi-ui/src/views/classroom/vod/teacher/list.vue @@ -0,0 +1,222 @@ + + + + + + diff --git a/xjs-business/xjs-project-classroom/classroom-model/pom.xml b/xjs-business/xjs-project-classroom/classroom-model/pom.xml index cb5cc7c4..9c0b24d8 100644 --- a/xjs-business/xjs-project-classroom/classroom-model/pom.xml +++ b/xjs-business/xjs-project-classroom/classroom-model/pom.xml @@ -18,6 +18,12 @@ + + com.xjs + xjs-business-common + + + com.alibaba easyexcel diff --git a/xjs-business/xjs-project-classroom/classroom-service/pom.xml b/xjs-business/xjs-project-classroom/classroom-service/pom.xml index 9ce3292e..a4313d6f 100644 --- a/xjs-business/xjs-project-classroom/classroom-service/pom.xml +++ b/xjs-business/xjs-project-classroom/classroom-service/pom.xml @@ -28,6 +28,12 @@ 3.3.0 + + com.xjs + xjs-business-common + + + diff --git a/xjs-business/xjs-project-classroom/pom.xml b/xjs-business/xjs-project-classroom/pom.xml index a5e766ac..885de961 100644 --- a/xjs-business/xjs-project-classroom/pom.xml +++ b/xjs-business/xjs-project-classroom/pom.xml @@ -30,11 +30,6 @@ - - com.xjs - xjs-business-common - - joda-time