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
d3d9ff85
Commit
d3d9ff85
authored
May 19, 2021
by
liuyang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加课程管理 暂存
parent
7292e6fd
Hide whitespace changes
Inline
Side-by-side
Showing
24 changed files
with
582 additions
and
0 deletions
+582
-0
CourseChargeModelEnum.java
...main/java/com/qkdata/biz/enums/CourseChargeModelEnum.java
+16
-0
CourseStatusEnum.java
src/main/java/com/qkdata/biz/enums/CourseStatusEnum.java
+12
-0
CourseController.java
...om/qkdata/biz/management/controller/CourseController.java
+39
-0
AllowOrgCoursePO.java
...va/com/qkdata/biz/management/entity/AllowOrgCoursePO.java
+34
-0
CourseChapterPO.java
...ava/com/qkdata/biz/management/entity/CourseChapterPO.java
+39
-0
CoursePO.java
src/main/java/com/qkdata/biz/management/entity/CoursePO.java
+97
-0
CourseSeriesPO.java
...java/com/qkdata/biz/management/entity/CourseSeriesPO.java
+29
-0
CourseTagRelPO.java
...java/com/qkdata/biz/management/entity/CourseTagRelPO.java
+34
-0
AllowOrgCourseMapper.java
...om/qkdata/biz/management/mapper/AllowOrgCourseMapper.java
+18
-0
CourseChapterMapper.java
...com/qkdata/biz/management/mapper/CourseChapterMapper.java
+18
-0
CourseMapper.java
...n/java/com/qkdata/biz/management/mapper/CourseMapper.java
+25
-0
CourseSeriesMapper.java
.../com/qkdata/biz/management/mapper/CourseSeriesMapper.java
+18
-0
CourseTagMapper.java
...ava/com/qkdata/biz/management/mapper/CourseTagMapper.java
+2
-0
CourseTagRelMapper.java
.../com/qkdata/biz/management/mapper/CourseTagRelMapper.java
+18
-0
CourseService.java
...java/com/qkdata/biz/management/service/CourseService.java
+53
-0
CourseTagService.java
...a/com/qkdata/biz/management/service/CourseTagService.java
+5
-0
CourseListItemModel.java
...ava/com/qkdata/biz/management/vo/CourseListItemModel.java
+40
-0
QueryCourseModel.java
...n/java/com/qkdata/biz/management/vo/QueryCourseModel.java
+28
-0
allow_org_courseMapper.xml
...n/resources/mappers/management/allow_org_courseMapper.xml
+5
-0
courseMapper.xml
src/main/resources/mappers/management/courseMapper.xml
+31
-0
course_chapterMapper.xml
...ain/resources/mappers/management/course_chapterMapper.xml
+5
-0
course_seriesMapper.xml
...main/resources/mappers/management/course_seriesMapper.xml
+5
-0
course_tagMapper.xml
src/main/resources/mappers/management/course_tagMapper.xml
+6
-0
course_tag_relMapper.xml
...ain/resources/mappers/management/course_tag_relMapper.xml
+5
-0
No files found.
src/main/java/com/qkdata/biz/enums/CourseChargeModelEnum.java
0 → 100644
View file @
d3d9ff85
package
com
.
qkdata
.
biz
.
enums
;
public
enum
CourseChargeModelEnum
{
/**
* 免费
*/
FREE
,
/**
* 会员免费
*/
VIP_FREE
,
/**
* 付费点播
*/
PAY
}
src/main/java/com/qkdata/biz/enums/CourseStatusEnum.java
0 → 100644
View file @
d3d9ff85
package
com
.
qkdata
.
biz
.
enums
;
public
enum
CourseStatusEnum
{
/**
* 上架
*/
UP
,
/**
* 下架
*/
DOWN
}
src/main/java/com/qkdata/biz/management/controller/CourseController.java
0 → 100644
View file @
d3d9ff85
package
com
.
qkdata
.
biz
.
management
.
controller
;
import
com.qkdata.biz.management.service.CourseService
;
import
com.qkdata.biz.management.vo.CourseListItemModel
;
import
com.qkdata.biz.management.vo.QueryCourseModel
;
import
com.qkdata.common.base.model.PageResult
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* <p>
* 课程 前端控制器
* </p>
*
* @author liuyang
* @since 2021-05-19
*/
@Api
(
tags
=
"课程管理"
)
@RestController
@RequestMapping
(
"/api/mgr/course"
)
public
class
CourseController
{
@Autowired
private
CourseService
courseService
;
@ApiOperation
(
"课程查询"
)
@PostMapping
(
"/list"
)
public
PageResult
<
CourseListItemModel
>
list
(
@RequestBody
QueryCourseModel
param
){
return
courseService
.
queryPageList
(
param
);
}
}
src/main/java/com/qkdata/biz/management/entity/AllowOrgCoursePO.java
0 → 100644
View file @
d3d9ff85
package
com
.
qkdata
.
biz
.
management
.
entity
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.qkdata.common.base.entity.BasePO
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
/**
* <p>
* 授权企业可见的课程
* </p>
*
* @author liuyang
* @since 2021-05-19
*/
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
@TableName
(
"allow_org_course"
)
public
class
AllowOrgCoursePO
extends
BasePO
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 课程ID
*/
private
Long
courseId
;
/**
* 企业ID
*/
private
Long
orgId
;
}
src/main/java/com/qkdata/biz/management/entity/CourseChapterPO.java
0 → 100644
View file @
d3d9ff85
package
com
.
qkdata
.
biz
.
management
.
entity
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.qkdata.common.base.entity.BasePO
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
/**
* <p>
* 课程章节
* </p>
*
* @author liuyang
* @since 2021-05-19
*/
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
@TableName
(
"course_chapter"
)
public
class
CourseChapterPO
extends
BasePO
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 课程ID
*/
private
Long
courseId
;
/**
* 视频ID
*/
private
Long
resourceId
;
/**
* 章节标题
*/
private
String
name
;
}
src/main/java/com/qkdata/biz/management/entity/CoursePO.java
0 → 100644
View file @
d3d9ff85
package
com
.
qkdata
.
biz
.
management
.
entity
;
import
java.math.BigDecimal
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.qkdata.biz.enums.CourseChargeModelEnum
;
import
com.qkdata.biz.enums.CourseStatusEnum
;
import
com.qkdata.common.base.entity.BasePO
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
/**
* <p>
* 课程
* </p>
*
* @author liuyang
* @since 2021-05-19
*/
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
@TableName
(
"course"
)
public
class
CoursePO
extends
BasePO
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 课程类型(单集、系列)
*/
private
String
type
;
/**
* 课程名称
*/
private
String
name
;
/**
* 课程简介
*/
private
String
introduce
;
/**
* 课程封面url
*/
private
String
logoUrl
;
/**
* 状态(上架、下架)
*/
private
CourseStatusEnum
status
;
/**
* 讲师ID
*/
private
Long
teacherId
;
/**
* 收费模式(免费、会员免费、付费点播)
*/
private
CourseChargeModelEnum
chargeModel
;
/**
* 付费点播普通用户价
*/
private
BigDecimal
price
;
/**
* 付费点播会员价
*/
private
BigDecimal
vipPrice
;
/**
* 有效时间(小时)
*/
private
Integer
validPeriod
;
/**
* 课程形态(点播、直播、一对一)
*/
private
String
model
;
/**
* 系列ID
*/
private
Long
seriesId
;
/**
* 可见范围(全部、指定企业)
*/
private
String
allow
;
/**
* 删除标识
*/
private
Boolean
isDel
;
}
src/main/java/com/qkdata/biz/management/entity/CourseSeriesPO.java
0 → 100644
View file @
d3d9ff85
package
com
.
qkdata
.
biz
.
management
.
entity
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.qkdata.common.base.entity.BasePO
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
/**
* <p>
* 课程系列
* </p>
*
* @author liuyang
* @since 2021-05-19
*/
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
@TableName
(
"course_series"
)
public
class
CourseSeriesPO
extends
BasePO
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 系列名称
*/
private
String
name
;
}
src/main/java/com/qkdata/biz/management/entity/CourseTagRelPO.java
0 → 100644
View file @
d3d9ff85
package
com
.
qkdata
.
biz
.
management
.
entity
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.qkdata.common.base.entity.BasePO
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
/**
* <p>
* 课程与标签关联表
* </p>
*
* @author liuyang
* @since 2021-05-19
*/
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
@TableName
(
"course_tag_rel"
)
public
class
CourseTagRelPO
extends
BasePO
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 课程ID
*/
private
Long
courseId
;
/**
* 标签ID
*/
private
Long
tagId
;
}
src/main/java/com/qkdata/biz/management/mapper/AllowOrgCourseMapper.java
0 → 100644
View file @
d3d9ff85
package
com
.
qkdata
.
biz
.
management
.
mapper
;
import
com.qkdata.biz.management.entity.AllowOrgCoursePO
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
org.apache.ibatis.annotations.Mapper
;
/**
* <p>
* 授权企业可见的课程 Mapper 接口
* </p>
*
* @author liuyang
* @since 2021-05-19
*/
@Mapper
public
interface
AllowOrgCourseMapper
extends
BaseMapper
<
AllowOrgCoursePO
>
{
}
src/main/java/com/qkdata/biz/management/mapper/CourseChapterMapper.java
0 → 100644
View file @
d3d9ff85
package
com
.
qkdata
.
biz
.
management
.
mapper
;
import
com.qkdata.biz.management.entity.CourseChapterPO
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
org.apache.ibatis.annotations.Mapper
;
/**
* <p>
* 课程章节 Mapper 接口
* </p>
*
* @author liuyang
* @since 2021-05-19
*/
@Mapper
public
interface
CourseChapterMapper
extends
BaseMapper
<
CourseChapterPO
>
{
}
src/main/java/com/qkdata/biz/management/mapper/CourseMapper.java
0 → 100644
View file @
d3d9ff85
package
com
.
qkdata
.
biz
.
management
.
mapper
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.qkdata.biz.management.entity.CoursePO
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.qkdata.biz.management.vo.CourseListItemModel
;
import
com.qkdata.biz.management.vo.QueryCourseModel
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Param
;
import
java.util.List
;
/**
* <p>
* 课程 Mapper 接口
* </p>
*
* @author liuyang
* @since 2021-05-19
*/
@Mapper
public
interface
CourseMapper
extends
BaseMapper
<
CoursePO
>
{
List
<
CourseListItemModel
>
queryPageList
(
Page
page
,
@Param
(
"p"
)
QueryCourseModel
param
);
}
src/main/java/com/qkdata/biz/management/mapper/CourseSeriesMapper.java
0 → 100644
View file @
d3d9ff85
package
com
.
qkdata
.
biz
.
management
.
mapper
;
import
com.qkdata.biz.management.entity.CourseSeriesPO
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
org.apache.ibatis.annotations.Mapper
;
/**
* <p>
* 课程系列 Mapper 接口
* </p>
*
* @author liuyang
* @since 2021-05-19
*/
@Mapper
public
interface
CourseSeriesMapper
extends
BaseMapper
<
CourseSeriesPO
>
{
}
src/main/java/com/qkdata/biz/management/mapper/CourseTagMapper.java
View file @
d3d9ff85
...
...
@@ -21,4 +21,6 @@ import java.util.List;
public
interface
CourseTagMapper
extends
BaseMapper
<
CourseTagPO
>
{
List
<
CourseTagPO
>
queryPageList
(
Page
page
,
@Param
(
"p"
)
QueryCourseTagModel
param
);
List
<
CourseTagPO
>
selectListByCourseId
(
Long
courseId
);
}
src/main/java/com/qkdata/biz/management/mapper/CourseTagRelMapper.java
0 → 100644
View file @
d3d9ff85
package
com
.
qkdata
.
biz
.
management
.
mapper
;
import
com.qkdata.biz.management.entity.CourseTagRelPO
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
org.apache.ibatis.annotations.Mapper
;
/**
* <p>
* 课程与标签关联表 Mapper 接口
* </p>
*
* @author liuyang
* @since 2021-05-19
*/
@Mapper
public
interface
CourseTagRelMapper
extends
BaseMapper
<
CourseTagRelPO
>
{
}
src/main/java/com/qkdata/biz/management/service/CourseService.java
0 → 100644
View file @
d3d9ff85
package
com
.
qkdata
.
biz
.
management
.
service
;
import
cn.hutool.core.collection.CollUtil
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.qkdata.biz.management.entity.CoursePO
;
import
com.qkdata.biz.management.entity.CourseTagPO
;
import
com.qkdata.biz.management.mapper.*
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.qkdata.biz.management.vo.CourseListItemModel
;
import
com.qkdata.biz.management.vo.QueryCourseModel
;
import
com.qkdata.common.base.enums.CodeEnum
;
import
com.qkdata.common.base.model.PageResult
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
import
java.util.stream.Collectors
;
/**
* <p>
* 课程管理 服务类
* </p>
*
* @author liuyang
* @since 2021-05-19
*/
@Service
public
class
CourseService
extends
ServiceImpl
<
CourseMapper
,
CoursePO
>
{
@Autowired
private
AllowOrgCourseMapper
allowOrgCourseMapper
;
@Autowired
private
CourseChapterMapper
chapterMapper
;
@Autowired
private
CourseSeriesMapper
seriesMapper
;
@Autowired
private
CourseTagRelMapper
tagRelMapper
;
@Autowired
private
CourseTagService
tagService
;
public
PageResult
<
CourseListItemModel
>
queryPageList
(
QueryCourseModel
param
)
{
Page
page
=
new
Page
(
param
.
getPageIndex
(),
param
.
getPageSize
());
List
<
CourseListItemModel
>
list
=
baseMapper
.
queryPageList
(
page
,
param
);
for
(
CourseListItemModel
course
:
list
){
List
<
CourseTagPO
>
tagsList
=
tagService
.
findListByCourseId
(
course
.
getId
());
if
(
CollUtil
.
isNotEmpty
(
tagsList
)){
List
<
String
>
tagNameList
=
tagsList
.
stream
().
map
(
CourseTagPO:
:
getName
).
collect
(
Collectors
.
toList
());
course
.
setTags
(
tagNameList
);
}
}
return
PageResult
.<
CourseListItemModel
>
builder
().
code
(
CodeEnum
.
SUCCESS
.
getCode
()).
count
(
page
.
getTotal
()).
data
(
list
).
build
();
}
}
\ No newline at end of file
src/main/java/com/qkdata/biz/management/service/CourseTagService.java
View file @
d3d9ff85
...
...
@@ -27,4 +27,8 @@ public class CourseTagService extends ServiceImpl<CourseTagMapper, CourseTagPO>
List
<
CourseTagPO
>
pageList
=
baseMapper
.
queryPageList
(
page
,
param
);
return
PageResult
.<
CourseTagPO
>
builder
().
code
(
CodeEnum
.
SUCCESS
.
getCode
()).
count
(
page
.
getTotal
()).
data
(
pageList
).
build
();
}
public
List
<
CourseTagPO
>
findListByCourseId
(
Long
courseId
)
{
return
baseMapper
.
selectListByCourseId
(
courseId
);
}
}
\ No newline at end of file
src/main/java/com/qkdata/biz/management/vo/CourseListItemModel.java
0 → 100644
View file @
d3d9ff85
package
com
.
qkdata
.
biz
.
management
.
vo
;
import
com.qkdata.biz.enums.CourseChargeModelEnum
;
import
com.qkdata.biz.enums.CourseStatusEnum
;
import
lombok.Data
;
import
java.util.List
;
@Data
public
class
CourseListItemModel
{
/**
* 课程ID
*/
private
Long
id
;
/**
* 课程名称
*/
private
String
name
;
/**
* 系列名称
*/
private
String
seriesName
;
/**
* 所属讲师名称
*/
private
String
teacherName
;
/**
* 付费模式
*/
private
CourseChargeModelEnum
chargeModel
;
/**
* 标签列表
*/
private
List
<
String
>
tags
;
/**
* 课程状态
*/
private
CourseStatusEnum
status
;
}
src/main/java/com/qkdata/biz/management/vo/QueryCourseModel.java
0 → 100644
View file @
d3d9ff85
package
com
.
qkdata
.
biz
.
management
.
vo
;
import
com.qkdata.biz.enums.CourseChargeModelEnum
;
import
com.qkdata.biz.enums.CourseStatusEnum
;
import
com.qkdata.common.constants.Constants
;
import
lombok.Data
;
@Data
public
class
QueryCourseModel
{
private
int
pageIndex
=
Constants
.
DEFAULT_PAGE
;
private
int
pageSize
=
Constants
.
DEFAULT_PAGE_SIZE
;
/**
* 课程名称
*/
private
String
name
;
/**
* 系列名称
*/
private
String
seriesName
;
/**
* 付费模式
*/
private
CourseChargeModelEnum
chargeModel
;
/**
* 课程状态
*/
private
CourseStatusEnum
status
;
}
src/main/resources/mappers/management/allow_org_courseMapper.xml
0 → 100644
View file @
d3d9ff85
<?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.qkdata.biz.management.mapper.AllowOrgCourseMapper"
>
</mapper>
src/main/resources/mappers/management/courseMapper.xml
0 → 100644
View file @
d3d9ff85
<?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.qkdata.biz.management.mapper.CourseMapper"
>
<select
id=
"queryPageList"
resultType=
"com.qkdata.biz.management.vo.CourseListItemModel"
>
SELECT c.id,
c.`name`,
s.`name` series_name,
t.`name` teacher_name,
c.charge_model,
c.`status`
from course c
INNER JOIN teacher t on c.teacher_id = t.id
LEFT JOIN course_series s on c.series_id = s.id
WHERE c.is_del = 0
<if
test=
"p.name != null and p.name != ''"
>
AND c.`name` LIKE CONCAT('%',#{p.name},'%')
</if>
<if
test=
"p.seriesName != null and p.seriesName != ''"
>
AND s.`name` LIKE CONCAT('%',#{p.seriesName},'%')
</if>
<if
test=
"p.chargeModel != null"
>
AND c.charge_model = #{p.chargeModel}
</if>
<if
test=
"p.status != null"
>
AND c.`status` = #{p.status}
</if>
ORDER BY c.create_time DESC
</select>
</mapper>
src/main/resources/mappers/management/course_chapterMapper.xml
0 → 100644
View file @
d3d9ff85
<?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.qkdata.biz.management.mapper.CourseChapterMapper"
>
</mapper>
src/main/resources/mappers/management/course_seriesMapper.xml
0 → 100644
View file @
d3d9ff85
<?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.qkdata.biz.management.mapper.CourseSeriesMapper"
>
</mapper>
src/main/resources/mappers/management/course_tagMapper.xml
View file @
d3d9ff85
...
...
@@ -9,4 +9,10 @@
and name like concat('%',#{p.name},'%')
</if>
</select>
<select
id=
"selectListByCourseId"
resultType=
"com.qkdata.biz.management.entity.CourseTagPO"
>
select t.*
from course_tag t
inner join course_tag_rel r on t.id = r.tag_id
where r.course_id = #{courseId}
</select>
</mapper>
src/main/resources/mappers/management/course_tag_relMapper.xml
0 → 100644
View file @
d3d9ff85
<?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.qkdata.biz.management.mapper.CourseTagRelMapper"
>
</mapper>
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