Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
O
online-edu-backend
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
online-edu
online-edu-backend
Commits
6ccfd249
Commit
6ccfd249
authored
May 26, 2021
by
liuyang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
完成课程管理后台接口
parent
c3c43641
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
383 additions
and
123 deletions
+383
-123
CourseController.java
...om/qkdata/biz/management/controller/CourseController.java
+28
-21
AllowOrgCourseMapper.java
...om/qkdata/biz/management/mapper/AllowOrgCourseMapper.java
+1
-0
CourseAttachmentMapper.java
.../qkdata/biz/management/mapper/CourseAttachmentMapper.java
+1
-0
CourseMapper.java
...n/java/com/qkdata/biz/management/mapper/CourseMapper.java
+6
-0
CourseTagRelMapper.java
.../com/qkdata/biz/management/mapper/CourseTagRelMapper.java
+2
-0
CourseService.java
...java/com/qkdata/biz/management/service/CourseService.java
+219
-102
SaveCourseChaperModel.java
...a/com/qkdata/biz/management/vo/SaveCourseChaperModel.java
+11
-0
SaveCourseModel.java
...in/java/com/qkdata/biz/management/vo/SaveCourseModel.java
+88
-0
allow_org_courseMapper.xml
...n/resources/mappers/management/allow_org_courseMapper.xml
+3
-0
courseMapper.xml
src/main/resources/mappers/management/courseMapper.xml
+18
-0
course_attachmentMapper.xml
.../resources/mappers/management/course_attachmentMapper.xml
+3
-0
course_tag_relMapper.xml
...ain/resources/mappers/management/course_tag_relMapper.xml
+3
-0
No files found.
src/main/java/com/qkdata/biz/management/controller/CourseController.java
View file @
6ccfd249
...
@@ -54,31 +54,38 @@ public class CourseController {
...
@@ -54,31 +54,38 @@ public class CourseController {
return
Result
.
succeed
(
"ok"
);
return
Result
.
succeed
(
"ok"
);
}
}
@ApiOperation
(
"课程保存"
)
@ApiOperation
(
"添加课程(第一步保存)"
)
@PostMapping
(
"/save"
)
@PostMapping
(
"/saveStep1"
)
@RequiresRoles
(
value
=
{
BizConstants
.
ROLE_ADMIN
,
BizConstants
.
ROLE_OPERATOR
},
logical
=
Logical
.
OR
)
@SysLog
(
value
=
"添加课程"
,
includeParam
=
false
)
public
Result
<
Long
>
saveStep1
(
@RequestBody
CourseStep1SaveModel
model
){
Long
id
=
courseService
.
saveStep1
(
model
);
return
Result
.
succeed
(
id
);
}
@ApiOperation
(
"添加课程(第二步保存)"
)
@PostMapping
(
"/saveStep2"
)
@RequiresRoles
(
value
=
{
BizConstants
.
ROLE_ADMIN
,
BizConstants
.
ROLE_OPERATOR
},
logical
=
Logical
.
OR
)
@RequiresRoles
(
value
=
{
BizConstants
.
ROLE_ADMIN
,
BizConstants
.
ROLE_OPERATOR
},
logical
=
Logical
.
OR
)
public
Result
<
String
>
save
Step2
(
@RequestBody
CourseStep2SaveModel
chaperM
odel
){
public
Result
<
String
>
save
Course
(
@RequestBody
SaveCourseModel
m
odel
){
courseService
.
save
Step2
(
chaperM
odel
);
courseService
.
save
Course
(
m
odel
);
return
Result
.
succeed
(
"ok"
);
return
Result
.
succeed
(
"ok"
);
}
}
// @ApiOperation("添加课程(第一步保存)")
@ApiOperation
(
"添加课程(第二步中获取章节列表"
)
// @PostMapping("/saveStep1")
@GetMapping
(
"/chaperList/{courseId}"
)
// @RequiresRoles(value = {BizConstants.ROLE_ADMIN,BizConstants.ROLE_OPERATOR},logical = Logical.OR)
@RequiresRoles
(
value
=
{
BizConstants
.
ROLE_ADMIN
,
BizConstants
.
ROLE_OPERATOR
},
logical
=
Logical
.
OR
)
// @SysLog(value = "添加课程",includeParam = false)
public
Result
<
List
<
CourseChaperModel
>>
chaperList
(
@PathVariable
Long
courseId
){
// public Result<Long> saveStep1(@RequestBody CourseStep1SaveModel model){
List
<
CourseChaperModel
>
modelList
=
courseService
.
chaperList
(
courseId
);
// Long id = courseService.saveStep1(model);
return
Result
.
succeed
(
modelList
);
// return Result.succeed(id);
}
// }
// @ApiOperation("添加课程(第二步保存)")
// @PostMapping("/saveStep2")
// @RequiresRoles(value = {BizConstants.ROLE_ADMIN,BizConstants.ROLE_OPERATOR},logical = Logical.OR)
// public Result<String> saveStep2(@RequestBody CourseStep2SaveModel chaperModel){
// courseService.saveStep2(chaperModel);
// return Result.succeed("ok");
// }
// @ApiOperation("添加课程(第二步中获取章节列表")
// @GetMapping("/chaperList/{courseId}")
// @RequiresRoles(value = {BizConstants.ROLE_ADMIN,BizConstants.ROLE_OPERATOR},logical = Logical.OR)
// public Result<List<CourseChaperModel>> chaperList(@PathVariable Long courseId){
// List<CourseChaperModel> modelList = courseService.chaperList(courseId);
// return Result.succeed(modelList);
// }
@ApiOperation
(
"修改章节名称"
)
@ApiOperation
(
"修改章节名称"
)
@PostMapping
(
"/modifyChaperName"
)
@PostMapping
(
"/modifyChaperName"
)
@SysLog
(
"修改章节名称"
)
@SysLog
(
"修改章节名称"
)
...
...
src/main/java/com/qkdata/biz/management/mapper/AllowOrgCourseMapper.java
View file @
6ccfd249
...
@@ -15,4 +15,5 @@ import org.apache.ibatis.annotations.Mapper;
...
@@ -15,4 +15,5 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper
@Mapper
public
interface
AllowOrgCourseMapper
extends
BaseMapper
<
AllowOrgCoursePO
>
{
public
interface
AllowOrgCourseMapper
extends
BaseMapper
<
AllowOrgCoursePO
>
{
void
deleteByCourseId
(
Long
courseId
);
}
}
src/main/java/com/qkdata/biz/management/mapper/CourseAttachmentMapper.java
View file @
6ccfd249
...
@@ -15,4 +15,5 @@ import org.apache.ibatis.annotations.Mapper;
...
@@ -15,4 +15,5 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper
@Mapper
public
interface
CourseAttachmentMapper
extends
BaseMapper
<
CourseAttachmentPO
>
{
public
interface
CourseAttachmentMapper
extends
BaseMapper
<
CourseAttachmentPO
>
{
void
deleteByCourseId
(
Long
courseId
);
}
}
src/main/java/com/qkdata/biz/management/mapper/CourseMapper.java
View file @
6ccfd249
...
@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
...
@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import
com.qkdata.biz.enums.CourseStatusEnum
;
import
com.qkdata.biz.enums.CourseStatusEnum
;
import
com.qkdata.biz.management.entity.CoursePO
;
import
com.qkdata.biz.management.entity.CoursePO
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.qkdata.biz.management.vo.CourseAllowEnterpriseModel
;
import
com.qkdata.biz.management.vo.CourseAttachmentModel
;
import
com.qkdata.biz.management.vo.CourseListItemModel
;
import
com.qkdata.biz.management.vo.CourseListItemModel
;
import
com.qkdata.biz.management.vo.QueryCourseModel
;
import
com.qkdata.biz.management.vo.QueryCourseModel
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Mapper
;
...
@@ -25,4 +27,8 @@ public interface CourseMapper extends BaseMapper<CoursePO> {
...
@@ -25,4 +27,8 @@ public interface CourseMapper extends BaseMapper<CoursePO> {
List
<
CourseListItemModel
>
queryPageList
(
Page
page
,
@Param
(
"p"
)
QueryCourseModel
param
);
List
<
CourseListItemModel
>
queryPageList
(
Page
page
,
@Param
(
"p"
)
QueryCourseModel
param
);
void
updateStatusById
(
@Param
(
"id"
)
Long
id
,
@Param
(
"status"
)
CourseStatusEnum
status
);
void
updateStatusById
(
@Param
(
"id"
)
Long
id
,
@Param
(
"status"
)
CourseStatusEnum
status
);
List
<
CourseAttachmentModel
>
selectAttachmentListByCourseId
(
Long
id
);
List
<
CourseAllowEnterpriseModel
>
selectOrgListByCourseId
(
Long
id
);
}
}
src/main/java/com/qkdata/biz/management/mapper/CourseTagRelMapper.java
View file @
6ccfd249
...
@@ -19,4 +19,6 @@ import java.util.List;
...
@@ -19,4 +19,6 @@ import java.util.List;
public
interface
CourseTagRelMapper
extends
BaseMapper
<
CourseTagRelPO
>
{
public
interface
CourseTagRelMapper
extends
BaseMapper
<
CourseTagRelPO
>
{
List
<
CourseTagsModel
>
selectModelList
(
Long
courseId
);
List
<
CourseTagsModel
>
selectModelList
(
Long
courseId
);
void
deleteByCourseId
(
Long
courseId
);
}
}
src/main/java/com/qkdata/biz/management/service/CourseService.java
View file @
6ccfd249
...
@@ -4,7 +4,6 @@ import cn.hutool.core.collection.CollUtil;
...
@@ -4,7 +4,6 @@ import cn.hutool.core.collection.CollUtil;
import
com.aliyuncs.exceptions.ClientException
;
import
com.aliyuncs.exceptions.ClientException
;
import
com.aliyuncs.vod.model.v20170321.GetPlayInfoResponse
;
import
com.aliyuncs.vod.model.v20170321.GetPlayInfoResponse
;
import
com.aliyuncs.vod.model.v20170321.GetVideoInfoResponse
;
import
com.aliyuncs.vod.model.v20170321.GetVideoInfoResponse
;
import
com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
...
@@ -20,7 +19,6 @@ import com.qkdata.biz.management.vo.*;
...
@@ -20,7 +19,6 @@ import com.qkdata.biz.management.vo.*;
import
com.qkdata.common.base.enums.CodeEnum
;
import
com.qkdata.common.base.enums.CodeEnum
;
import
com.qkdata.common.base.exception.BusinessException
;
import
com.qkdata.common.base.exception.BusinessException
;
import
com.qkdata.common.base.model.PageResult
;
import
com.qkdata.common.base.model.PageResult
;
import
com.qkdata.common.base.model.Result
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
...
@@ -48,6 +46,8 @@ public class CourseService extends ServiceImpl<CourseMapper, CoursePO> {
...
@@ -48,6 +46,8 @@ public class CourseService extends ServiceImpl<CourseMapper, CoursePO> {
@Autowired
@Autowired
private
CourseTagRelMapper
tagRelMapper
;
private
CourseTagRelMapper
tagRelMapper
;
@Autowired
@Autowired
private
CourseAttachmentMapper
attachmentMapper
;
@Autowired
private
CourseTagService
tagService
;
private
CourseTagService
tagService
;
@Autowired
@Autowired
private
TeacherService
teacherService
;
private
TeacherService
teacherService
;
...
@@ -57,11 +57,11 @@ public class CourseService extends ServiceImpl<CourseMapper, CoursePO> {
...
@@ -57,11 +57,11 @@ public class CourseService extends ServiceImpl<CourseMapper, CoursePO> {
private
ResourceService
resourceService
;
private
ResourceService
resourceService
;
public
PageResult
<
CourseListItemModel
>
queryPageList
(
QueryCourseModel
param
)
{
public
PageResult
<
CourseListItemModel
>
queryPageList
(
QueryCourseModel
param
)
{
Page
page
=
new
Page
(
param
.
getPageIndex
(),
param
.
getPageSize
());
Page
page
=
new
Page
(
param
.
getPageIndex
(),
param
.
getPageSize
());
List
<
CourseListItemModel
>
list
=
baseMapper
.
queryPageList
(
page
,
param
);
List
<
CourseListItemModel
>
list
=
baseMapper
.
queryPageList
(
page
,
param
);
for
(
CourseListItemModel
course
:
list
){
for
(
CourseListItemModel
course
:
list
)
{
List
<
CourseTagPO
>
tagsList
=
tagService
.
findListByCourseId
(
course
.
getId
());
List
<
CourseTagPO
>
tagsList
=
tagService
.
findListByCourseId
(
course
.
getId
());
if
(
CollUtil
.
isNotEmpty
(
tagsList
)){
if
(
CollUtil
.
isNotEmpty
(
tagsList
))
{
List
<
String
>
tagNameList
=
tagsList
.
stream
().
map
(
CourseTagPO:
:
getName
).
collect
(
Collectors
.
toList
());
List
<
String
>
tagNameList
=
tagsList
.
stream
().
map
(
CourseTagPO:
:
getName
).
collect
(
Collectors
.
toList
());
course
.
setTags
(
tagNameList
);
course
.
setTags
(
tagNameList
);
}
}
...
@@ -69,102 +69,121 @@ public class CourseService extends ServiceImpl<CourseMapper, CoursePO> {
...
@@ -69,102 +69,121 @@ public class CourseService extends ServiceImpl<CourseMapper, CoursePO> {
return
PageResult
.<
CourseListItemModel
>
builder
().
code
(
CodeEnum
.
SUCCESS
.
getCode
()).
count
(
page
.
getTotal
()).
data
(
list
).
build
();
return
PageResult
.<
CourseListItemModel
>
builder
().
code
(
CodeEnum
.
SUCCESS
.
getCode
()).
count
(
page
.
getTotal
()).
data
(
list
).
build
();
}
}
@Transactional
// @Transactional
public
Long
saveStep1
(
CourseStep1SaveModel
model
)
{
// public Long saveStep1(CourseStep1SaveModel model) {
CoursePO
po
=
convertToPO
(
model
);
// CoursePO po = convertToPO(model);
if
(
po
.
getId
()
==
null
){
// if (po.getId() == null){
save
(
po
);
// save(po);
}
else
{
// }else {
updateById
(
po
);
// updateById(po);
}
// }
//
// if (CollUtil.isNotEmpty(model.getTagIds())){
// updateCourseTags(po.getId(),model.getTagIds());
// }
// if (model.getAllow() == CourseAllowEnum.SPECIFY){
// updateCourseAllowOrg(po.getId(),model.getAllowOrgIds());
// }
// return po.getId();
// }
if
(
CollUtil
.
isNotEmpty
(
model
.
getTagIds
())){
// private void updateCourseAllowOrg(Long id, List<Long> allowOrgIds) {
updateCourseTags
(
po
.
getId
(),
model
.
getTagIds
());
// //TODO
}
// }
if
(
model
.
getAllow
()
==
CourseAllowEnum
.
SPECIFY
){
//
updateCourseAllowOrg
(
po
.
getId
(),
model
.
getAllowOrgIds
());
// private void updateCourseTags(Long id, List<Long> tagIds) {
}
// //TODO
return
po
.
getId
();
// }
}
private
void
updateCourseAllowOrg
(
Long
id
,
List
<
Long
>
allowOrgIds
)
{
// private CoursePO convertToPO(CourseStep1SaveModel model) {
//TODO
// CoursePO po = new CoursePO();
}
// po.setId(model.getId());
// po.setName(model.getName());
// po.setType(model.getType());
// po.setIntroduce(model.getIntroduce());
// po.setDetail(model.getDetail());
// po.setLogoUrl(model.getLogoUrl());
// po.setStatus(CourseStatusEnum.UP);
// po.setTeacherId(model.getTeacherId());
// po.setChargeModel(model.getChargeModel());
// if (po.getChargeModel() == CourseChargeModelEnum.PAY) {
// po.setPrice(model.getPrice());
// po.setValidPeriod(model.getValidPeriod());
// po.setVipPrice(model.getVipPrice());
// }
// po.setModel(CourseModelEnum.VOD);
// po.setAllow(model.getAllow());
// po.setSeriesId(model.getSeriesId());
// return po;
// }
private
void
updateCourseTags
(
Long
id
,
List
<
Long
>
tagIds
)
{
// @Transactional
//TODO
// public void saveStep2(CourseStep2SaveModel model) {
}
// try {
// Long resourceId = saveToResource(model.getVideoId());
private
CoursePO
convertToPO
(
CourseStep1SaveModel
model
)
{
// CourseChapterPO po = new CourseChapterPO();
CoursePO
po
=
new
CoursePO
();
// po.setCourseId(model.getCourseId());
po
.
setId
(
model
.
getId
());
// po.setName(model.getChaperName());
po
.
setName
(
model
.
getName
());
// po.setResourceId(resourceId);
po
.
setType
(
model
.
getType
());
// po.setSortNo(model.getSortNo());
po
.
setIntroduce
(
model
.
getIntroduce
());
// chapterMapper.insert(po);
po
.
setDetail
(
model
.
getDetail
());
// } catch (ClientException e) {
po
.
setLogoUrl
(
model
.
getLogoUrl
());
// throw new BusinessException("获取视频信息错误");
po
.
setStatus
(
CourseStatusEnum
.
UP
);
// }
po
.
setTeacherId
(
model
.
getTeacherId
());
//
po
.
setChargeModel
(
model
.
getChargeModel
());
//
if
(
po
.
getChargeModel
()
==
CourseChargeModelEnum
.
PAY
){
// }
po
.
setPrice
(
model
.
getPrice
());
//
po
.
setValidPeriod
(
model
.
getValidPeriod
());
// private Long saveToResource(String videoId) throws ClientException {
po
.
setVipPrice
(
model
.
getVipPrice
());
// //根据视频ID,获取视频信息
}
// GetVideoInfoResponse videoInfoResponse = aliyunService.getVideoInfo(videoId);
po
.
setModel
(
CourseModelEnum
.
VOD
);
// Float duration = videoInfoResponse.getVideo().getDuration();
po
.
setAllow
(
model
.
getAllow
());
// Long size = videoInfoResponse.getVideo().getSize();
po
.
setSeriesId
(
model
.
getSeriesId
());
// String title = videoInfoResponse.getVideo().getTitle();
return
po
;
// ResourcePO po = resourceService.getByVideoId(videoId);
}
// if (po == null) {
// po = new ResourcePO();
@Transactional
// }
public
void
saveStep2
(
CourseStep2SaveModel
model
)
{
// po.setName(title);
try
{
// po.setSize(size);
Long
resourceId
=
saveToResource
(
model
.
getVideoId
());
// po.setVideoDuration(duration);
CourseChapterPO
po
=
new
CourseChapterPO
();
// resourceService.saveOrUpdate(po);
po
.
setCourseId
(
model
.
getCourseId
());
// return po.getId();
po
.
setName
(
model
.
getChaperName
());
// }
po
.
setResourceId
(
resourceId
);
po
.
setSortNo
(
model
.
getSortNo
());
chapterMapper
.
insert
(
po
);
}
catch
(
ClientException
e
)
{
throw
new
BusinessException
(
"获取视频信息错误"
);
}
}
private
Long
saveToResource
(
String
videoId
)
throws
ClientException
{
//根据视频ID,获取视频信息
GetVideoInfoResponse
videoInfoResponse
=
aliyunService
.
getVideoInfo
(
videoId
);
Float
duration
=
videoInfoResponse
.
getVideo
().
getDuration
();
Long
size
=
videoInfoResponse
.
getVideo
().
getSize
();
String
title
=
videoInfoResponse
.
getVideo
().
getTitle
();
ResourcePO
po
=
resourceService
.
getByVideoId
(
videoId
);
if
(
po
==
null
){
po
=
new
ResourcePO
();
}
po
.
setName
(
title
);
po
.
setSize
(
size
);
po
.
setVideoDuration
(
duration
);
resourceService
.
saveOrUpdate
(
po
);
return
po
.
getId
();
}
public
CourseDetailModel
getCourseDetail
(
Long
id
)
{
public
CourseDetailModel
getCourseDetail
(
Long
id
)
{
CoursePO
po
=
getById
(
id
);
CoursePO
po
=
getById
(
id
);
if
(
po
==
null
){
if
(
po
==
null
)
{
throw
new
BusinessException
(
"请求错误,课程不存在"
);
throw
new
BusinessException
(
"请求错误,课程不存在"
);
}
}
CourseDetailModel
model
=
new
CourseDetailModel
();
CourseDetailModel
model
=
new
CourseDetailModel
();
BeanUtils
.
copyProperties
(
po
,
model
);
BeanUtils
.
copyProperties
(
po
,
model
);
addTeacherInfo
(
model
);
addSeriesInfo
(
model
);
addSeriesInfo
(
model
);
addTeacherInfo
(
model
);
addTags
(
model
);
addTags
(
model
);
//TODO
addChaperInfo
(
model
);
addAttachmentInfo
(
model
);
addOrgInfo
(
model
);
return
model
;
return
model
;
}
}
private
void
addOrgInfo
(
CourseDetailModel
model
)
{
if
(
model
.
getAllow
()
==
CourseAllowEnum
.
SPECIFY
){
List
<
CourseAllowEnterpriseModel
>
allowOrgList
=
baseMapper
.
selectOrgListByCourseId
(
model
.
getId
());
model
.
setAllowOrgList
(
allowOrgList
);
}
}
private
void
addAttachmentInfo
(
CourseDetailModel
model
)
{
List
<
CourseAttachmentModel
>
attachmentModelList
=
baseMapper
.
selectAttachmentListByCourseId
(
model
.
getId
());
model
.
setAttachmentList
(
attachmentModelList
);
}
private
void
addChaperInfo
(
CourseDetailModel
model
)
{
List
<
CourseChaperModel
>
chaperList
=
chaperList
(
model
.
getId
());
model
.
setChaperList
(
chaperList
);
}
private
void
addTags
(
CourseDetailModel
model
)
{
private
void
addTags
(
CourseDetailModel
model
)
{
List
<
CourseTagsModel
>
tags
=
tagRelMapper
.
selectModelList
(
model
.
getId
());
List
<
CourseTagsModel
>
tags
=
tagRelMapper
.
selectModelList
(
model
.
getId
());
model
.
setTagList
(
tags
);
model
.
setTagList
(
tags
);
...
@@ -172,21 +191,21 @@ public class CourseService extends ServiceImpl<CourseMapper, CoursePO> {
...
@@ -172,21 +191,21 @@ public class CourseService extends ServiceImpl<CourseMapper, CoursePO> {
private
void
addSeriesInfo
(
CourseDetailModel
model
)
{
private
void
addSeriesInfo
(
CourseDetailModel
model
)
{
CourseSeriesPO
po
=
seriesMapper
.
selectById
(
model
.
getSeriesId
());
CourseSeriesPO
po
=
seriesMapper
.
selectById
(
model
.
getSeriesId
());
if
(
po
!=
null
){
if
(
po
!=
null
)
{
model
.
setSeriesName
(
po
.
getName
());
model
.
setSeriesName
(
po
.
getName
());
}
}
}
}
private
void
addTeacherInfo
(
CourseDetailModel
model
)
{
private
void
addTeacherInfo
(
CourseDetailModel
model
)
{
TeacherPO
teacherPO
=
teacherService
.
getById
(
model
.
getTeacherId
());
TeacherPO
teacherPO
=
teacherService
.
getById
(
model
.
getTeacherId
());
if
(
teacherPO
!=
null
){
if
(
teacherPO
!=
null
)
{
model
.
setTeacherName
(
teacherPO
.
getName
());
model
.
setTeacherName
(
teacherPO
.
getName
());
}
}
}
}
public
void
modifyChaperName
(
ModifyChaperNameModel
model
)
{
public
void
modifyChaperName
(
ModifyChaperNameModel
model
)
{
CourseChapterPO
po
=
chapterMapper
.
selectById
(
model
.
getChaperId
());
CourseChapterPO
po
=
chapterMapper
.
selectById
(
model
.
getChaperId
());
if
(
po
==
null
){
if
(
po
==
null
)
{
throw
new
BusinessException
(
"请求错误,章节不存在"
);
throw
new
BusinessException
(
"请求错误,章节不存在"
);
}
}
po
.
setName
(
model
.
getChaperName
());
po
.
setName
(
model
.
getChaperName
());
...
@@ -196,7 +215,7 @@ public class CourseService extends ServiceImpl<CourseMapper, CoursePO> {
...
@@ -196,7 +215,7 @@ public class CourseService extends ServiceImpl<CourseMapper, CoursePO> {
@Transactional
@Transactional
public
void
delChaper
(
Long
chaperId
)
{
public
void
delChaper
(
Long
chaperId
)
{
CourseChapterPO
po
=
chapterMapper
.
selectById
(
chaperId
);
CourseChapterPO
po
=
chapterMapper
.
selectById
(
chaperId
);
if
(
po
!=
null
){
if
(
po
!=
null
)
{
chapterMapper
.
deleteById
(
chaperId
);
chapterMapper
.
deleteById
(
chaperId
);
//删除资源
//删除资源
resourceService
.
removeById
(
po
.
getResourceId
());
resourceService
.
removeById
(
po
.
getResourceId
());
...
@@ -206,21 +225,21 @@ public class CourseService extends ServiceImpl<CourseMapper, CoursePO> {
...
@@ -206,21 +225,21 @@ public class CourseService extends ServiceImpl<CourseMapper, CoursePO> {
}
}
public
void
modifyStatus
(
ModifyCourseStatusModel
model
)
{
public
void
modifyStatus
(
ModifyCourseStatusModel
model
)
{
baseMapper
.
updateStatusById
(
model
.
getId
(),
model
.
getStatus
());
baseMapper
.
updateStatusById
(
model
.
getId
(),
model
.
getStatus
());
}
}
public
List
<
CourseChaperModel
>
chaperList
(
Long
courseId
)
{
public
List
<
CourseChaperModel
>
chaperList
(
Long
courseId
)
{
List
<
CourseChaperModel
>
list
=
Lists
.
newArrayList
();
List
<
CourseChaperModel
>
list
=
Lists
.
newArrayList
();
List
<
CourseChapterPO
>
poList
=
chapterMapper
.
selectList
(
Wrappers
.<
CourseChapterPO
>
lambdaQuery
().
eq
(
CourseChapterPO:
:
getCourseId
,
courseId
).
orderByAsc
(
CourseChapterPO:
:
getSortNo
));
List
<
CourseChapterPO
>
poList
=
chapterMapper
.
selectList
(
Wrappers
.<
CourseChapterPO
>
lambdaQuery
().
eq
(
CourseChapterPO:
:
getCourseId
,
courseId
).
orderByAsc
(
CourseChapterPO:
:
getSortNo
));
if
(
CollUtil
.
isNotEmpty
(
poList
)){
if
(
CollUtil
.
isNotEmpty
(
poList
))
{
for
(
CourseChapterPO
po
:
poList
){
for
(
CourseChapterPO
po
:
poList
)
{
CourseChaperModel
model
=
new
CourseChaperModel
();
CourseChaperModel
model
=
new
CourseChaperModel
();
model
.
setId
(
po
.
getId
());
model
.
setId
(
po
.
getId
());
model
.
setName
(
po
.
getName
());
model
.
setName
(
po
.
getName
());
model
.
setCourseId
(
po
.
getCourseId
());
model
.
setCourseId
(
po
.
getCourseId
());
model
.
setSortNo
(
po
.
getSortNo
());
model
.
setSortNo
(
po
.
getSortNo
());
Long
resourceId
=
po
.
getResourceId
();
Long
resourceId
=
po
.
getResourceId
();
setVideoInfo
(
resourceId
,
model
);
setVideoInfo
(
resourceId
,
model
);
list
.
add
(
model
);
list
.
add
(
model
);
}
}
}
}
...
@@ -229,30 +248,127 @@ public class CourseService extends ServiceImpl<CourseMapper, CoursePO> {
...
@@ -229,30 +248,127 @@ public class CourseService extends ServiceImpl<CourseMapper, CoursePO> {
private
void
setVideoInfo
(
Long
resourceId
,
CourseChaperModel
model
)
{
private
void
setVideoInfo
(
Long
resourceId
,
CourseChaperModel
model
)
{
ResourcePO
resourcePO
=
resourceService
.
getById
(
resourceId
);
ResourcePO
resourcePO
=
resourceService
.
getById
(
resourceId
);
if
(
resourcePO
!=
null
){
if
(
resourcePO
!=
null
)
{
String
videoId
=
resourcePO
.
getVideoId
();
String
videoId
=
resourcePO
.
getVideoId
();
try
{
try
{
GetPlayInfoResponse
response
=
aliyunService
.
getVideoPlayInfo
(
videoId
);
GetPlayInfoResponse
response
=
aliyunService
.
getVideoPlayInfo
(
videoId
);
List
<
GetPlayInfoResponse
.
PlayInfo
>
playInfoList
=
response
.
getPlayInfoList
();
List
<
GetPlayInfoResponse
.
PlayInfo
>
playInfoList
=
response
.
getPlayInfoList
();
if
(
CollUtil
.
isNotEmpty
(
playInfoList
)){
if
(
CollUtil
.
isNotEmpty
(
playInfoList
))
{
GetPlayInfoResponse
.
PlayInfo
playInfo
=
playInfoList
.
get
(
0
);
GetPlayInfoResponse
.
PlayInfo
playInfo
=
playInfoList
.
get
(
0
);
model
.
setVideoUrl
(
playInfo
.
getPlayURL
());
model
.
setVideoUrl
(
playInfo
.
getPlayURL
());
GetPlayInfoResponse
.
VideoBase
videoBase
=
response
.
getVideoBase
();
GetPlayInfoResponse
.
VideoBase
videoBase
=
response
.
getVideoBase
();
model
.
setSnapshotUrl
(
videoBase
.
getCoverURL
());
model
.
setSnapshotUrl
(
videoBase
.
getCoverURL
());
}
}
}
catch
(
ClientException
e
)
{
}
catch
(
ClientException
e
)
{
log
.
error
(
e
.
getMessage
(),
e
);
log
.
error
(
e
.
getMessage
(),
e
);
}
}
}
}
}
}
public
PageResult
<
CourseSeriesPO
>
querySeriesPageList
(
QueryCourseSeriesModel
model
)
{
public
PageResult
<
CourseSeriesPO
>
querySeriesPageList
(
QueryCourseSeriesModel
model
)
{
Page
page
=
new
Page
(
model
.
getPageIndex
(),
model
.
getPageIndex
());
Page
page
=
new
Page
(
model
.
getPageIndex
(),
model
.
getPageIndex
());
List
<
CourseSeriesPO
>
list
=
seriesMapper
.
queryPageList
(
page
,
model
);
List
<
CourseSeriesPO
>
list
=
seriesMapper
.
queryPageList
(
page
,
model
);
return
PageResult
.<
CourseSeriesPO
>
builder
().
code
(
CodeEnum
.
SUCCESS
.
getCode
()).
count
(
page
.
getTotal
()).
data
(
list
).
build
();
return
PageResult
.<
CourseSeriesPO
>
builder
().
code
(
CodeEnum
.
SUCCESS
.
getCode
()).
count
(
page
.
getTotal
()).
data
(
list
).
build
();
}
}
public
void
saveSeries
(
CourseSeriesPO
po
)
{
public
void
saveSeries
(
CourseSeriesPO
po
)
{
seriesMapper
.
insert
(
po
);
seriesMapper
.
insert
(
po
);
}
}
@Transactional
public
void
saveCourse
(
SaveCourseModel
model
)
{
Long
id
=
saveOrUpdateCourseBaseInfo
(
model
);
saveCourseChaper
(
id
,
model
.
getChaperList
());
saveCourseAttachment
(
id
,
model
.
getAttachmenIds
());
saveOrUpdateCourseTags
(
id
,
model
.
getTagIds
());
if
(
model
.
getAllow
()
==
CourseAllowEnum
.
SPECIFY
){
saveOrUpdateOrg
(
id
,
model
.
getAllowOrgIds
());
}
}
private
void
saveOrUpdateOrg
(
Long
courseId
,
List
<
Long
>
allowOrgIds
)
{
if
(
CollUtil
.
isNotEmpty
(
allowOrgIds
)){
allowOrgCourseMapper
.
deleteByCourseId
(
courseId
);
for
(
Long
orgId
:
allowOrgIds
){
AllowOrgCoursePO
po
=
new
AllowOrgCoursePO
();
po
.
setCourseId
(
courseId
);
po
.
setOrgId
(
orgId
);
allowOrgCourseMapper
.
insert
(
po
);
}
}
}
private
void
saveOrUpdateCourseTags
(
Long
courseId
,
List
<
Long
>
tagIds
)
{
if
(
CollUtil
.
isNotEmpty
(
tagIds
)){
tagRelMapper
.
deleteByCourseId
(
courseId
);
for
(
Long
tagId
:
tagIds
){
CourseTagRelPO
po
=
new
CourseTagRelPO
();
po
.
setCourseId
(
courseId
);
po
.
setTagId
(
tagId
);
tagRelMapper
.
insert
(
po
);
}
}
}
private
void
saveCourseAttachment
(
Long
courseId
,
List
<
Long
>
attachmenIds
)
{
if
(
CollUtil
.
isNotEmpty
(
attachmenIds
)){
attachmentMapper
.
deleteByCourseId
(
courseId
);
for
(
Long
attachmentId
:
attachmenIds
){
CourseAttachmentPO
po
=
new
CourseAttachmentPO
();
po
.
setCourseId
(
courseId
);
po
.
setResourceId
(
attachmentId
);
attachmentMapper
.
insert
(
po
);
}
}
}
private
void
saveCourseChaper
(
Long
courseId
,
List
<
SaveCourseChaperModel
>
chaperList
)
{
if
(
CollUtil
.
isNotEmpty
(
chaperList
)){
for
(
SaveCourseChaperModel
chaperModel
:
chaperList
){
Long
chaperId
=
chaperModel
.
getChaperId
();
if
(
chaperId
==
null
){
//只做章节新增保存
ResourcePO
resourcePO
=
new
ResourcePO
();
resourcePO
.
setName
(
chaperModel
.
getChaperName
());
resourcePO
.
setVideoId
(
chaperModel
.
getVideoId
());
try
{
GetVideoInfoResponse
videoInfoResponse
=
aliyunService
.
getVideoInfo
(
chaperModel
.
getVideoId
());
resourcePO
.
setSize
(
videoInfoResponse
.
getVideo
().
getSize
());
resourcePO
.
setVideoDuration
(
videoInfoResponse
.
getVideo
().
getDuration
());
}
catch
(
ClientException
e
)
{
log
.
error
(
e
.
getMessage
(),
e
);
}
resourceService
.
save
(
resourcePO
);
CourseChapterPO
chapterPO
=
new
CourseChapterPO
();
chapterPO
.
setCourseId
(
courseId
);
chapterPO
.
setSortNo
(
chaperModel
.
getSortNo
());
chapterPO
.
setName
(
chaperModel
.
getChaperName
());
chapterPO
.
setResourceId
(
resourcePO
.
getId
());
chapterMapper
.
insert
(
chapterPO
);
}
}
}
}
private
Long
saveOrUpdateCourseBaseInfo
(
SaveCourseModel
model
)
{
CoursePO
po
=
new
CoursePO
();
po
.
setId
(
model
.
getId
());
po
.
setName
(
model
.
getName
());
po
.
setType
(
model
.
getType
());
po
.
setIntroduce
(
model
.
getIntroduce
());
po
.
setDetail
(
model
.
getDetail
());
po
.
setLogoUrl
(
model
.
getLogoUrl
());
po
.
setStatus
(
CourseStatusEnum
.
UP
);
po
.
setTeacherId
(
model
.
getTeacherId
());
po
.
setChargeModel
(
model
.
getChargeModel
());
if
(
po
.
getChargeModel
()
==
CourseChargeModelEnum
.
PAY
)
{
po
.
setPrice
(
model
.
getPrice
());
po
.
setValidPeriod
(
model
.
getValidPeriod
());
po
.
setVipPrice
(
model
.
getVipPrice
());
}
po
.
setModel
(
CourseModelEnum
.
VOD
);
po
.
setSeriesId
(
model
.
getSeriesId
());
return
po
.
getId
();
}
}
}
\ No newline at end of file
src/main/java/com/qkdata/biz/management/vo/SaveCourseChaperModel.java
0 → 100644
View file @
6ccfd249
package
com
.
qkdata
.
biz
.
management
.
vo
;
import
lombok.Data
;
@Data
public
class
SaveCourseChaperModel
{
private
Long
chaperId
;
private
String
chaperName
;
private
Integer
sortNo
=
0
;
private
String
videoId
;
}
src/main/java/com/qkdata/biz/management/vo/SaveCourseModel.java
0 → 100644
View file @
6ccfd249
package
com
.
qkdata
.
biz
.
management
.
vo
;
import
com.qkdata.biz.enums.CourseAllowEnum
;
import
com.qkdata.biz.enums.CourseChargeModelEnum
;
import
com.qkdata.biz.enums.CourseTypeEnum
;
import
lombok.Data
;
import
java.math.BigDecimal
;
import
java.util.List
;
@Data
public
class
SaveCourseModel
{
private
Long
id
;
/**
* 课程名称
*/
private
String
name
;
/**
* 课程类型(单集、系列)
*/
private
CourseTypeEnum
type
;
/**
* 课程简介
*/
private
String
introduce
;
/**
* 课程介绍
*/
private
String
detail
;
/**
* 课程封面url
*/
private
String
logoUrl
;
/**
* 讲师ID
*/
private
Long
teacherId
;
/**
* 讲师名称
*/
private
String
teacherName
;
/**
* 收费模式(免费、会员免费、付费点播)
*/
private
CourseChargeModelEnum
chargeModel
;
/**
* 付费点播普通用户价
*/
private
BigDecimal
price
;
/**
* 付费点播会员价
*/
private
BigDecimal
vipPrice
;
/**
* 有效时间(小时)
*/
private
Integer
validPeriod
;
/**
* 系列ID
*/
private
Long
seriesId
;
/**
* 系列名称
*/
private
String
seriesName
;
/**
* 可见范围(全部、指定企业)
*/
private
CourseAllowEnum
allow
;
/**
* 指定企业的列表
*/
private
List
<
Long
>
allowOrgIds
;
/**
* 标签列表
*/
private
List
<
Long
>
tagIds
;
/**
* 课程章节列表
*/
private
List
<
SaveCourseChaperModel
>
chaperList
;
/**
* 课程附件列表
*/
private
List
<
Long
>
attachmenIds
;
}
src/main/resources/mappers/management/allow_org_courseMapper.xml
View file @
6ccfd249
...
@@ -2,4 +2,7 @@
...
@@ -2,4 +2,7 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.qkdata.biz.management.mapper.AllowOrgCourseMapper"
>
<mapper
namespace=
"com.qkdata.biz.management.mapper.AllowOrgCourseMapper"
>
<delete
id=
"deleteByCourseId"
>
delete from allow_org_course where course_id = #{courseId}
</delete>
</mapper>
</mapper>
src/main/resources/mappers/management/courseMapper.xml
View file @
6ccfd249
...
@@ -31,4 +31,22 @@
...
@@ -31,4 +31,22 @@
ORDER BY c.create_time DESC
ORDER BY c.create_time DESC
</select>
</select>
<select
id=
"selectAttachmentListByCourseId"
resultType=
"com.qkdata.biz.management.vo.CourseAttachmentModel"
>
SELECT a.course_id,
r.id resource_id,
r.`name` resource_name,
r.url resource_url
from course_attachment a
INNER JOIN resource r on a.resource_id = r.id
WHERE a.course_id = #{id}
</select>
<select
id=
"selectOrgListByCourseId"
resultType=
"com.qkdata.biz.management.vo.CourseAllowEnterpriseModel"
>
SELECT r.course_id,
o.`name` orgName,
o.id orgId
from allow_org_course r
INNER JOIN organization o on r.org_id = o.id
WHERE r.course_id = #{id}
</select>
</mapper>
</mapper>
src/main/resources/mappers/management/course_attachmentMapper.xml
View file @
6ccfd249
...
@@ -2,4 +2,7 @@
...
@@ -2,4 +2,7 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.qkdata.biz.management.mapper.CourseAttachmentMapper"
>
<mapper
namespace=
"com.qkdata.biz.management.mapper.CourseAttachmentMapper"
>
<delete
id=
"deleteByCourseId"
>
delete from course_attachment where course_id = #{courseId}
</delete>
</mapper>
</mapper>
src/main/resources/mappers/management/course_tag_relMapper.xml
View file @
6ccfd249
<?xml version="1.0" encoding="UTF-8"?>
<?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">
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.qkdata.biz.management.mapper.CourseTagRelMapper"
>
<mapper
namespace=
"com.qkdata.biz.management.mapper.CourseTagRelMapper"
>
<delete
id=
"deleteByCourseId"
>
delete from course_tag_rel where course_id = #{courseId}
</delete>
<select
id=
"selectModelList"
resultType=
"com.qkdata.biz.management.vo.CourseTagsModel"
>
<select
id=
"selectModelList"
resultType=
"com.qkdata.biz.management.vo.CourseTagsModel"
>
SELECT r.course_id,r.tag_id,t.`name` tag_name
SELECT r.course_id,r.tag_id,t.`name` tag_name
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment