Merge remote-tracking branch 'origin/master'

# Conflicts:
#	src/main/resources/templates/layui-v2.6.8/courseList.html
main
@t2652009480 2 years ago
commit 37d9cc64a6

@ -33,6 +33,8 @@
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
@ -56,19 +58,36 @@
<version>5.0.7</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>com.github.pagehelper</groupId>-->
<!-- <artifactId>pagehelper</artifactId>-->
<!-- <version>5.3.2</version>-->
<!-- </dependency>-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.3.2</version>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.4.6</version>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>3.0.3</version>
</dependency>
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.14.0</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
</dependencies>
<build>

@ -6,4 +6,5 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface DirectoryMapper extends BaseMapper<Directory> {
Integer selectByName(String dirName);
}

@ -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;
}
}

@ -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<CourseVo> queryCourse(){
@GetMapping("/queryCourse")
public JsonResult<PageVO<CourseVo>> queryCourse(@ApiParam @RequestParam(value = "page",required = false,defaultValue = "1")Integer page,
@ApiParam @RequestParam(value = "limit",required = false,defaultValue = "1")Integer limit ){
List<CourseVo> lists = courseService.queryCourse();
PageVO<CourseVo> lists = courseService.queryCourse(page,limit);
return JsonResult.success(lists);
}
@ApiOperation("根据ID查询课程")
@GetMapping("/queryCourseById")
public JsonResult<CourseVo> 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();
}

@ -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,11 @@ import java.util.List;
public interface CourseMapper extends BaseMapper<Course> {
List<CourseVo> queryCourse();
CourseVo queryCourseById(Integer id);
int updateCourseById(Course course);
int selectByName(String courseName);
}

@ -4,6 +4,12 @@ import lombok.Data;
@Data
public class PageParam {
/**
*
*/
private Integer currentPage;
/**
*
*/
private Integer pageSize;
}

@ -16,12 +16,18 @@ public interface CourseService extends IService<Course> {
//
// void updateById(Course course);
/*
*
* */
PageVO<CourseVo> queryCourse(Integer page, Integer limit );
List<CourseVo> 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);
}

