From 795e3e5461e9a9dfa69b6e5c9c8e19e71d97dc04 Mon Sep 17 00:00:00 2001 From: whb <17803890193@163.com> Date: Thu, 10 Aug 2023 21:56:37 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E8=AF=BE=E7=A8=8B=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E7=AC=AC=E4=BA=8C=E6=AC=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 13 +- .../application/mapper/DirectoryMapper.java | 1 + .../course/config/MybatisPlusConfig.java | 19 --- .../course/controller/CourseController.java | 45 ++++--- .../zhiyun03/course/mapper/CourseMapper.java | 6 + .../course/service/CourseService.java | 14 +- .../service/impl/CourseServiceImpl.java | 117 ++++++++++------ .../zhiyun/zhiyun03/course/vo/CourseVo.java | 9 +- .../com/zhiyun/zhiyun03/course/vo/PageVO.java | 3 + .../utils/config/GlobalCrossConfig.java | 33 +++++ src/main/resources/application.yml | 12 +- src/main/resources/mapper/CourseMapper.xml | 51 +++++++ src/main/resources/mapper/DirectoryMapper.xml | 3 + .../templates/layui-v2.6.8/courseList.html | 127 ++++++++++++++++-- .../templates/layui-v2.6.8/index.html | 2 +- 15 files changed, 352 insertions(+), 103 deletions(-) delete mode 100644 src/main/java/com/zhiyun/zhiyun03/course/config/MybatisPlusConfig.java create mode 100644 src/main/java/com/zhiyun/zhiyun03/utils/config/GlobalCrossConfig.java create mode 100644 src/main/resources/mapper/CourseMapper.xml diff --git a/pom.xml b/pom.xml index c470267..b2ced62 100644 --- a/pom.xml +++ b/pom.xml @@ -33,6 +33,8 @@ test + + com.alibaba druid-spring-boot-starter @@ -56,13 +58,18 @@ 5.0.7 + + + + + + com.github.pagehelper - pagehelper - 5.3.2 + pagehelper-spring-boot-starter + 1.4.6 - com.github.xiaoymin knife4j-spring-boot-starter diff --git a/src/main/java/com/zhiyun/zhiyun03/application/mapper/DirectoryMapper.java b/src/main/java/com/zhiyun/zhiyun03/application/mapper/DirectoryMapper.java index 2de95b0..3dc326d 100644 --- a/src/main/java/com/zhiyun/zhiyun03/application/mapper/DirectoryMapper.java +++ b/src/main/java/com/zhiyun/zhiyun03/application/mapper/DirectoryMapper.java @@ -6,4 +6,5 @@ import org.apache.ibatis.annotations.Mapper; @Mapper public interface DirectoryMapper extends BaseMapper { + Integer selectByName(String dirName); } diff --git a/src/main/java/com/zhiyun/zhiyun03/course/config/MybatisPlusConfig.java b/src/main/java/com/zhiyun/zhiyun03/course/config/MybatisPlusConfig.java deleted file mode 100644 index e5e1263..0000000 --- a/src/main/java/com/zhiyun/zhiyun03/course/config/MybatisPlusConfig.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.zhiyun.zhiyun03.course.config; - -import com.baomidou.mybatisplus.annotation.DbType; -import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; -import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -@Configuration -public class MybatisPlusConfig { - // 从MyBatis-Plus 3.4.0开始,不再使用旧版本的PaginationInterceptor ,而是使用MybatisPlusInterceptor - @Bean - public MybatisPlusInterceptor mybatisPlusInterceptor() { - MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); - // 向MyBatis-Plus的过滤器链中添加分页拦截器,需要设置数据库类型(主要用于分页方言) - interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); - return interceptor; - } -} diff --git a/src/main/java/com/zhiyun/zhiyun03/course/controller/CourseController.java b/src/main/java/com/zhiyun/zhiyun03/course/controller/CourseController.java index e52020f..040e035 100644 --- a/src/main/java/com/zhiyun/zhiyun03/course/controller/CourseController.java +++ b/src/main/java/com/zhiyun/zhiyun03/course/controller/CourseController.java @@ -1,6 +1,7 @@ package com.zhiyun.zhiyun03.course.controller; +import com.zhiyun.zhiyun03.application.entity.Directory; import com.zhiyun.zhiyun03.course.entity.Course; import com.zhiyun.zhiyun03.course.service.CourseService; @@ -11,6 +12,7 @@ import com.zhiyun.zhiyun03.utils.common.JsonResult; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; +import io.swagger.models.auth.In; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -26,41 +28,48 @@ public class CourseController { private CourseService courseService; + @ApiOperation("查询课程") - @GetMapping("/selectAll") - public JsonResult queryCourse(){ + @GetMapping("/queryCourse") + public JsonResult> queryCourse(@ApiParam @RequestParam(value = "page",required = false,defaultValue = "1")Integer page, + @ApiParam @RequestParam(value = "limit",required = false,defaultValue = "1")Integer limit ){ - List lists = courseService.queryCourse(); + PageVO lists = courseService.queryCourse(page,limit); return JsonResult.success(lists); } + @ApiOperation("根据ID查询课程") + @GetMapping("/queryCourseById") + public JsonResult queryCourseById(Integer id){ + + CourseVo courseVo =courseService.queryCourseById(id); + + return JsonResult.success(courseVo); + } + + + @ApiOperation("课程添加") - @PostMapping("/add") - public JsonResult addCourse(Course course){ - courseService.addCourse(course); + @PostMapping("/addCourse") + public JsonResult addCourse(CourseVo courseVo){ + int count = courseService.addCourse(courseVo); + return JsonResult.success(); } -// -//// @ApiOperation("查询目录") -//// @PostMapping("/select") -//// public JsonResult selectDir(Directory directory){ -//// courseService.se(course); -//// return JsonResult.ok(); -//// } -// + @ApiOperation("删除课程") - @DeleteMapping("delById") + @DeleteMapping("delCourseById") public JsonResult delCourseById(Integer id){ courseService.delCourseById(id); return JsonResult.success(); } @ApiOperation("更新课程") - @PostMapping("update") - public JsonResult updateById(Course course){ - courseService.update(course); + @PostMapping("updateById") + public JsonResult updateById(CourseVo courseVo){ + int count = courseService.updateById(courseVo); return JsonResult.success(); } 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 2548fa2..03358bc 100644 --- a/src/main/java/com/zhiyun/zhiyun03/course/mapper/CourseMapper.java +++ b/src/main/java/com/zhiyun/zhiyun03/course/mapper/CourseMapper.java @@ -2,6 +2,8 @@ package com.zhiyun.zhiyun03.course.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.zhiyun.zhiyun03.course.entity.Course; +import com.zhiyun.zhiyun03.course.vo.CourseVo; +import com.zhiyun.zhiyun03.course.vo.PageVO; import org.apache.ibatis.annotations.Mapper; import java.util.List; @@ -10,5 +12,9 @@ import java.util.List; public interface CourseMapper extends BaseMapper { + List queryCourse(); + CourseVo queryCourseById(Integer id); + + int updateCourseById(Course course); } diff --git a/src/main/java/com/zhiyun/zhiyun03/course/service/CourseService.java b/src/main/java/com/zhiyun/zhiyun03/course/service/CourseService.java index ef858c1..bf40208 100644 --- a/src/main/java/com/zhiyun/zhiyun03/course/service/CourseService.java +++ b/src/main/java/com/zhiyun/zhiyun03/course/service/CourseService.java @@ -16,12 +16,18 @@ public interface CourseService extends IService { // // void updateById(Course course); + /* + * 分页查询课程 + * */ + PageVO queryCourse(Integer page, Integer limit ); - List queryCourse(); - - void addCourse(Course course); + int addCourse(CourseVo courseVo); void delCourseById(Integer id); - void update(Course course); + int updateById(CourseVo courseVo); + /* + * 根据ID查询课程 + * */ + CourseVo queryCourseById(Integer id); } 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 77a1885..d78e89f 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 @@ -1,15 +1,17 @@ package com.zhiyun.zhiyun03.course.service.impl; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.zhiyun.zhiyun03.application.entity.Directory; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import com.zhiyun.zhiyun03.application.mapper.DirectoryMapper; -import com.zhiyun.zhiyun03.utils.convert.ConvertUtil; +import com.zhiyun.zhiyun03.course.vo.PageVO; import com.zhiyun.zhiyun03.course.entity.Course; import com.zhiyun.zhiyun03.course.service.CourseService; import com.zhiyun.zhiyun03.course.vo.CourseVo; import com.zhiyun.zhiyun03.course.mapper.CourseMapper; +import com.zhiyun.zhiyun03.utils.exception.ServiceException; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -24,33 +26,29 @@ public class CourseServiceImpl extends ServiceImpl implemen @Resource private DirectoryMapper directoryMapper; - - /** - * 应用中心查询 + * 课程中心查询 */ @Override - public List queryCourse() { - - QueryWrapper qwa=new QueryWrapper<>(); - List courses = courseMapper.selectList(qwa); - QueryWrapper qwd=new QueryWrapper<>(); - List directories = directoryMapper.selectList(qwd); - ConvertUtil convertUtil=new ConvertUtil(); - List applicationVos = convertUtil.entityToVoList(courses, CourseVo.class); - - for (int i = 0; i < courses.size(); i++) { - for (int j = 0; j queryCourse(Integer page, Integer limit) { + //开启分页 + PageHelper.startPage(page,limit); + //查询所有课程 + List courseVoList = courseMapper.queryCourse(); + if (courseVoList.isEmpty()) + { + throw new ServiceException("400","课程数据为空"); + } + PageInfo pageInfo = new PageInfo(courseVoList); + PageVO courseVoPageInfo = new PageVO<>(); + //当前页 + courseVoPageInfo.setCurrentPage(pageInfo.getPageNum()); + //总条数 + courseVoPageInfo.setTotal(pageInfo.getTotal()); + //分页数据 + courseVoPageInfo.setList(pageInfo.getList()); + + return courseVoPageInfo; } @@ -59,12 +57,29 @@ public class CourseServiceImpl extends ServiceImpl implemen * 添加课程 */ @Override - public void addCourse(Course course) { + public int addCourse(CourseVo courseVo) { + + if (courseVo == null) + { + throw new ServiceException("400","课程添加失败"); + } + + Course course = new Course(); + + BeanUtils.copyProperties(courseVo,course); + + String dirName = courseVo.getDirName(); - courseMapper.insert(course); -// UpdateWrapper updateWrapper = new UpdateWrapper<>(); -// updateWrapper.set("id",course.getDirId()); -// directoryMapper.update(null,updateWrapper); + Integer id = directoryMapper.selectByName(dirName); + course.setDirId(id); + + int count = courseMapper.insert(course); + System.out.println("count====="+count); + if (count<0) + { + throw new ServiceException("400","课程添加失败"); + } + return count; } @@ -81,16 +96,34 @@ public class CourseServiceImpl extends ServiceImpl implemen * 课程更新 */ @Override - public void update(Course course) { - //变更数据进行更新 - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.set("course_name",course.getCourseName()); - updateWrapper.set("course_brief",course.getCourseBrief()); - updateWrapper.set("course_url",course.getCourseUrl()); - updateWrapper.set("dir_id",course.getDirId()); - updateWrapper.set("course_icon",course.getCourseIcon()); - updateWrapper.eq("id",course.getId()); - courseMapper.update(null,updateWrapper); + public int updateById(CourseVo courseVo) { + Course course = new Course(); + BeanUtils.copyProperties(courseVo,course); + String dirName = courseVo.getDirName(); + Integer id = directoryMapper.selectByName(dirName); + course.setDirId(id); + + int count = courseMapper.updateCourseById(course); + if (count<0) + { + throw new ServiceException("400","课程更新失败"); + } + return count; + + } + + /** + * 根据ID查询课程 + */ + @Override + public CourseVo queryCourseById(Integer id) { + //根据id查找数据 + CourseVo courseVo = courseMapper.queryCourseById(id); + if (courseVo==null) + { + throw new ServiceException("401","课程不存在"); + } + return courseVo; } diff --git a/src/main/java/com/zhiyun/zhiyun03/course/vo/CourseVo.java b/src/main/java/com/zhiyun/zhiyun03/course/vo/CourseVo.java index 804ee88..6ab9a15 100644 --- a/src/main/java/com/zhiyun/zhiyun03/course/vo/CourseVo.java +++ b/src/main/java/com/zhiyun/zhiyun03/course/vo/CourseVo.java @@ -9,13 +9,14 @@ public class CourseVo { @TableId private int id; + //课程名 private String courseName; - + //课程简介 private String courseBrief; - + //课程链接 private String courseUrl; - + //归属目录 private String dirName; - + //课程图标 private String courseIcon; } diff --git a/src/main/java/com/zhiyun/zhiyun03/course/vo/PageVO.java b/src/main/java/com/zhiyun/zhiyun03/course/vo/PageVO.java index f37cbee..ae0ddb7 100644 --- a/src/main/java/com/zhiyun/zhiyun03/course/vo/PageVO.java +++ b/src/main/java/com/zhiyun/zhiyun03/course/vo/PageVO.java @@ -7,7 +7,10 @@ import java.util.List; @Data public class PageVO { + //当前页 private Integer currentPage; + //总条数 private Long total; + //数据 private List list; } diff --git a/src/main/java/com/zhiyun/zhiyun03/utils/config/GlobalCrossConfig.java b/src/main/java/com/zhiyun/zhiyun03/utils/config/GlobalCrossConfig.java new file mode 100644 index 0000000..f204a79 --- /dev/null +++ b/src/main/java/com/zhiyun/zhiyun03/utils/config/GlobalCrossConfig.java @@ -0,0 +1,33 @@ +package com.zhiyun.zhiyun03.utils.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.cors.CorsConfiguration; +import org.springframework.web.cors.UrlBasedCorsConfigurationSource; +import org.springframework.web.filter.CorsFilter; + +@Configuration +public class GlobalCrossConfig { + @Bean + public CorsFilter corsFilter() { + //1. 添加 CORS配置信息 + CorsConfiguration config = new CorsConfiguration(); + //放行哪些原始域,*表示所有 + // config.addAllowedOrigin("*"); + // 注意:springboot2.4以上使用该方式 + config.addAllowedOriginPattern("*"); + //是否发送 Cookie + config.setAllowCredentials(true); + //放行哪些请求方式 + config.addAllowedMethod("*"); + //放行哪些原始请求头部信息 + config.addAllowedHeader("*"); + //暴露哪些头部信息 + config.addExposedHeader("*"); + //2. 添加映射路径 + UrlBasedCorsConfigurationSource corsConfigurationSource = new UrlBasedCorsConfigurationSource(); + corsConfigurationSource.registerCorsConfiguration("/**", config); + //3. 返回新的CorsFilter + return new CorsFilter(corsConfigurationSource); + } +} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 5667f33..2a02a29 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -16,7 +16,7 @@ spring: druid: url: jdbc:mysql://localhost:3306/zhiyun?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai username: root - password: 123456 + password: root @@ -25,5 +25,15 @@ mybatis-plus: configuration: # 控制台打印日志 log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + + + +pagehelper: + helper-dialect: mysql + reasonable: true + support-methods-arguments: true + + + swagger: enabled: true diff --git a/src/main/resources/mapper/CourseMapper.xml b/src/main/resources/mapper/CourseMapper.xml new file mode 100644 index 0000000..f2909f8 --- /dev/null +++ b/src/main/resources/mapper/CourseMapper.xml @@ -0,0 +1,51 @@ + + + + + + + update course + + + course_name=#{courseName}, + + + course_url=#{courseUrl}, + + + course_brief=#{courseBrief}, + + + dir_id=#{dirId}, + + + course_icon=#{courseIcon} + + + + + id = #{id} + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper/DirectoryMapper.xml b/src/main/resources/mapper/DirectoryMapper.xml index 8055e7d..d02639e 100644 --- a/src/main/resources/mapper/DirectoryMapper.xml +++ b/src/main/resources/mapper/DirectoryMapper.xml @@ -2,4 +2,7 @@ + \ No newline at end of file diff --git a/src/main/resources/templates/layui-v2.6.8/courseList.html b/src/main/resources/templates/layui-v2.6.8/courseList.html index da6688c..a3b4daf 100644 --- a/src/main/resources/templates/layui-v2.6.8/courseList.html +++ b/src/main/resources/templates/layui-v2.6.8/courseList.html @@ -25,38 +25,100 @@ 删除 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + diff --git a/src/main/resources/templates/layui-v2.6.8/index.html b/src/main/resources/templates/layui-v2.6.8/index.html index 5128b87..fc35088 100644 --- a/src/main/resources/templates/layui-v2.6.8/index.html +++ b/src/main/resources/templates/layui-v2.6.8/index.html @@ -54,7 +54,7 @@
  • - 课程中心 + 课程中心
  • 应用中心 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 2/2] =?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