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
66554285
Commit
66554285
authored
May 28, 2021
by
liuyang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
完成用户端首页轮播图、标签、推荐课程、搜索、课程详情接口
parent
c3c67360
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
407 additions
and
18 deletions
+407
-18
CourseController.java
...om/qkdata/biz/management/controller/CourseController.java
+9
-3
AllowOrgCoursePO.java
...va/com/qkdata/biz/management/entity/AllowOrgCoursePO.java
+4
-2
CourseTagRelPO.java
...java/com/qkdata/biz/management/entity/CourseTagRelPO.java
+4
-3
CourseMapper.java
...n/java/com/qkdata/biz/management/mapper/CourseMapper.java
+4
-0
RecommendConfigMapper.java
...m/qkdata/biz/management/mapper/RecommendConfigMapper.java
+4
-0
CourseService.java
...java/com/qkdata/biz/management/service/CourseService.java
+81
-9
RecommendConfigService.java
...qkdata/biz/management/service/RecommendConfigService.java
+65
-0
CourseChaperModel.java
.../java/com/qkdata/biz/management/vo/CourseChaperModel.java
+9
-1
CourseDetailModel.java
.../java/com/qkdata/biz/management/vo/CourseDetailModel.java
+8
-0
RecommendConfigModel.java
...va/com/qkdata/biz/management/vo/RecommendConfigModel.java
+42
-0
MainPageController.java
...ava/com/qkdata/biz/web/controller/MainPageController.java
+84
-0
MainPageModel.java
src/main/java/com/qkdata/biz/web/vo/MainPageModel.java
+15
-0
SearchCourseConditionModel.java
...ava/com/qkdata/biz/web/vo/SearchCourseConditionModel.java
+12
-0
SearchCourseResultModel.java
...n/java/com/qkdata/biz/web/vo/SearchCourseResultModel.java
+18
-0
courseMapper.xml
src/main/resources/mappers/management/courseMapper.xml
+38
-0
recommend_configMapper.xml
...n/resources/mappers/management/recommend_configMapper.xml
+10
-0
No files found.
src/main/java/com/qkdata/biz/management/controller/CourseController.java
View file @
66554285
...
@@ -3,6 +3,7 @@ package com.qkdata.biz.management.controller;
...
@@ -3,6 +3,7 @@ package com.qkdata.biz.management.controller;
import
com.aliyuncs.exceptions.ClientException
;
import
com.aliyuncs.exceptions.ClientException
;
import
com.qkdata.biz.common.BizConstants
;
import
com.qkdata.biz.common.BizConstants
;
import
com.qkdata.biz.enums.CourseAllowEnum
;
import
com.qkdata.biz.management.entity.CourseSeriesPO
;
import
com.qkdata.biz.management.entity.CourseSeriesPO
;
import
com.qkdata.biz.management.service.CourseService
;
import
com.qkdata.biz.management.service.CourseService
;
import
com.qkdata.biz.management.vo.*
;
import
com.qkdata.biz.management.vo.*
;
...
@@ -57,8 +58,12 @@ public class CourseController {
...
@@ -57,8 +58,12 @@ public class CourseController {
@ApiOperation
(
"课程保存"
)
@ApiOperation
(
"课程保存"
)
@PostMapping
(
"/save"
)
@PostMapping
(
"/save"
)
@SysLog
(
"课程保存"
)
@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
>
saveCourse
(
@RequestBody
SaveCourseModel
model
){
public
Result
<
String
>
saveCourse
(
@RequestBody
SaveCourseModel
model
){
if
(
model
.
getAllow
()
==
null
){
model
.
setAllow
(
CourseAllowEnum
.
ALL
);
}
courseService
.
saveCourse
(
model
);
courseService
.
saveCourse
(
model
);
return
Result
.
succeed
(
"ok"
);
return
Result
.
succeed
(
"ok"
);
}
}
...
@@ -114,10 +119,11 @@ public class CourseController {
...
@@ -114,10 +119,11 @@ public class CourseController {
@PostMapping
(
"/saveSeries"
)
@PostMapping
(
"/saveSeries"
)
@SysLog
(
"添加系列"
)
@SysLog
(
"添加系列"
)
@RequiresRoles
(
value
=
{
BizConstants
.
ROLE_ADMIN
,
BizConstants
.
ROLE_OPERATOR
},
logical
=
Logical
.
OR
)
@RequiresRoles
(
value
=
{
BizConstants
.
ROLE_ADMIN
,
BizConstants
.
ROLE_OPERATOR
},
logical
=
Logical
.
OR
)
public
Result
<
Stri
ng
>
saveSeries
(
@RequestBody
CourseSeriesPO
po
){
public
Result
<
Lo
ng
>
saveSeries
(
@RequestBody
CourseSeriesPO
po
){
courseService
.
saveSeries
(
po
);
Long
id
=
courseService
.
saveSeries
(
po
);
return
Result
.
succeed
(
"ok"
);
return
Result
.
succeed
(
id
);
}
}
@ApiOperation
(
"获取视频信息"
)
@ApiOperation
(
"获取视频信息"
)
@GetMapping
(
"/videoInfo/{videoId}"
)
@GetMapping
(
"/videoInfo/{videoId}"
)
@RequiresRoles
(
value
=
{
BizConstants
.
ROLE_ADMIN
,
BizConstants
.
ROLE_OPERATOR
},
logical
=
Logical
.
OR
)
@RequiresRoles
(
value
=
{
BizConstants
.
ROLE_ADMIN
,
BizConstants
.
ROLE_OPERATOR
},
logical
=
Logical
.
OR
)
...
...
src/main/java/com/qkdata/biz/management/entity/AllowOrgCoursePO.java
View file @
66554285
package
com
.
qkdata
.
biz
.
management
.
entity
;
package
com
.
qkdata
.
biz
.
management
.
entity
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.qkdata.common.base.entity.BasePO
;
import
com.qkdata.common.base.entity.BasePO
;
import
lombok.Data
;
import
lombok.Data
;
...
@@ -14,12 +15,13 @@ import lombok.EqualsAndHashCode;
...
@@ -14,12 +15,13 @@ import lombok.EqualsAndHashCode;
* @since 2021-05-19
* @since 2021-05-19
*/
*/
@Data
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
@TableName
(
"allow_org_course"
)
@TableName
(
"allow_org_course"
)
public
class
AllowOrgCoursePO
extends
BasePO
{
public
class
AllowOrgCoursePO
{
private
static
final
long
serialVersionUID
=
1L
;
private
static
final
long
serialVersionUID
=
1L
;
@TableId
private
Long
id
;
/**
/**
* 课程ID
* 课程ID
*/
*/
...
...
src/main/java/com/qkdata/biz/management/entity/CourseTagRelPO.java
View file @
66554285
package
com
.
qkdata
.
biz
.
management
.
entity
;
package
com
.
qkdata
.
biz
.
management
.
entity
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.qkdata.common.base.entity.BasePO
;
import
com.qkdata.common.base.entity.BasePO
;
import
lombok.Data
;
import
lombok.Data
;
...
@@ -14,12 +15,12 @@ import lombok.EqualsAndHashCode;
...
@@ -14,12 +15,12 @@ import lombok.EqualsAndHashCode;
* @since 2021-05-19
* @since 2021-05-19
*/
*/
@Data
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
@TableName
(
"course_tag_rel"
)
@TableName
(
"course_tag_rel"
)
public
class
CourseTagRelPO
extends
BasePO
{
public
class
CourseTagRelPO
{
private
static
final
long
serialVersionUID
=
1L
;
private
static
final
long
serialVersionUID
=
1L
;
@TableId
private
Long
id
;
/**
/**
* 课程ID
* 课程ID
*/
*/
...
...
src/main/java/com/qkdata/biz/management/mapper/CourseMapper.java
View file @
66554285
...
@@ -8,6 +8,8 @@ import com.qkdata.biz.management.vo.CourseAllowEnterpriseModel;
...
@@ -8,6 +8,8 @@ import com.qkdata.biz.management.vo.CourseAllowEnterpriseModel;
import
com.qkdata.biz.management.vo.CourseAttachmentModel
;
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
com.qkdata.biz.web.vo.SearchCourseConditionModel
;
import
com.qkdata.biz.web.vo.SearchCourseResultModel
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Param
;
import
org.apache.ibatis.annotations.Param
;
...
@@ -31,4 +33,6 @@ public interface CourseMapper extends BaseMapper<CoursePO> {
...
@@ -31,4 +33,6 @@ public interface CourseMapper extends BaseMapper<CoursePO> {
List
<
CourseAttachmentModel
>
selectAttachmentListByCourseId
(
Long
id
);
List
<
CourseAttachmentModel
>
selectAttachmentListByCourseId
(
Long
id
);
List
<
CourseAllowEnterpriseModel
>
selectOrgListByCourseId
(
Long
id
);
List
<
CourseAllowEnterpriseModel
>
selectOrgListByCourseId
(
Long
id
);
List
<
SearchCourseResultModel
>
searchPageList
(
Page
page
,
@Param
(
"p"
)
SearchCourseConditionModel
model
,
@Param
(
"enterpriseId"
)
Long
enterpriseId
);
}
}
src/main/java/com/qkdata/biz/management/mapper/RecommendConfigMapper.java
View file @
66554285
...
@@ -2,8 +2,11 @@ package com.qkdata.biz.management.mapper;
...
@@ -2,8 +2,11 @@ package com.qkdata.biz.management.mapper;
import
com.qkdata.biz.management.entity.RecommendConfigPO
;
import
com.qkdata.biz.management.entity.RecommendConfigPO
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.qkdata.biz.management.vo.RecommendConfigModel
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Mapper
;
import
java.util.List
;
/**
/**
* <p>
* <p>
* 推荐课程配置 Mapper 接口
* 推荐课程配置 Mapper 接口
...
@@ -15,4 +18,5 @@ import org.apache.ibatis.annotations.Mapper;
...
@@ -15,4 +18,5 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper
@Mapper
public
interface
RecommendConfigMapper
extends
BaseMapper
<
RecommendConfigPO
>
{
public
interface
RecommendConfigMapper
extends
BaseMapper
<
RecommendConfigPO
>
{
List
<
RecommendConfigModel
>
listConfig
();
}
}
src/main/java/com/qkdata/biz/management/service/CourseService.java
View file @
66554285
package
com
.
qkdata
.
biz
.
management
.
service
;
package
com
.
qkdata
.
biz
.
management
.
service
;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.util.StrUtil
;
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
;
...
@@ -16,9 +17,14 @@ import com.qkdata.biz.enums.CourseStatusEnum;
...
@@ -16,9 +17,14 @@ import com.qkdata.biz.enums.CourseStatusEnum;
import
com.qkdata.biz.management.entity.*
;
import
com.qkdata.biz.management.entity.*
;
import
com.qkdata.biz.management.mapper.*
;
import
com.qkdata.biz.management.mapper.*
;
import
com.qkdata.biz.management.vo.*
;
import
com.qkdata.biz.management.vo.*
;
import
com.qkdata.biz.sys.service.SysUserService
;
import
com.qkdata.biz.web.vo.FullUserInfo
;
import
com.qkdata.biz.web.vo.SearchCourseConditionModel
;
import
com.qkdata.biz.web.vo.SearchCourseResultModel
;
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.util.UserContext
;
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
;
...
@@ -55,6 +61,8 @@ public class CourseService extends ServiceImpl<CourseMapper, CoursePO> {
...
@@ -55,6 +61,8 @@ public class CourseService extends ServiceImpl<CourseMapper, CoursePO> {
private
AliyunService
aliyunService
;
private
AliyunService
aliyunService
;
@Autowired
@Autowired
private
ResourceService
resourceService
;
private
ResourceService
resourceService
;
@Autowired
private
SysUserService
sysUserService
;
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
());
...
@@ -200,6 +208,8 @@ public class CourseService extends ServiceImpl<CourseMapper, CoursePO> {
...
@@ -200,6 +208,8 @@ public class CourseService extends ServiceImpl<CourseMapper, CoursePO> {
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
());
model
.
setTeacherAvatar
(
teacherPO
.
getAvatarUrl
());
model
.
setTeacherIntroduce
(
teacherPO
.
getIntroduce
());
}
}
}
}
...
@@ -250,29 +260,39 @@ public class CourseService extends ServiceImpl<CourseMapper, CoursePO> {
...
@@ -250,29 +260,39 @@ public class CourseService extends ServiceImpl<CourseMapper, CoursePO> {
ResourcePO
resourcePO
=
resourceService
.
getById
(
resourceId
);
ResourcePO
resourcePO
=
resourceService
.
getById
(
resourceId
);
if
(
resourcePO
!=
null
)
{
if
(
resourcePO
!=
null
)
{
String
videoId
=
resourcePO
.
getVideoId
();
String
videoId
=
resourcePO
.
getVideoId
();
model
.
setResourceId
(
resourceId
);
model
.
setDuration
(
resourcePO
.
getVideoDuration
());
model
.
setSize
(
resourcePO
.
getSize
());
try
{
try
{
GetPlayInfoResponse
response
=
aliyunService
.
getVideoPlayInfo
(
videoId
);
GetVideoInfoResponse
response
=
aliyunService
.
getVideoInfo
(
videoId
);
List
<
GetPlayInfoResponse
.
PlayInfo
>
playInfoList
=
response
.
getPlayInfoList
();
GetVideoInfoResponse
.
Video
videoInfo
=
response
.
getVideo
();
if
(
CollUtil
.
isNotEmpty
(
playInfoList
))
{
if
(
videoInfo
!=
null
)
{
GetPlayInfoResponse
.
PlayInfo
playInfo
=
playInfoList
.
get
(
0
);
if
(
StrUtil
.
isNotBlank
(
videoInfo
.
getCoverURL
())){
model
.
setVideoUrl
(
playInfo
.
getPlayURL
());
model
.
setCoverUrl
(
videoInfo
.
getCoverURL
());
GetPlayInfoResponse
.
VideoBase
videoBase
=
response
.
getVideoBase
();
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
.
getPage
Index
());
Page
page
=
new
Page
(
model
.
getPageIndex
(),
model
.
getPage
Size
());
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
Long
saveSeries
(
CourseSeriesPO
po
)
{
seriesMapper
.
insert
(
po
);
seriesMapper
.
insert
(
po
);
return
po
.
getId
();
}
}
@Transactional
@Transactional
...
@@ -369,6 +389,8 @@ public class CourseService extends ServiceImpl<CourseMapper, CoursePO> {
...
@@ -369,6 +389,8 @@ public class CourseService extends ServiceImpl<CourseMapper, CoursePO> {
}
}
po
.
setModel
(
CourseModelEnum
.
VOD
);
po
.
setModel
(
CourseModelEnum
.
VOD
);
po
.
setSeriesId
(
model
.
getSeriesId
());
po
.
setSeriesId
(
model
.
getSeriesId
());
po
.
setAllow
(
model
.
getAllow
());
save
(
po
);
return
po
.
getId
();
return
po
.
getId
();
}
}
...
@@ -381,4 +403,53 @@ public class CourseService extends ServiceImpl<CourseMapper, CoursePO> {
...
@@ -381,4 +403,53 @@ public class CourseService extends ServiceImpl<CourseMapper, CoursePO> {
model
.
setCoverURL
(
response
.
getVideo
().
getCoverURL
());
model
.
setCoverURL
(
response
.
getVideo
().
getCoverURL
());
return
model
;
return
model
;
}
}
public
PageResult
<
SearchCourseResultModel
>
search
(
SearchCourseConditionModel
model
)
{
Page
page
=
new
Page
(
model
.
getPageIndex
(),
model
.
getPageSize
());
String
username
=
UserContext
.
getUser
().
getUsername
();
FullUserInfo
userInfo
=
sysUserService
.
findFullUserInfo
(
username
);
List
<
SearchCourseResultModel
>
list
=
baseMapper
.
searchPageList
(
page
,
model
,
userInfo
.
getEnterpriseId
());
return
PageResult
.<
SearchCourseResultModel
>
builder
().
code
(
CodeEnum
.
SUCCESS
.
getCode
()).
count
(
page
.
getTotal
()).
data
(
list
).
build
();
}
public
List
<
Long
>
getAllowEnterpriseList
(
Long
courseId
)
{
List
<
AllowOrgCoursePO
>
enterpriseIdList
=
allowOrgCourseMapper
.
selectList
(
Wrappers
.<
AllowOrgCoursePO
>
lambdaQuery
().
eq
(
AllowOrgCoursePO:
:
getCourseId
,
courseId
));
if
(
CollUtil
.
isNotEmpty
(
enterpriseIdList
)){
return
enterpriseIdList
.
stream
().
map
(
AllowOrgCoursePO:
:
getOrgId
).
collect
(
Collectors
.
toList
());
}
return
Lists
.
newArrayList
();
}
/**
* 验证当前登陆用户是否有该课程权限
* @param courseId
*/
public
void
checkPerm
(
Long
courseId
)
{
boolean
hasPerm
=
false
;
CoursePO
coursePO
=
getById
(
courseId
);
if
(
coursePO
==
null
){
throw
new
BusinessException
(
"请求错误,该课程不存在"
);
}
if
(
coursePO
.
getAllow
()
==
CourseAllowEnum
.
SPECIFY
){
List
<
Long
>
allowOrgIds
=
getAllowEnterpriseList
(
courseId
);
if
(
CollUtil
.
isNotEmpty
(
allowOrgIds
)){
String
username
=
UserContext
.
getUser
().
getUsername
();
FullUserInfo
userInfo
=
sysUserService
.
findFullUserInfo
(
username
);
if
(
userInfo
.
getEnterpriseId
()
!=
null
){
for
(
Long
orgId
:
allowOrgIds
){
if
(
orgId
.
longValue
()
==
userInfo
.
getEnterpriseId
().
longValue
()){
hasPerm
=
true
;
break
;
}
}
}
}
}
else
{
hasPerm
=
true
;
}
if
(!
hasPerm
){
throw
new
BusinessException
(
"对不起,您没权限查看该课程"
);
}
}
}
}
\ No newline at end of file
src/main/java/com/qkdata/biz/management/service/RecommendConfigService.java
View file @
66554285
package
com
.
qkdata
.
biz
.
management
.
service
;
package
com
.
qkdata
.
biz
.
management
.
service
;
import
cn.hutool.core.collection.CollUtil
;
import
com.aliyuncs.exceptions.ClientException
;
import
com.google.common.collect.Lists
;
import
com.qkdata.biz.enums.CourseAllowEnum
;
import
com.qkdata.biz.management.entity.CourseTagPO
;
import
com.qkdata.biz.management.entity.RecommendConfigPO
;
import
com.qkdata.biz.management.entity.RecommendConfigPO
;
import
com.qkdata.biz.management.entity.ResourcePO
;
import
com.qkdata.biz.management.mapper.RecommendConfigMapper
;
import
com.qkdata.biz.management.mapper.RecommendConfigMapper
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.qkdata.biz.management.vo.CourseChaperModel
;
import
com.qkdata.biz.management.vo.RecommendConfigModel
;
import
com.qkdata.biz.management.vo.VideoInfoModel
;
import
com.qkdata.biz.sys.service.SysUserService
;
import
com.qkdata.biz.web.vo.FullUserInfo
;
import
com.qkdata.common.util.UserContext
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
/**
/**
* <p>
* <p>
* $!{table.comment} 服务类
* $!{table.comment} 服务类
...
@@ -13,7 +29,55 @@ import org.springframework.stereotype.Service;
...
@@ -13,7 +29,55 @@ import org.springframework.stereotype.Service;
* @author liuyang
* @author liuyang
* @since 2021-05-27
* @since 2021-05-27
*/
*/
@Slf4j
@Service
@Service
public
class
RecommendConfigService
extends
ServiceImpl
<
RecommendConfigMapper
,
RecommendConfigPO
>
{
public
class
RecommendConfigService
extends
ServiceImpl
<
RecommendConfigMapper
,
RecommendConfigPO
>
{
@Autowired
private
CourseService
courseService
;
@Autowired
private
ResourceService
resourceService
;
@Autowired
private
CourseTagService
tagService
;
@Autowired
private
SysUserService
sysUserService
;
public
List
<
RecommendConfigModel
>
listConfig
()
{
List
<
RecommendConfigModel
>
modelList
=
baseMapper
.
listConfig
();
List
<
RecommendConfigModel
>
resultList
=
Lists
.
newArrayList
();
for
(
RecommendConfigModel
model
:
modelList
){
if
(
model
.
getAllow
()
==
CourseAllowEnum
.
SPECIFY
){
List
<
Long
>
orgIds
=
courseService
.
getAllowEnterpriseList
(
model
.
getCourseId
());
String
username
=
UserContext
.
getUser
().
getUsername
();
FullUserInfo
userInfo
=
sysUserService
.
findFullUserInfo
(
username
);
boolean
hasPerm
=
false
;
for
(
Long
orgId
:
orgIds
){
if
(
userInfo
.
getEnterpriseId
()
!=
null
){
if
(
orgId
.
longValue
()
==
userInfo
.
getEnterpriseId
().
longValue
()){
hasPerm
=
true
;
break
;
}
}
}
if
(
hasPerm
){
resultList
.
add
(
model
);
}
else
{
continue
;
}
}
else
{
resultList
.
add
(
model
);
}
List
<
CourseChaperModel
>
chaperList
=
courseService
.
chaperList
(
model
.
getCourseId
());
if
(
CollUtil
.
isNotEmpty
(
chaperList
)){
CourseChaperModel
chaperModel
=
chaperList
.
get
(
0
);
ResourcePO
resourcePO
=
resourceService
.
getById
(
chaperModel
.
getResourceId
());
if
(
resourcePO
!=
null
){
model
.
setDuration
(
resourcePO
.
getVideoDuration
());
}
}
List
<
CourseTagPO
>
tagList
=
tagService
.
findListByCourseId
(
model
.
getCourseId
());
model
.
setTags
(
tagList
);
}
return
resultList
;
}
}
}
\ No newline at end of file
src/main/java/com/qkdata/biz/management/vo/CourseChaperModel.java
View file @
66554285
...
@@ -28,5 +28,13 @@ public class CourseChaperModel {
...
@@ -28,5 +28,13 @@ public class CourseChaperModel {
/**
/**
* 视频快照URL
* 视频快照URL
*/
*/
private
String
snapshotUrl
;
private
String
coverUrl
;
/**
* 视频大小
*/
private
Long
size
;
/**
* 视频时长
*/
private
Float
duration
;
}
}
src/main/java/com/qkdata/biz/management/vo/CourseDetailModel.java
View file @
66554285
...
@@ -39,6 +39,14 @@ public class CourseDetailModel {
...
@@ -39,6 +39,14 @@ public class CourseDetailModel {
* 讲师名称
* 讲师名称
*/
*/
private
String
teacherName
;
private
String
teacherName
;
/**
* 讲师头像
*/
private
String
teacherAvatar
;
/**
* 讲师简介
*/
private
String
teacherIntroduce
;
/**
/**
* 收费模式(免费、会员免费、付费点播)
* 收费模式(免费、会员免费、付费点播)
*/
*/
...
...
src/main/java/com/qkdata/biz/management/vo/RecommendConfigModel.java
0 → 100644
View file @
66554285
package
com
.
qkdata
.
biz
.
management
.
vo
;
import
com.qkdata.biz.enums.CourseAllowEnum
;
import
com.qkdata.biz.enums.CourseChargeModelEnum
;
import
com.qkdata.biz.management.entity.CourseTagPO
;
import
lombok.Data
;
import
java.util.List
;
@Data
public
class
RecommendConfigModel
{
/**
* 课程ID
*/
private
Long
courseId
;
/**
* 课程名称
*/
private
String
courseName
;
/**
* 课程封面url
*/
private
String
courseLogoUrl
;
/**
* 收费模式
*/
private
CourseChargeModelEnum
chargeModel
;
/**
* 视频时长
*/
private
Float
duration
;
/**
* 标签
*/
private
List
<
CourseTagPO
>
tags
;
/**
* 可见范围
*/
private
CourseAllowEnum
allow
;
}
src/main/java/com/qkdata/biz/web/controller/MainPageController.java
0 → 100644
View file @
66554285
package
com
.
qkdata
.
biz
.
web
.
controller
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.qkdata.biz.common.BizConstants
;
import
com.qkdata.biz.management.entity.CourseTagPO
;
import
com.qkdata.biz.management.entity.RecommendConfigPO
;
import
com.qkdata.biz.management.service.CourseService
;
import
com.qkdata.biz.management.service.CourseTagService
;
import
com.qkdata.biz.management.service.RecommendConfigService
;
import
com.qkdata.biz.management.service.SwiperConfigService
;
import
com.qkdata.biz.management.vo.CourseDetailModel
;
import
com.qkdata.biz.management.vo.CourseTagsModel
;
import
com.qkdata.biz.management.vo.RecommendConfigModel
;
import
com.qkdata.biz.management.vo.SwiperConfigModel
;
import
com.qkdata.biz.web.vo.MainPageModel
;
import
com.qkdata.biz.web.vo.SearchCourseConditionModel
;
import
com.qkdata.biz.web.vo.SearchCourseResultModel
;
import
com.qkdata.common.annotation.SysLog
;
import
com.qkdata.common.base.model.PageResult
;
import
com.qkdata.common.base.model.Result
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.apache.shiro.authz.annotation.Logical
;
import
org.apache.shiro.authz.annotation.RequiresRoles
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.List
;
@Api
(
tags
=
"首页数据获取"
)
@RestController
@RequestMapping
(
"/api/web/mainPage"
)
public
class
MainPageController
{
@Autowired
private
SwiperConfigService
swiperConfigService
;
@Autowired
private
CourseTagService
courseTagService
;
@Autowired
private
RecommendConfigService
recommendConfigService
;
@Autowired
private
CourseService
courseService
;
@Autowired
private
CourseTagService
tagService
;
@ApiOperation
(
"获取配置信息"
)
@GetMapping
(
""
)
@RequiresRoles
(
value
=
{
BizConstants
.
ROLE_USER
,
BizConstants
.
ROLE_ENTERPRISE_ADMIN
},
logical
=
Logical
.
OR
)
public
Result
<
MainPageModel
>
get
(){
List
<
SwiperConfigModel
>
swiperConfigModels
=
swiperConfigService
.
listConfig
();
List
<
CourseTagPO
>
tagList
=
courseTagService
.
list
(
Wrappers
.<
CourseTagPO
>
lambdaQuery
().
eq
(
CourseTagPO:
:
getRecommend
,
true
));
List
<
RecommendConfigModel
>
recommendConfigList
=
recommendConfigService
.
listConfig
();
MainPageModel
model
=
new
MainPageModel
();
model
.
setTags
(
tagList
);
model
.
setSwiperConfigs
(
swiperConfigModels
);
model
.
setRecommendConfigs
(
recommendConfigList
);
return
Result
.
succeed
(
model
);
}
@ApiOperation
(
"搜索课程"
)
@PostMapping
(
"/course/search"
)
@RequiresRoles
(
value
=
{
BizConstants
.
ROLE_USER
,
BizConstants
.
ROLE_ENTERPRISE_ADMIN
},
logical
=
Logical
.
OR
)
@SysLog
(
"搜索课程"
)
public
PageResult
<
SearchCourseResultModel
>
searchCourse
(
@RequestBody
SearchCourseConditionModel
model
){
return
courseService
.
search
(
model
);
}
@ApiOperation
(
"获取全部标签"
)
@GetMapping
(
"/course/tags"
)
@RequiresRoles
(
value
=
{
BizConstants
.
ROLE_USER
,
BizConstants
.
ROLE_ENTERPRISE_ADMIN
},
logical
=
Logical
.
OR
)
public
Result
<
List
<
CourseTagPO
>>
findCourseTags
(){
List
<
CourseTagPO
>
tags
=
tagService
.
list
();
return
Result
.
succeed
(
tags
);
}
@ApiOperation
(
"获取课程详情"
)
@GetMapping
(
"/course/{id}"
)
@RequiresRoles
(
value
=
{
BizConstants
.
ROLE_USER
,
BizConstants
.
ROLE_ENTERPRISE_ADMIN
},
logical
=
Logical
.
OR
)
@SysLog
(
"获取课程详情"
)
public
Result
<
CourseDetailModel
>
getCourseDetail
(
@PathVariable
Long
id
){
courseService
.
checkPerm
(
id
);
CourseDetailModel
model
=
courseService
.
getCourseDetail
(
id
);
return
Result
.
succeed
(
model
);
}
}
src/main/java/com/qkdata/biz/web/vo/MainPageModel.java
0 → 100644
View file @
66554285
package
com
.
qkdata
.
biz
.
web
.
vo
;
import
com.qkdata.biz.management.entity.CourseTagPO
;
import
com.qkdata.biz.management.vo.RecommendConfigModel
;
import
com.qkdata.biz.management.vo.SwiperConfigModel
;
import
lombok.Data
;
import
java.util.List
;
@Data
public
class
MainPageModel
{
List
<
SwiperConfigModel
>
swiperConfigs
;
List
<
CourseTagPO
>
tags
;
List
<
RecommendConfigModel
>
recommendConfigs
;
}
src/main/java/com/qkdata/biz/web/vo/SearchCourseConditionModel.java
0 → 100644
View file @
66554285
package
com
.
qkdata
.
biz
.
web
.
vo
;
import
com.qkdata.common.constants.Constants
;
import
lombok.Data
;
@Data
public
class
SearchCourseConditionModel
{
private
int
pageIndex
=
Constants
.
DEFAULT_PAGE
;
private
int
pageSize
=
Constants
.
DEFAULT_PAGE_SIZE
;
private
String
courseName
;
private
Long
tagId
;
}
src/main/java/com/qkdata/biz/web/vo/SearchCourseResultModel.java
0 → 100644
View file @
66554285
package
com
.
qkdata
.
biz
.
web
.
vo
;
import
com.qkdata.biz.enums.CourseChargeModelEnum
;
import
com.qkdata.biz.management.entity.CourseTagPO
;
import
lombok.Data
;
import
java.util.List
;
@Data
public
class
SearchCourseResultModel
{
private
Long
courseId
;
private
String
courseName
;
private
CourseChargeModelEnum
chargeModel
;
private
Float
duration
;
private
String
courseLogoUrl
;
private
List
<
CourseTagPO
>
tags
;
}
src/main/resources/mappers/management/courseMapper.xml
View file @
66554285
...
@@ -49,4 +49,42 @@
...
@@ -49,4 +49,42 @@
INNER JOIN organization o on r.org_id = o.id
INNER JOIN organization o on r.org_id = o.id
WHERE r.course_id = #{id}
WHERE r.course_id = #{id}
</select>
</select>
<select
id=
"searchPageList"
resultType=
"com.qkdata.biz.web.vo.SearchCourseResultModel"
>
SELECT
*
FROM
(
SELECT
c.id course_id,
c.`name` course_name,
c.charge_model,
c.logo_url course_logo_url
FROM
course c
WHERE
c.is_del = 0
AND c.allow = 'ALL'
UNION
SELECT
c.id course_id,
c.`name` course_name,
c.charge_model,
c.logo_url course_logo_url
FROM
course c
INNER JOIN allow_org_course o ON c.id = o.course_id
WHERE
c.is_del = 0
AND c.allow = 'SPECIFY'
AND o.org_id = #{enterpriseId}
) tmp
LEFT JOIN course_tag_rel r on tmp.course_id = r.course_id
WHERE 1= 1
<if
test=
"p.courseName != null and p.courseName != ''"
>
and tmp.course_name like concat ('%',#{p.courseName},'%')
</if>
<if
test=
"p.tagId != null"
>
and r.tag_id = #{p.tagId}
</if>
</select>
</mapper>
</mapper>
src/main/resources/mappers/management/recommend_configMapper.xml
View file @
66554285
...
@@ -2,4 +2,14 @@
...
@@ -2,4 +2,14 @@
<!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.RecommendConfigMapper"
>
<mapper
namespace=
"com.qkdata.biz.management.mapper.RecommendConfigMapper"
>
<select
id=
"listConfig"
resultType=
"com.qkdata.biz.management.vo.RecommendConfigModel"
>
SELECT c.id course_id,
c.`name` course_name,
c.charge_model,
c.logo_url course_logo_url,
c.allow
from recommend_config cfg
INNER JOIN course c on cfg.course_id = c.id
ORDER BY cfg.sort_no ASC
</select>
</mapper>
</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