@ -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<CourseMapper,Course> implemen
@Resource
private DirectoryMapper directoryMapper;
/**
*
*
*/
@Override
public List<CourseVo> queryCourse() {
QueryWrapper<Course> qwa=new QueryWrapper<>();
List<Course> courses = courseMapper.selectList(qwa);
QueryWrapper<Directory> qwd=new QueryWrapper<>();
List<Directory> directories = directoryMapper.selectList(qwd);
ConvertUtil convertUtil=new ConvertUtil();
List<CourseVo> applicationVos = convertUtil.entityToVoList(courses, CourseVo.class);
for (int i = 0; i < courses.size(); i++) {
for (int j = 0; j <directories.size() ; j++) {
//判断目录id是否相等
if(courses.get(i).getDirId()==directories.get(j).getId()){
//将目录名称添加到vo类中
applicationVos.get(i).setDirName(directories.get(j).getDirName());
}
}
}
return applicationVos;
public PageVO<CourseVo> queryCourse(Integer page, Integer limit) {
//开启分页
PageHelper.startPage(page,limit);
//查询所有课程
List<CourseVo> courseVoList = courseMapper.queryCourse();
if (courseVoList.isEmpty())
{
throw new ServiceException("400","课程数据为空");
}
PageInfo<CourseVo> pageInfo = new PageInfo<CourseVo>(courseVoList);
PageVO<CourseVo> courseVoPageInfo = new PageVO<>();
//当前页
courseVoPageInfo.setCurrentPage(pageInfo.getPageNum());
//总条数
courseVoPageInfo.setTotal(pageInfo.getTotal());
//分页数据
courseVoPageInfo.setList(pageInfo.getList());
return courseVoPageInfo;
}
@ -59,12 +57,35 @@ public class CourseServiceImpl extends ServiceImpl<CourseMapper,Course> implemen
*
*/
@Override
public void addCourse(Course course) {
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);
courseMapper.insert(course);
// UpdateWrapper<Directory> updateWrapper = new UpdateWrapper<>();
// updateWrapper.set("id",course.getDirId());
// directoryMapper.update(null,updateWrapper);
String dirName = courseVo.getDirName();
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 +102,36 @@ public class CourseServiceImpl extends ServiceImpl<CourseMapper,Course> implemen
*
*/
@Override
public void update(Course course) {
//变更数据进行更新
UpdateWrapper<Course> 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) {
//将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)
{
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;
}

@ -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;
}

@ -7,7 +7,10 @@ import java.util.List;
@Data
public class PageVO<T> {
//当前页
private Integer currentPage;
//总条数
private Long total;
//数据
private List<T> list;
}

@ -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<PageVO<DownloadVo>> queryDownload(@ApiParam @RequestParam(value = "page",required = false,defaultValue = "1")Integer page,
@ApiParam @RequestParam(value = "limit",required = false,defaultValue = "5")Integer limit ){
PageVO<DownloadVo> 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<DownloadVo> queryById(Integer id){
DownloadVo downloadAddVo =downloadService.queryById(id);
return JsonResult.success(downloadAddVo);
}
@ApiOperation("更新下载")
@PostMapping("/updateDownload")
public JsonResult<DownloadVo> updateDownload(DownloadVo vo){
int count =downloadService.updateDownload(vo);
return JsonResult.success();
}
}

@ -32,8 +32,8 @@ public class Download {
/**
*
*/
@TableField(value = "download_biref")
private String downloadBiref;
@TableField(value = "download_brief")
private String downloadBrief;
/**
*

@ -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<Download> {
List<DownloadVo> queryDownload();
int selectByName(String downloadName);
int updateDownloadById(Download download);
}

@ -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<Download> {
/*
*
* */
PageVO<DownloadVo> queryDownload(Integer page, Integer limit);
/*
*
* */
int addDownload(DownloadVo vo);
int delDownload(Integer id);
DownloadVo queryById(Integer id);
int updateDownload(DownloadVo vo);
}

@ -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<DownloadMapper, Download> implements DownloadService {
@Resource
private DownloadMapper downloadMapper;
@Resource
private DirectoryMapper directoryMapper;
/*
*
* */
@Override
public PageVO<DownloadVo> queryDownload(Integer page, Integer limit) {
//开启分页
PageHelper.startPage(page,limit);
//查询所有下载数据
List<DownloadVo> downloadVoList = downloadMapper.queryDownload();
PageInfo<DownloadVo> downloadVoPageInfo = new PageInfo<>(downloadVoList);
PageVO<DownloadVo> 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","更新失败");
}
}
}

@ -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;
}

@ -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;
}
}

@ -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;
}

@ -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
@ -16,7 +19,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 +28,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

@ -0,0 +1,54 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.zhiyun.zhiyun03.course.mapper.CourseMapper">
<update id="updateCourseById">
update course
<set >
<if test="courseName != null" >
course_name=#{courseName},
</if>
<if test="courseUrl != null" >
course_url=#{courseUrl},
</if>
<if test="courseBrief != null" >
course_brief=#{courseBrief},
</if>
<if test="dirId != null" >
dir_id=#{dirId},
</if>
<if test="courseIcon != null" >
course_icon=#{courseIcon}
</if>
</set>
<where>
<if test="id!=null">
id = #{id}
</if>
</where>
</update>
<select id="queryCourse" resultType="com.zhiyun.zhiyun03.course.vo.CourseVo">
select c.id,c.course_name,c.course_brief,c.course_url,d.dir_name,c.course_icon,c.course_addtime,c.course_updatetime
from course as c
inner join
(select * from directory) as d
on c.dir_id = d.id
-- where d.id=c.dir_id
</select>
<select id="queryCourseById" resultType="com.zhiyun.zhiyun03.course.vo.CourseVo">
select c.id,c.course_name,c.course_brief,c.course_url,d.dir_name,c.course_icon,c.course_addtime,c.course_updatetime
from course as c
inner join
(select * from directory) as d
on c.dir_id = d.id
where c.id =#{id}
</select>
<select id="selectByName" resultType="java.lang.Integer">
select count(1) from course where course_name =#{courseName}
</select>
</mapper>

