From 66460c199c6424e472f841614acdd70bf62c24d7 Mon Sep 17 00:00:00 2001
From: wanghb <17803890193@163.com>
Date: Fri, 11 Aug 2023 11:16:18 +0800
Subject: [PATCH] =?UTF-8?q?=E9=98=BF=E9=87=8C=E4=BA=91oss=E5=92=8C?=
=?UTF-8?q?=E4=B8=8B=E8=BD=BD=E4=B8=AD=E5=BF=83?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 12 ++
.../zhiyun03/course/mapper/CourseMapper.java | 2 +
.../zhiyun03/course/param/PageParam.java | 6 +
.../service/impl/CourseServiceImpl.java | 12 +-
.../controller/DownloadController.java | 96 ++++++++++++
.../zhiyun03/download/entity/Download.java | 6 +-
.../download/mapper/DownloadMapper.java | 8 +
.../download/service/DownloadService.java | 16 ++
.../service/impl/DownloadServiceImpl.java | 138 ++++++++++++++++++
.../zhiyun03/download/vo/DownloadVo.java | 34 +++++
.../zhiyun03/utils/oss/AliyunOssUtil.java | 76 ++++++++++
.../zhiyun03/utils/oss/OssConfiguration.java | 32 ++++
src/main/resources/application.yml | 19 ++-
src/main/resources/mapper/CourseMapper.xml | 3 +
src/main/resources/mapper/DownloadMapper.xml | 45 ++++++
15 files changed, 492 insertions(+), 13 deletions(-)
create mode 100644 src/main/java/com/zhiyun/zhiyun03/download/vo/DownloadVo.java
create mode 100644 src/main/java/com/zhiyun/zhiyun03/utils/oss/AliyunOssUtil.java
create mode 100644 src/main/java/com/zhiyun/zhiyun03/utils/oss/OssConfiguration.java
create mode 100644 src/main/resources/mapper/DownloadMapper.xml
diff --git a/pom.xml b/pom.xml
index b2ced62..398067b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -76,6 +76,18 @@
3.0.3
+
+ com.aliyun.oss
+ aliyun-sdk-oss
+ 3.14.0
+
+
+
+ commons-fileupload
+ commons-fileupload
+ 1.4
+
+
diff --git a/src/main/java/com/zhiyun/zhiyun03/course/mapper/CourseMapper.java b/src/main/java/com/zhiyun/zhiyun03/course/mapper/CourseMapper.java
index 03358bc..cef02f2 100644
--- a/src/main/java/com/zhiyun/zhiyun03/course/mapper/CourseMapper.java
+++ b/src/main/java/com/zhiyun/zhiyun03/course/mapper/CourseMapper.java
@@ -17,4 +17,6 @@ public interface CourseMapper extends BaseMapper {
CourseVo queryCourseById(Integer id);
int updateCourseById(Course course);
+
+ int selectByName(String courseName);
}
diff --git a/src/main/java/com/zhiyun/zhiyun03/course/param/PageParam.java b/src/main/java/com/zhiyun/zhiyun03/course/param/PageParam.java
index 38c843a..c40fdc3 100644
--- a/src/main/java/com/zhiyun/zhiyun03/course/param/PageParam.java
+++ b/src/main/java/com/zhiyun/zhiyun03/course/param/PageParam.java
@@ -4,6 +4,12 @@ import lombok.Data;
@Data
public class PageParam {
+ /**
+ * 当前页
+ */
private Integer currentPage;
+ /**
+ * 每页展示条数
+ */
private Integer pageSize;
}
diff --git a/src/main/java/com/zhiyun/zhiyun03/course/service/impl/CourseServiceImpl.java b/src/main/java/com/zhiyun/zhiyun03/course/service/impl/CourseServiceImpl.java
index d78e89f..fa75935 100644
--- a/src/main/java/com/zhiyun/zhiyun03/course/service/impl/CourseServiceImpl.java
+++ b/src/main/java/com/zhiyun/zhiyun03/course/service/impl/CourseServiceImpl.java
@@ -58,12 +58,18 @@ public class CourseServiceImpl extends ServiceImpl implemen
*/
@Override
public int addCourse(CourseVo courseVo) {
-
if (courseVo == null)
{
throw new ServiceException("400","课程添加失败");
}
+ int sum = courseMapper.selectByName(courseVo.getCourseName());
+ if (sum>0)
+ {
+ throw new ServiceException("403","该课程已经存在");
+ }
+
+
Course course = new Course();
BeanUtils.copyProperties(courseVo,course);
@@ -97,12 +103,14 @@ public class CourseServiceImpl extends ServiceImpl implemen
*/
@Override
public int updateById(CourseVo courseVo) {
+ //将vo值赋给course
Course course = new Course();
BeanUtils.copyProperties(courseVo,course);
+ //查询归属目录
String dirName = courseVo.getDirName();
Integer id = directoryMapper.selectByName(dirName);
course.setDirId(id);
-
+ //根据id进行课程更新
int count = courseMapper.updateCourseById(course);
if (count<0)
{
diff --git a/src/main/java/com/zhiyun/zhiyun03/download/controller/DownloadController.java b/src/main/java/com/zhiyun/zhiyun03/download/controller/DownloadController.java
index 7f946bf..74529e7 100644
--- a/src/main/java/com/zhiyun/zhiyun03/download/controller/DownloadController.java
+++ b/src/main/java/com/zhiyun/zhiyun03/download/controller/DownloadController.java
@@ -1,4 +1,100 @@
package com.zhiyun.zhiyun03.download.controller;
+import com.zhiyun.zhiyun03.course.vo.PageVO;
+import com.zhiyun.zhiyun03.download.service.DownloadService;
+import com.zhiyun.zhiyun03.download.vo.DownloadVo;
+import com.zhiyun.zhiyun03.utils.common.JsonResult;
+import com.zhiyun.zhiyun03.utils.oss.AliyunOssUtil;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import java.io.File;
+import java.io.FileOutputStream;
+
+@RestController
+@RequestMapping("/download")
public class DownloadController {
+
+ @Resource
+ private AliyunOssUtil ossUtil;
+
+
+ @Resource
+ private DownloadService downloadService;
+
+
+ @ApiOperation("查询下载中心")
+ @GetMapping("/queryDownload")
+ public JsonResult> queryDownload(@ApiParam @RequestParam(value = "page",required = false,defaultValue = "1")Integer page,
+ @ApiParam @RequestParam(value = "limit",required = false,defaultValue = "5")Integer limit ){
+
+ PageVO lists = downloadService.queryDownload(page,limit);
+
+ return JsonResult.success(lists);
+ }
+
+ @ApiOperation("添加下载")
+ @PostMapping("/addDownload")
+ public JsonResult addDownload(DownloadVo vo){
+ int count = downloadService.addDownload(vo);
+ return JsonResult.success();
+
+ }
+
+ @ApiOperation("图片上传")
+ @PostMapping("/uploadFile")
+ public JsonResult upload(@RequestParam("file") @RequestPart MultipartFile file){
+ String upload = null;
+ try {
+ if (file != null) {
+ String fileName = file.getOriginalFilename();
+ if (!"".equals(fileName.trim())) {
+ File newFile = new File(fileName);
+
+ FileOutputStream os = new FileOutputStream(newFile);
+ os.write(file.getBytes());
+ os.close();
+
+ //把file里的内容复制到newFile中
+ file.transferTo(newFile);
+ upload = ossUtil.upload(newFile);
+
+ }
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ String path = "https://zhiyun03.oss-cn-beijing.aliyuncs.com/"+ upload;
+ return JsonResult.success(path);
+ }
+
+
+
+
+ @ApiOperation("删除下载")
+ @PostMapping("/delDownload")
+ public JsonResult delDownload(Integer id){
+ int count = downloadService.delDownload(id);
+ return JsonResult.success();
+
+ }
+
+ @ApiOperation("根据Id查询")
+ @PostMapping("/queryById")
+ public JsonResult queryById(Integer id){
+ DownloadVo downloadAddVo =downloadService.queryById(id);
+ return JsonResult.success(downloadAddVo);
+
+ }
+
+ @ApiOperation("更新下载")
+ @PostMapping("/updateDownload")
+ public JsonResult updateDownload(DownloadVo vo){
+ int count =downloadService.updateDownload(vo);
+ return JsonResult.success();
+ }
+
}
diff --git a/src/main/java/com/zhiyun/zhiyun03/download/entity/Download.java b/src/main/java/com/zhiyun/zhiyun03/download/entity/Download.java
index b599b5b..df7a662 100644
--- a/src/main/java/com/zhiyun/zhiyun03/download/entity/Download.java
+++ b/src/main/java/com/zhiyun/zhiyun03/download/entity/Download.java
@@ -21,7 +21,7 @@ public class Download {
* id
*/
@TableId(value = "id",type = IdType.AUTO)
- private int id;
+ private Integer id;
/**
* 下载名称
@@ -32,8 +32,8 @@ public class Download {
/**
* 下载简介
*/
- @TableField(value = "download_biref")
- private String downloadBiref;
+ @TableField(value = "download_brief")
+ private String downloadBrief;
/**
* 下载链接
diff --git a/src/main/java/com/zhiyun/zhiyun03/download/mapper/DownloadMapper.java b/src/main/java/com/zhiyun/zhiyun03/download/mapper/DownloadMapper.java
index ab3f516..25f2c1f 100644
--- a/src/main/java/com/zhiyun/zhiyun03/download/mapper/DownloadMapper.java
+++ b/src/main/java/com/zhiyun/zhiyun03/download/mapper/DownloadMapper.java
@@ -2,8 +2,16 @@ package com.zhiyun.zhiyun03.download.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zhiyun.zhiyun03.download.entity.Download;
+import com.zhiyun.zhiyun03.download.vo.DownloadVo;
import org.apache.ibatis.annotations.Mapper;
+import java.util.List;
+
@Mapper
public interface DownloadMapper extends BaseMapper {
+ List queryDownload();
+
+ int selectByName(String downloadName);
+
+ int updateDownloadById(Download download);
}
diff --git a/src/main/java/com/zhiyun/zhiyun03/download/service/DownloadService.java b/src/main/java/com/zhiyun/zhiyun03/download/service/DownloadService.java
index 73872c5..18cba85 100644
--- a/src/main/java/com/zhiyun/zhiyun03/download/service/DownloadService.java
+++ b/src/main/java/com/zhiyun/zhiyun03/download/service/DownloadService.java
@@ -1,7 +1,23 @@
package com.zhiyun.zhiyun03.download.service;
import com.baomidou.mybatisplus.extension.service.IService;
+import com.zhiyun.zhiyun03.course.vo.PageVO;
import com.zhiyun.zhiyun03.download.entity.Download;
+import com.zhiyun.zhiyun03.download.vo.DownloadVo;
public interface DownloadService extends IService {
+ /*
+ * 查询下载中心
+ * */
+ PageVO queryDownload(Integer page, Integer limit);
+ /*
+ * 添加下载
+ * */
+ int addDownload(DownloadVo vo);
+
+ int delDownload(Integer id);
+
+ DownloadVo queryById(Integer id);
+
+ int updateDownload(DownloadVo vo);
}
diff --git a/src/main/java/com/zhiyun/zhiyun03/download/service/impl/DownloadServiceImpl.java b/src/main/java/com/zhiyun/zhiyun03/download/service/impl/DownloadServiceImpl.java
index 924a89a..c90e1e0 100644
--- a/src/main/java/com/zhiyun/zhiyun03/download/service/impl/DownloadServiceImpl.java
+++ b/src/main/java/com/zhiyun/zhiyun03/download/service/impl/DownloadServiceImpl.java
@@ -1,11 +1,149 @@
package com.zhiyun.zhiyun03.download.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import com.zhiyun.zhiyun03.application.entity.Directory;
+import com.zhiyun.zhiyun03.application.mapper.DirectoryMapper;
+import com.zhiyun.zhiyun03.course.vo.PageVO;
import com.zhiyun.zhiyun03.download.entity.Download;
import com.zhiyun.zhiyun03.download.mapper.DownloadMapper;
import com.zhiyun.zhiyun03.download.service.DownloadService;
+import com.zhiyun.zhiyun03.download.vo.DownloadVo;
+import com.zhiyun.zhiyun03.utils.exception.ServiceException;
+import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.List;
+
@Service
public class DownloadServiceImpl extends ServiceImpl implements DownloadService {
+
+ @Resource
+ private DownloadMapper downloadMapper;
+
+ @Resource
+ private DirectoryMapper directoryMapper;
+
+ /*
+ * 查询下载中心
+ * */
+ @Override
+ public PageVO queryDownload(Integer page, Integer limit) {
+
+ //开启分页
+ PageHelper.startPage(page,limit);
+ //查询所有下载数据
+ List downloadVoList = downloadMapper.queryDownload();
+
+ PageInfo downloadVoPageInfo = new PageInfo<>(downloadVoList);
+ PageVO downloadVoPageVO = new PageVO<>();
+ //获取当前页
+ downloadVoPageVO.setCurrentPage(downloadVoPageInfo.getPageNum());
+ //总条数
+ downloadVoPageVO.setTotal(downloadVoPageInfo.getTotal());
+ //分页数据
+ downloadVoPageVO.setList(downloadVoPageInfo.getList());
+
+
+ return downloadVoPageVO;
+ }
+ /*
+ * 添加下载
+ * */
+ @Override
+ public int addDownload(DownloadVo vo) {
+ //查询下载名称是否已经存在
+ int count = downloadMapper.selectByName(vo.getDownloadName());
+ if (count>0)
+ {
+ throw new ServiceException("403","下载已存在");
+ }
+ //将vo值传给download
+ Download download = new Download();
+ BeanUtils.copyProperties(vo,download);
+ //查询归属目录id
+ Integer dirId = directoryMapper.selectByName(vo.getDirName());
+ download.setDirId(dirId);
+ download.setDownloadUpdatetime(new Date());
+ //添加download
+ int insert = downloadMapper.insert(download);
+ if (insert>0)
+ {
+ return insert;
+ }else
+ {
+ throw new ServiceException("400","添加下载失败");
+ }
+ }
+
+ /*
+ * 根据id删除数据
+ * */
+ @Override
+ public int delDownload(Integer id) {
+ if (id == null)
+ {
+ throw new ServiceException("400","查询id值为空");
+ }
+ //根据id删除
+ int count = downloadMapper.deleteById(id);
+
+ if (count>0)
+ {
+ return count;
+ }else
+ {
+ throw new ServiceException("400","删除失败");
+ }
+ }
+ /*
+ * 根据id查询数据
+ * */
+ @Override
+ public DownloadVo queryById(Integer id) {
+ //根据id查询数据
+ Download download = downloadMapper.selectById(id);
+ //查询目录id
+ Directory directory = directoryMapper.selectById(download.getDirId());
+ DownloadVo downloadAddVo = new DownloadVo();
+ //复制给vo
+ BeanUtils.copyProperties(download,downloadAddVo);
+ downloadAddVo.setDirName(directory.getDirName());
+
+ return downloadAddVo;
+ }
+ /*
+ * 更新下载
+ * */
+ @Override
+ public int updateDownload(DownloadVo vo) {
+ //查询更新的下载名是否存在
+ int sum = downloadMapper.selectByName(vo.getDownloadName());
+ if (sum>0)
+ {
+ throw new ServiceException("403","下载已存在");
+ }
+
+ //将vo值传给download
+ Download download = new Download();
+ BeanUtils.copyProperties(vo,download);
+ //查询归属目录id
+ Integer dirId = directoryMapper.selectByName(vo.getDirName());
+ download.setDirId(dirId);
+ download.setDownloadUpdatetime(new Date());
+ //添加download
+ int insert = downloadMapper.updateDownloadById(download);
+ if (insert>0)
+ {
+ return insert;
+ }else
+ {
+ throw new ServiceException("400","更新失败");
+ }
+ }
+
+
}
diff --git a/src/main/java/com/zhiyun/zhiyun03/download/vo/DownloadVo.java b/src/main/java/com/zhiyun/zhiyun03/download/vo/DownloadVo.java
new file mode 100644
index 0000000..7f558e3
--- /dev/null
+++ b/src/main/java/com/zhiyun/zhiyun03/download/vo/DownloadVo.java
@@ -0,0 +1,34 @@
+package com.zhiyun.zhiyun03.download.vo;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+@Data
+public class DownloadVo {
+ @TableId
+ private int id;
+
+ /**
+ * 下载名称
+ */
+ private String downloadName;
+ /**
+ * 下载简介
+ */
+ private String downloadBrief;
+ /**
+ * 下载链接
+ */
+ private String downloadUrl;
+ /**
+ * 归属目录
+ */
+ private String dirName;
+ /**
+ * 下载图片
+ */
+ private String downloadImg;
+
+
+
+}
diff --git a/src/main/java/com/zhiyun/zhiyun03/utils/oss/AliyunOssUtil.java b/src/main/java/com/zhiyun/zhiyun03/utils/oss/AliyunOssUtil.java
new file mode 100644
index 0000000..2e7ac00
--- /dev/null
+++ b/src/main/java/com/zhiyun/zhiyun03/utils/oss/AliyunOssUtil.java
@@ -0,0 +1,76 @@
+package com.zhiyun.zhiyun03.utils.oss;
+
+import com.aliyun.oss.OSSClient;
+import com.aliyun.oss.model.CannedAccessControlList;
+import com.aliyun.oss.model.CreateBucketRequest;
+import com.aliyun.oss.model.PutObjectRequest;
+import com.aliyun.oss.model.PutObjectResult;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.io.File;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.UUID;
+
+/**
+ * 封装文件上传方法
+ */
+@Component
+public class AliyunOssUtil {
+
+ @Autowired
+ private OssConfiguration config;
+
+ public String upload(File file) {
+ if (file == null) {
+ return null;
+ }
+
+ String endPoint = config.getEndPoint();
+ String keyId = config.getAccessKeyId();
+ String keySecret = config.getAccessKeySecret();
+ String bucketName = config.getBucketName();
+ String fileHost = config.getFileHost();
+
+ //定义子文件的格式
+ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+ String dateStr = format.format(new Date());
+
+ //阿里云文件上传客户端
+ OSSClient client = new OSSClient(endPoint, keyId, keySecret);
+
+ try {
+ //判断桶是否存在
+ if (!client.doesBucketExist(bucketName)) {
+ //创建桶
+ client.createBucket(bucketName);
+ CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucketName);
+ //设置访问权限为公共读
+ createBucketRequest.setCannedACL(CannedAccessControlList.PublicRead);
+ //发起创建桶的请求
+ client.createBucket(createBucketRequest);
+ }
+
+ //当桶存在时,进行文件上传
+ //设置文件路径和名称
+ String fileUrl = fileHost + "/" + (dateStr + "/" + UUID.randomUUID().toString().replace("-", "") + "-" + file.getName());
+ PutObjectResult result = client.putObject(new PutObjectRequest(bucketName, fileUrl, file));
+ client.setBucketAcl(bucketName, CannedAccessControlList.PublicRead);
+
+ //文件上传成功后,返回当前文件的路径
+ if (result != null) {
+ return fileUrl;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ if (client != null) {
+ client.shutdown();
+ }
+ }
+
+ return null;
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/zhiyun/zhiyun03/utils/oss/OssConfiguration.java b/src/main/java/com/zhiyun/zhiyun03/utils/oss/OssConfiguration.java
new file mode 100644
index 0000000..8df33d5
--- /dev/null
+++ b/src/main/java/com/zhiyun/zhiyun03/utils/oss/OssConfiguration.java
@@ -0,0 +1,32 @@
+package com.zhiyun.zhiyun03.utils.oss;
+
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.stereotype.Component;
+
+/**
+ * 把配置文件中的配置信息读取到该类中.
+ */
+@Data
+@Configuration
+public class OssConfiguration {
+
+ @Value("${endpoint}")
+ private String endPoint;
+
+ @Value("${accessKeyId}")
+ private String accessKeyId;
+
+ @Value("${accessKeySecret}")
+ private String accessKeySecret;
+
+ @Value("${filehost}")
+ private String fileHost;
+
+ @Value("${bucketName}")
+ private String bucketName;
+
+}
\ No newline at end of file
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 2a02a29..9225c66 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -1,14 +1,17 @@
server:
port: 8080
-#
-#mybatis:
-# mapper-locations: classpath*:mapper/**/*.xml
-# configuration:
-# map-underscore-to-camel-case: true
-# # ???????
-# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
-#
+
+#配置OSS的个人信息
+bucketName: zhiyun03
+accessKeyId: LTAI5t8zUbXsJpzPuoBQ3eGu
+accessKeySecret: dIYCoLCKlKPp17wqRRPlrwLaznDYXc
+#OSS对应的区域
+endpoint: oss-cn-beijing.aliyuncs.com
+#OSS对应的文件夹,会在OSS中自动创建
+filehost: images
+
+
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
diff --git a/src/main/resources/mapper/CourseMapper.xml b/src/main/resources/mapper/CourseMapper.xml
index f2909f8..84e176c 100644
--- a/src/main/resources/mapper/CourseMapper.xml
+++ b/src/main/resources/mapper/CourseMapper.xml
@@ -47,5 +47,8 @@
on c.dir_id = d.id
where c.id =#{id}
+
\ No newline at end of file
diff --git a/src/main/resources/mapper/DownloadMapper.xml b/src/main/resources/mapper/DownloadMapper.xml
new file mode 100644
index 0000000..9d8e553
--- /dev/null
+++ b/src/main/resources/mapper/DownloadMapper.xml
@@ -0,0 +1,45 @@
+
+
+
+
+ update download
+
+
+ download_name=#{downloadName},
+
+
+ download_url=#{downloadUrl},
+
+
+ download_brief=#{downloadBrief},
+
+
+ dir_id=#{dirId},
+
+
+ download_img=#{downloadImg}
+
+
+
+
+ id = #{id}
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file