@ -2,4 +2,7 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zhiyun.zhiyun03.application.mapper.DirectoryMapper">
<select id="selectByName" resultType="java.lang.Integer">
select id from directory where dir_name =#{dirName}
</select>
</mapper>

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.zhiyun.zhiyun03.download.mapper.DownloadMapper">
<update id="updateDownloadById">
update download
<set >
<if test="downloadName != null" >
download_name=#{downloadName},
</if>
<if test="downloadUrl != null" >
download_url=#{downloadUrl},
</if>
<if test="downloadBrief != null" >
download_brief=#{downloadBrief},
</if>
<if test="dirId != null" >
dir_id=#{dirId},
</if>
<if test="downloadImg != null" >
download_img=#{downloadImg}
</if>
</set>
<where>
<if test="id!=null">
id = #{id}
</if>
</where>
</update>
<select id="queryDownload" resultType="com.zhiyun.zhiyun03.download.vo.DownloadVo">
select do.id,do.download_name,do.download_brief,do.download_url,d.dir_name
from download as do
inner join
(select id,dir_name from directory) as d
on do.dir_id = d.id
</select>
<select id="selectByName" resultType="java.lang.Integer">
select count(1) from download where download_name =#{downloadName}
</select>
</mapper>

@ -25,38 +25,100 @@
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
</script>
<!--<script src="layui/layui.js" charset="utf-8"></script>-->
<!--&lt;!&ndash; 注意:如果你直接复制所有代码到本地,上述 JS 路径需要改成你本地的 &ndash;&gt;-->
<!--<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>-->
<!--<script>-->
<!-- layui.use('table', function(){-->
<!-- var table = layui.table;-->
<!-- //温馨提示:默认由前端自动合计当前行数据。从 layui 2.5.6 开始: 若接口直接返回了合计行数据,则优先读取接口合计行数据。-->
<!-- //详见http://www.ilayuis.com/doc/modules/table.html#totalRow-->
<!-- table.render({-->
<!-- elem: '#test'-->
<!-- ,url:'http://localhost:8080/api/course/queryCourse'-->
<!-- ,toolbar: '#toolbarDemo'-->
<!-- ,title: '课程数据表'-->
<!-- ,totalRow: true-->
<!-- ,cols: [[-->
<!-- {type: 'checkbox', fixed: 'left'}-->
<!-- ,{field:'id', title:'编号', width:120, sort: true, }-->
<!-- ,{field:'courseName', title:'课程名称', width:120}-->
<!-- ,{field:'courseBrief', title:'课程简介', width:120}-->
<!-- ,{field:'courseUrl', title:'超链接', width:120}-->
<!-- ,{field:'dirName', title:'归属目录', width:120}-->
<!-- ,{field:'courseIcon', title:'课程图标', width:120}-->
<!-- ,{fixed: 'right', title:'操作', toolbar: '#barDemo', width:150}-->
<!-- ]]-->
<!-- ,page: true-->
<!-- });-->
<!-- //工具栏事件-->
<!-- table.on('toolbar(test)', function(obj){-->
<!-- var checkStatus = table.checkStatus(obj.config.id);-->
<!-- switch(obj.event){-->
<!-- case 'getCheckData':-->
<!-- var data = checkStatus.data;-->
<!-- layer.alert(JSON.stringify(data));-->
<!-- break;-->
<!-- case 'getCheckLength':-->
<!-- var data = checkStatus.data;-->
<!-- layer.msg('选中了:'+ data.length + ' 个');-->
<!-- break;-->
<!-- case 'isAll':-->
<!-- layer.msg(checkStatus.isAll ? '全选': '未全选')-->
<!-- break;-->
<!-- };-->
<!-- });-->
<!-- });-->
<!--</script>-->
<script src="layui/layui.js" charset="utf-8"></script>
<!-- 注意:如果你直接复制所有代码到本地,上述 JS 路径需要改成你本地的 -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<!-- 引入jquery-3.5.1.min.js -->
<script src="https://ajax.aspnetcdn.com/ajax/jquery/jquery-3.5.1.min.js"></script>
<script>
layui.use('table', function(){
var table = layui.table;
//温馨提示:默认由前端自动合计当前行数据。从 layui 2.5.6 开始: 若接口直接返回了合计行数据,则优先读取接口合计行数据。
//详见http://www.ilayuis.com/doc/modules/table.html#totalRow
table.render({
elem: '#test'
,url:'http://localhost:8080/api/course/selectAll'
,toolbar: '#toolbarDemo'
,url:'http://localhost:8080/api/course/queryCourse'/*tpa=https://www.layuiweb.com/test/table/demo1.json*/
,toolbar: '#toolbarDemo' //开启头部工具栏,并为其绑定左侧模板
,defaultToolbar: ['filter', 'exports', 'print', { //自定义头部工具栏右侧图标。如无需自定义,去除该参数即可
title: '提示'
,layEvent: 'LAYTABLE_TIPS'
,icon: 'layui-icon-tips'
}]
,title: '课程数据表'
,totalRow: true
,cols: [[
{type: 'checkbox', fixed: 'left'}
{type: 'checkbox', fixed: 'left'}
,{field:'id', title:'编号', width:120, sort: true, }
,{field:'courseName', title:'课程名称', width:120}
,{field:'courseBrief', title:'课程简介', width:120}
,{field:'courseUrl', title:'超链接', width:120}
,{field:'dirName', title:'归属目录', width:120}
,{field:'courseIcon', title:'编号', width:120}
,{field:'courseIcon', title:'课程图标', width:120}
,{fixed: 'right', title:'操作', toolbar: '#barDemo', width:150}
]]
,page: true
,page: { //支持传入 laypage 组件的所有参数某些参数除外jump/elem - 详见文档
//layout: ['limit', 'count', 'prev', 'page', 'next', 'skip'] //自定义分页布局
layout: ['count', 'prev', 'page', 'next', 'skip'] //自定义分页布局
,curr: 1 //设定初始在第 1 页
,groups: 3 //只显示 3 个连续页码
,first:"首页" //显示首页
,last:"尾页" //显示尾页
,limit: 2 //每页显示两条数据(和后端保持一致)
//,limits: [1,3,5]
}
});
//工具栏事件
//工具栏事件
table.on('toolbar(test)', function(obj){
var checkStatus = table.checkStatus(obj.config.id);
switch(obj.event){
@ -69,10 +131,53 @@
layer.msg('选中了:'+ data.length + ' 个');
break;
case 'isAll':
layer.msg(checkStatus.isAll ? '全选': '未全选')
layer.msg(checkStatus.isAll ? '全选': '未全选');
break;
//自定义头工具栏右侧图标 - 提示
case 'LAYTABLE_TIPS':
layer.alert('这是工具栏右侧自定义的一个图标按钮');
break;
};
});
//监听行工具事件
table.on('tool(test)', function(obj){
var data = obj.data;
//console.log(obj)
if(obj.event === 'del'){
layer.confirm('真的删除行么', function(index){
//obj.del();//删除表结构
layer.close(index);
//获取要删除的歌曲的id
var deleteMusicId = data.musicId;
//发送Ajax到后台进行删除操作
$.get("music/after/delete.do", { "musicId": deleteMusicId},
function(data){
if("success" == data){
location.reload();//重新加载当前页面
}
});
});
} else if(obj.event === 'edit'){
// layer.prompt({
// formType: 2
// ,value: data.email
// }, function(value, index){
// obj.update({
// email: value
// });
// layer.close(index);
// });
//layer.alert(JSON.stringify(data));
selectOne(data);
}
});
});
</script>

@ -54,7 +54,7 @@
<!-- 左侧导航区域可配合layui已有的垂直导航 -->
<ul class="layui-nav layui-nav-tree" lay-filter="test">
<li class="layui-nav-item layui-nav-itemed">
<a class="" href="javascript:;" onclick="openUrl('courseList.html')">课程中心</a>
<a class="" href="javascript:;" onclick="openUrl('courseList1.html')">课程中心</a>
</li>
<li class="layui-nav-item">
<a href="javascript:;">应用中心</a>

Loading…
Cancel
Save