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
4ee69f40
Commit
4ee69f40
authored
Jun 21, 2021
by
liuyang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update
parent
32134b8b
Hide whitespace changes
Inline
Side-by-side
Showing
30 changed files
with
316 additions
and
24 deletions
+316
-24
AlipayProperties.java
src/main/java/com/qkdata/alipay/config/AlipayProperties.java
+3
-0
AlipayNotifyController.java
.../com/qkdata/alipay/controller/AlipayNotifyController.java
+7
-1
AlipayService.java
src/main/java/com/qkdata/alipay/service/AlipayService.java
+25
-0
AliyunConfig.java
src/main/java/com/qkdata/aliyun/config/AliyunConfig.java
+3
-0
AliyunCallbackController.java
...om/qkdata/aliyun/controller/AliyunCallbackController.java
+5
-0
AliyunService.java
src/main/java/com/qkdata/aliyun/service/AliyunService.java
+58
-0
AliyunCallbackRespModel.java
...in/java/com/qkdata/aliyun/vo/AliyunCallbackRespModel.java
+3
-0
AliyunOSSUploadPolicyModel.java
...java/com/qkdata/aliyun/vo/AliyunOSSUploadPolicyModel.java
+3
-0
AliyunVideoCallbackModel.java
...n/java/com/qkdata/aliyun/vo/AliyunVideoCallbackModel.java
+3
-0
BizConstants.java
src/main/java/com/qkdata/biz/common/BizConstants.java
+3
-0
AccountStatusEnum.java
src/main/java/com/qkdata/biz/enums/AccountStatusEnum.java
+3
-0
AccountTypeEnum.java
src/main/java/com/qkdata/biz/enums/AccountTypeEnum.java
+3
-0
CourseAllowEnum.java
src/main/java/com/qkdata/biz/enums/CourseAllowEnum.java
+3
-0
CourseChargeModelEnum.java
...main/java/com/qkdata/biz/enums/CourseChargeModelEnum.java
+3
-0
CourseModelEnum.java
src/main/java/com/qkdata/biz/enums/CourseModelEnum.java
+3
-0
CourseStatusEnum.java
src/main/java/com/qkdata/biz/enums/CourseStatusEnum.java
+3
-0
CourseTypeEnum.java
src/main/java/com/qkdata/biz/enums/CourseTypeEnum.java
+3
-0
MenuTypeEnum.java
src/main/java/com/qkdata/biz/enums/MenuTypeEnum.java
+3
-0
PaySourceEnum.java
src/main/java/com/qkdata/biz/enums/PaySourceEnum.java
+12
-0
QueryLogTypeEnum.java
src/main/java/com/qkdata/biz/enums/QueryLogTypeEnum.java
+3
-0
SwiperStatusEnum.java
src/main/java/com/qkdata/biz/enums/SwiperStatusEnum.java
+3
-0
UserPayRecordTypeEnum.java
...main/java/com/qkdata/biz/enums/UserPayRecordTypeEnum.java
+3
-0
UserSexEnum.java
src/main/java/com/qkdata/biz/enums/UserSexEnum.java
+9
-0
CourseConsumeRecordMapper.java
...data/biz/management/mapper/CourseConsumeRecordMapper.java
+1
-1
CourseConsumeRecordService.java
...ta/biz/management/service/CourseConsumeRecordService.java
+22
-4
CourseService.java
...java/com/qkdata/biz/management/service/CourseService.java
+120
-2
TimeTaskService.java
...va/com/qkdata/biz/management/service/TimeTaskService.java
+4
-4
MainPageController.java
...ava/com/qkdata/biz/web/controller/MainPageController.java
+0
-9
UserCenterController.java
...a/com/qkdata/biz/web/controller/UserCenterController.java
+1
-2
course_consume_recordMapper.xml
...ources/mappers/management/course_consume_recordMapper.xml
+1
-1
No files found.
src/main/java/com/qkdata/alipay/config/AlipayProperties.java
View file @
4ee69f40
...
...
@@ -4,6 +4,9 @@ import lombok.Data;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.context.annotation.Configuration
;
/**
* 支付宝配置文件
*/
@Data
@Configuration
public
class
AlipayProperties
{
...
...
src/main/java/com/qkdata/alipay/controller/AlipayNotifyController.java
View file @
4ee69f40
...
...
@@ -22,7 +22,7 @@ import java.util.Iterator;
import
java.util.Map
;
@Slf4j
@Api
@Api
(
tags
=
"支付宝接口"
)
@RestController
@RequestMapping
(
"/alipay"
)
public
class
AlipayNotifyController
{
...
...
@@ -63,6 +63,12 @@ public class AlipayNotifyController {
}
return
"success"
;
}
/**
* 解析支付宝回调主求参数
* @param request
* @return
*/
private
Map
<
String
,
String
>
parseParameter
(
HttpServletRequest
request
){
//获取支付宝POST过来反馈信息
Map
<
String
,
String
>
params
=
new
HashMap
<
String
,
String
>();
...
...
src/main/java/com/qkdata/alipay/service/AlipayService.java
View file @
4ee69f40
...
...
@@ -20,6 +20,9 @@ import org.springframework.stereotype.Service;
import
javax.annotation.PostConstruct
;
/**
* 支付宝接口封装
*/
@Slf4j
@Service
public
class
AlipayService
{
...
...
@@ -29,6 +32,9 @@ public class AlipayService {
private
String
frontendDomain
;
private
AlipayClient
alipayClient
;
/**
* 初始化
*/
@PostConstruct
public
void
init
(){
alipayClient
=
new
DefaultAlipayClient
(
alipayProperties
.
getUrl
(),
...
...
@@ -40,6 +46,13 @@ public class AlipayService {
AlipayConstants
.
SIGN_TYPE_RSA2
);
}
/**
* 统一下单调用
* @param model
* @return
* @throws AlipayApiException
*/
public
String
prePayOrder
(
AlipayTradeWapPayModel
model
)
throws
AlipayApiException
{
AlipayTradeWapPayRequest
alipay_request
=
new
AlipayTradeWapPayRequest
();
alipay_request
.
setBizModel
(
model
);
...
...
@@ -55,6 +68,12 @@ public class AlipayService {
return
form
;
}
/**
* 查询订单
* @param orderNo
* @return
* @throws AlipayApiException
*/
public
String
queryOrder
(
String
orderNo
)
throws
AlipayApiException
{
AlipayTradeQueryRequest
request
=
new
AlipayTradeQueryRequest
();
AlipayTradeQueryModel
model
=
new
AlipayTradeQueryModel
();
...
...
@@ -64,6 +83,12 @@ public class AlipayService {
return
response
.
getTradeStatus
();
}
/**
* 关闭订单
* @param orderNo
* @return
* @throws AlipayApiException
*/
public
AlipayTradeCloseResponse
closeOrder
(
String
orderNo
)
throws
AlipayApiException
{
AlipayTradeCloseRequest
request
=
new
AlipayTradeCloseRequest
();
AlipayTradeCloseModel
model
=
new
AlipayTradeCloseModel
();
...
...
src/main/java/com/qkdata/aliyun/config/AliyunConfig.java
View file @
4ee69f40
...
...
@@ -4,6 +4,9 @@ import lombok.Data;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.context.annotation.Configuration
;
/**
* 阿里云配置
*/
@Data
@Configuration
public
class
AliyunConfig
{
...
...
src/main/java/com/qkdata/aliyun/controller/AliyunCallbackController.java
View file @
4ee69f40
...
...
@@ -54,6 +54,11 @@ public class AliyunCallbackController {
return
Result
.
succeed
(
"ok"
);
}
/**
* 保存到资源表
* @param model
* @return
*/
private
Long
saveToResource
(
AliyunCallbackRespModel
model
)
{
ResourcePO
po
=
new
ResourcePO
();
po
.
setName
(
model
.
getFileName
());
...
...
src/main/java/com/qkdata/aliyun/service/AliyunService.java
View file @
4ee69f40
...
...
@@ -25,6 +25,9 @@ import java.net.URL;
import
java.util.Date
;
import
java.util.Map
;
/**
* 阿里云接口封装
*/
@Service
public
class
AliyunService
{
@Autowired
...
...
@@ -40,6 +43,9 @@ public class AliyunService {
*/
private
long
expireTime
=
60
;
/**
* 初始化
*/
@PostConstruct
private
void
init
(){
if
(
ossClient
==
null
){
...
...
@@ -49,6 +55,10 @@ public class AliyunService {
vodClient
=
initVodClient
();
}
}
/**
* 消毁
*/
@PreDestroy
private
void
clean
(){
if
(
ossClient
!=
null
){
...
...
@@ -59,12 +69,21 @@ public class AliyunService {
}
}
/**
* 初始化vod client
* @return
*/
private
DefaultAcsClient
initVodClient
()
{
DefaultProfile
profile
=
DefaultProfile
.
getProfile
(
aliyunConfig
.
getRegion
(),
aliyunConfig
.
getAccessKeyId
(),
aliyunConfig
.
getAccessKeySecret
());
DefaultAcsClient
client
=
new
DefaultAcsClient
(
profile
);
return
client
;
}
/**
* 获取上传策略参数
* @return
* @throws UnsupportedEncodingException
*/
public
AliyunOSSUploadPolicyModel
getUploadPolicy
()
throws
UnsupportedEncodingException
{
long
expireEndTime
=
System
.
currentTimeMillis
()
+
expireTime
*
1000
;
Date
expiration
=
new
Date
(
expireEndTime
);
...
...
@@ -94,6 +113,11 @@ public class AliyunService {
return
model
;
}
/**
* 生成阿里云oss访问链接
* @param fileName
* @return
*/
public
String
generateUrl
(
String
fileName
)
{
// 设置URL过期时间为1小时。
Date
expiration
=
new
Date
(
new
Date
().
getTime
()
+
expireTime
*
1000
);
...
...
@@ -142,12 +166,22 @@ public class AliyunService {
return
vodClient
.
getAcsResponse
(
request
);
}
/**
*
* @return
*/
public
Map
<
String
,
String
>
getVideoConfig
()
{
Map
<
String
,
String
>
map
=
Maps
.
newConcurrentMap
();
map
.
put
(
"userId"
,
aliyunConfig
.
getUserId
());
map
.
put
(
"region"
,
aliyunConfig
.
getRegion
());
return
map
;
}
/**
* 上传文件
* @param fullFileName
* @param fileInputStream
*/
public
void
uploadFile
(
String
fullFileName
,
InputStream
fileInputStream
){
ossClient
.
putObject
(
aliyunConfig
.
getBucket
(),
fullFileName
,
fileInputStream
);
}
...
...
@@ -156,18 +190,37 @@ public class AliyunService {
return
"https://"
+
aliyunConfig
.
getBucket
()+
"."
+
aliyunConfig
.
getEndpoint
();
}
/**
* 获取视频信息
* @param videoId
* @return
* @throws ClientException
*/
public
GetVideoInfoResponse
getVideoInfo
(
String
videoId
)
throws
ClientException
{
GetVideoInfoRequest
request
=
new
GetVideoInfoRequest
();
request
.
setVideoId
(
videoId
);
return
vodClient
.
getAcsResponse
(
request
);
}
/**
* 获取视频播放信息
* @param videoId
* @return
* @throws ClientException
*/
public
GetPlayInfoResponse
getVideoPlayInfo
(
String
videoId
)
throws
ClientException
{
GetPlayInfoRequest
request
=
new
GetPlayInfoRequest
();
request
.
setVideoId
(
videoId
);
return
vodClient
.
getAcsResponse
(
request
);
}
/**
* 获取视频播认证信息
* @param videoId
* @return
* @throws ClientException
*/
public
GetVideoPlayAuthResponse
getVideoPlayAuth
(
String
videoId
)
throws
ClientException
{
GetVideoPlayAuthRequest
request
=
new
GetVideoPlayAuthRequest
();
request
.
setVideoId
(
videoId
);
...
...
@@ -175,6 +228,11 @@ public class AliyunService {
return
vodClient
.
getAcsResponse
(
request
);
}
/**
* 删除视频
* @param videoId
* @throws ClientException
*/
public
void
removeVideo
(
String
videoId
)
throws
ClientException
{
DeleteMezzaninesRequest
request
=
new
DeleteMezzaninesRequest
();
request
.
setVideoIds
(
videoId
);
...
...
src/main/java/com/qkdata/aliyun/vo/AliyunCallbackRespModel.java
View file @
4ee69f40
...
...
@@ -2,6 +2,9 @@ package com.qkdata.aliyun.vo;
import
lombok.Data
;
/**
* 阿里云OSS回调请求对象
*/
@Data
public
class
AliyunCallbackRespModel
{
private
String
bucket
;
...
...
src/main/java/com/qkdata/aliyun/vo/AliyunOSSUploadPolicyModel.java
View file @
4ee69f40
...
...
@@ -2,6 +2,9 @@ package com.qkdata.aliyun.vo;
import
lombok.Data
;
/**
* 阿里云OSS上传策略对象
*/
@Data
public
class
AliyunOSSUploadPolicyModel
{
private
String
accessId
;
...
...
src/main/java/com/qkdata/aliyun/vo/AliyunVideoCallbackModel.java
View file @
4ee69f40
...
...
@@ -2,6 +2,9 @@ package com.qkdata.aliyun.vo;
import
lombok.Data
;
/**
* 阿里云视频上传回讯请求参数
*/
@Data
public
class
AliyunVideoCallbackModel
{
private
String
Status
;
...
...
src/main/java/com/qkdata/biz/common/BizConstants.java
View file @
4ee69f40
package
com
.
qkdata
.
biz
.
common
;
/**
* 业务常量
*/
public
class
BizConstants
{
/**
* 系统管理员
...
...
src/main/java/com/qkdata/biz/enums/AccountStatusEnum.java
View file @
4ee69f40
...
...
@@ -2,6 +2,9 @@ package com.qkdata.biz.enums;
import
com.baomidou.mybatisplus.annotation.EnumValue
;
/**
* 帐号状态枚举
*/
public
enum
AccountStatusEnum
{
DISABLE
(
0
,
"禁用"
),
ENABLE
(
1
,
"启用"
),
UNACTIVATE
(
2
,
"未激活"
);
...
...
src/main/java/com/qkdata/biz/enums/AccountTypeEnum.java
View file @
4ee69f40
...
...
@@ -2,6 +2,9 @@ package com.qkdata.biz.enums;
import
com.baomidou.mybatisplus.annotation.EnumValue
;
/**
* 状态类型枚举
*/
public
enum
AccountTypeEnum
{
USER
(
0
,
"普通用户"
),
VIP
(
1
,
"会员"
),
ENTERPRISE_VIP
(
2
,
"企业会员"
);
...
...
src/main/java/com/qkdata/biz/enums/CourseAllowEnum.java
View file @
4ee69f40
package
com
.
qkdata
.
biz
.
enums
;
/**
* 课程授权枚举
*/
public
enum
CourseAllowEnum
{
/**
* 全部
...
...
src/main/java/com/qkdata/biz/enums/CourseChargeModelEnum.java
View file @
4ee69f40
package
com
.
qkdata
.
biz
.
enums
;
/**
* 课程付费方式枚举
*/
public
enum
CourseChargeModelEnum
{
/**
* 免费
...
...
src/main/java/com/qkdata/biz/enums/CourseModelEnum.java
View file @
4ee69f40
package
com
.
qkdata
.
biz
.
enums
;
/**
* 课程形态枚举
*/
public
enum
CourseModelEnum
{
/**
* 直播
...
...
src/main/java/com/qkdata/biz/enums/CourseStatusEnum.java
View file @
4ee69f40
package
com
.
qkdata
.
biz
.
enums
;
/**
* 课程状态枚举
*/
public
enum
CourseStatusEnum
{
/**
* 上架
...
...
src/main/java/com/qkdata/biz/enums/CourseTypeEnum.java
View file @
4ee69f40
package
com
.
qkdata
.
biz
.
enums
;
/**
* 课程类型枚举
*/
public
enum
CourseTypeEnum
{
/**
* 单集
...
...
src/main/java/com/qkdata/biz/enums/MenuTypeEnum.java
View file @
4ee69f40
...
...
@@ -2,6 +2,9 @@ package com.qkdata.biz.enums;
import
com.baomidou.mybatisplus.annotation.EnumValue
;
/**
* 菜单类型枚举
*/
public
enum
MenuTypeEnum
{
FOLDER
(
0
,
"目录"
),
MENU
(
1
,
"菜单"
),
BUTTON
(
3
,
"按扭"
);
...
...
src/main/java/com/qkdata/biz/enums/PaySourceEnum.java
View file @
4ee69f40
...
...
@@ -4,8 +4,20 @@ package com.qkdata.biz.enums;
* 支付来源
*/
public
enum
PaySourceEnum
{
/**
* 扫码付
*/
NATIVE
,
/**
* APP内支付
*/
APP
,
/**
* H5支付
*/
MWEB
,
/**
* 微信浏览器内支付
*/
JSAPI
}
src/main/java/com/qkdata/biz/enums/QueryLogTypeEnum.java
View file @
4ee69f40
package
com
.
qkdata
.
biz
.
enums
;
/**
* 审计日志查询条件
*/
public
enum
QueryLogTypeEnum
{
username
,
operation
,
method
,
dayRange
}
src/main/java/com/qkdata/biz/enums/SwiperStatusEnum.java
View file @
4ee69f40
package
com
.
qkdata
.
biz
.
enums
;
/**
* 轮播图状态
*/
public
enum
SwiperStatusEnum
{
ENABLE
,
DISABLE
...
...
src/main/java/com/qkdata/biz/enums/UserPayRecordTypeEnum.java
View file @
4ee69f40
package
com
.
qkdata
.
biz
.
enums
;
/**
* 用户购买记录类型
*/
public
enum
UserPayRecordTypeEnum
{
/**
* 月卡购买
...
...
src/main/java/com/qkdata/biz/enums/UserSexEnum.java
View file @
4ee69f40
package
com
.
qkdata
.
biz
.
enums
;
/**
* 用户性别
*/
public
enum
UserSexEnum
{
/**
* 男
*/
MALE
,
/**
* 女
*/
FEMALE
;
}
src/main/java/com/qkdata/biz/management/mapper/CourseConsumeRecordMapper.java
View file @
4ee69f40
...
...
@@ -21,7 +21,7 @@ import java.util.List;
@Mapper
public
interface
CourseConsumeRecordMapper
extends
BaseMapper
<
CourseConsumeRecordPO
>
{
CourseConsumeRecordModel
queryUserCourseRecord
(
@Param
(
"userId"
)
Long
userId
,
@Param
(
"courseId"
)
Long
courseId
);
CourseConsumeRecordModel
queryUserCourseRecord
Last
(
@Param
(
"userId"
)
Long
userId
,
@Param
(
"courseId"
)
Long
courseId
);
List
<
CourseConsumeRecordModel
>
queryUserRecordPage
(
Page
page
,
@Param
(
"p"
)
QueryConsumeRecordModel
model
);
}
src/main/java/com/qkdata/biz/management/service/CourseConsumeRecordService.java
View file @
4ee69f40
...
...
@@ -18,7 +18,6 @@ import com.qkdata.biz.web.vo.QueryConsumeRecordModel;
import
com.qkdata.biz.web.vo.SaveConsumeRecord
;
import
com.qkdata.common.base.enums.CodeEnum
;
import
com.qkdata.common.base.model.PageResult
;
import
com.qkdata.common.util.UserContext
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Qualifier
;
...
...
@@ -29,7 +28,7 @@ import java.util.List;
/**
* <p>
*
$!{table.comment}
服务类
*
课程观看记录
服务类
* </p>
*
* @author liuyang
...
...
@@ -51,6 +50,10 @@ public class CourseConsumeRecordService extends ServiceImpl<CourseConsumeRecordM
@Autowired
private
ResourceService
resourceService
;
/**
* 批量删除观看记录
* @param ids
*/
public
void
removeBatch
(
List
<
Long
>
ids
)
{
for
(
Long
id
:
ids
){
CourseConsumeRecordPO
po
=
getById
(
id
);
...
...
@@ -63,7 +66,13 @@ public class CourseConsumeRecordService extends ServiceImpl<CourseConsumeRecordM
}
}
public
CourseConsumeRecordModel
findUserCourseRecord
(
Long
userId
,
Long
courseId
)
{
/**
* 查询用户观看某课程最新一条记录
* @param userId
* @param courseId
* @return
*/
public
CourseConsumeRecordModel
findUserCourseRecordLast
(
Long
userId
,
Long
courseId
)
{
//先从缓存取用户观看记录
String
key
=
"record_"
+
userId
+
"_"
+
courseId
;
CourseConsumeRecordModel
model
=
null
;
...
...
@@ -88,13 +97,17 @@ public class CourseConsumeRecordService extends ServiceImpl<CourseConsumeRecordM
model
.
setUpdateTime
(
userRecord
.
getStartTime
());
appendChapterShapshot
(
model
);
}
else
{
model
=
baseMapper
.
queryUserCourseRecord
(
userId
,
courseId
);
model
=
baseMapper
.
queryUserCourseRecord
Last
(
userId
,
courseId
);
appendChapterShapshot
(
model
);
}
return
model
;
}
/**
* 添加视频的封面快照
* @param model
*/
private
void
appendChapterShapshot
(
CourseConsumeRecordModel
model
)
{
if
(
model
==
null
){
return
;
...
...
@@ -111,6 +124,11 @@ public class CourseConsumeRecordService extends ServiceImpl<CourseConsumeRecordM
}
}
/**
* 分页查询用户的观看记录
* @param model
* @return
*/
public
PageResult
<
CourseConsumeRecordModel
>
queryUserRecordPageList
(
QueryConsumeRecordModel
model
)
{
Page
page
=
new
Page
(
model
.
getPageIndex
(),
model
.
getPageSize
());
List
<
CourseConsumeRecordModel
>
list
=
baseMapper
.
queryUserRecordPage
(
page
,
model
);
...
...
src/main/java/com/qkdata/biz/management/service/CourseService.java
View file @
4ee69f40
...
...
@@ -71,6 +71,11 @@ public class CourseService extends ServiceImpl<CourseMapper, CoursePO> {
@Autowired
private
RecommendConfigService
recommendConfigService
;
/**
* 后台-分页查询课程列表
* @param param
* @return
*/
public
PageResult
<
CourseListItemModel
>
queryPageList
(
QueryCourseModel
param
)
{
Page
page
=
new
Page
(
param
.
getPageIndex
(),
param
.
getPageSize
());
List
<
CourseListItemModel
>
list
=
baseMapper
.
queryPageList
(
page
,
param
);
...
...
@@ -85,7 +90,11 @@ public class CourseService extends ServiceImpl<CourseMapper, CoursePO> {
}
/**
* 获取课程详情
* @param id
* @return
*/
public
CourseDetailModel
getCourseDetail
(
Long
id
)
{
CoursePO
po
=
getById
(
id
);
if
(
po
==
null
)
{
...
...
@@ -103,6 +112,10 @@ public class CourseService extends ServiceImpl<CourseMapper, CoursePO> {
return
model
;
}
/**
* 添加该课程是否已被用户收藏
* @param model
*/
private
void
setFavorite
(
CourseDetailModel
model
)
{
if
(
UserContext
.
getUser
()
!=
null
){
UserFavoritesPO
po
=
userFavoritesService
.
findByUserIdAndCourseId
(
UserContext
.
getUserId
(),
model
.
getId
());
...
...
@@ -113,6 +126,10 @@ public class CourseService extends ServiceImpl<CourseMapper, CoursePO> {
}
/**
* 添加课程授权的企业
* @param model
*/
private
void
addOrgInfo
(
CourseDetailModel
model
)
{
if
(
model
.
getAllow
()
==
CourseAllowEnum
.
SPECIFY
){
List
<
CourseAllowEnterpriseModel
>
allowOrgList
=
baseMapper
.
selectOrgListByCourseId
(
model
.
getId
());
...
...
@@ -120,21 +137,37 @@ public class CourseService extends ServiceImpl<CourseMapper, CoursePO> {
}
}
/**
* 添加课程上传的附件
* @param model
*/
private
void
addAttachmentInfo
(
CourseDetailModel
model
)
{
List
<
CourseAttachmentModel
>
attachmentModelList
=
baseMapper
.
selectAttachmentListByCourseId
(
model
.
getId
());
model
.
setAttachmentList
(
attachmentModelList
);
}
/**
* 添加课程的章节列表
* @param model
*/
private
void
addChaperInfo
(
CourseDetailModel
model
)
{
List
<
CourseChaperModel
>
chaperList
=
chaperList
(
model
.
getId
());
model
.
setChaperList
(
chaperList
);
}
/**
* 添加课程的标签
* @param model
*/
private
void
addTags
(
CourseDetailModel
model
)
{
List
<
CourseTagsModel
>
tags
=
tagRelMapper
.
selectModelList
(
model
.
getId
());
model
.
setTagList
(
tags
);
}
/**
* 添加课程所属系列
* @param model
*/
private
void
addSeriesInfo
(
CourseDetailModel
model
)
{
CourseSeriesPO
po
=
seriesMapper
.
selectById
(
model
.
getSeriesId
());
if
(
po
!=
null
)
{
...
...
@@ -142,6 +175,10 @@ public class CourseService extends ServiceImpl<CourseMapper, CoursePO> {
}
}
/**
* 添加课程所属教师信息
* @param model
*/
private
void
addTeacherInfo
(
CourseDetailModel
model
)
{
TeacherPO
teacherPO
=
teacherService
.
getById
(
model
.
getTeacherId
());
if
(
teacherPO
!=
null
)
{
...
...
@@ -151,6 +188,10 @@ public class CourseService extends ServiceImpl<CourseMapper, CoursePO> {
}
}
/**
* 后台-修改章节名称
* @param model
*/
public
void
modifyChaperName
(
ModifyChaperNameModel
model
)
{
CourseChapterPO
po
=
chapterMapper
.
selectById
(
model
.
getChaperId
());
if
(
po
==
null
)
{
...
...
@@ -160,6 +201,10 @@ public class CourseService extends ServiceImpl<CourseMapper, CoursePO> {
chapterMapper
.
updateById
(
po
);
}
/**
* 后台-删除章节
* @param chaperId
*/
@Transactional
public
void
delChaper
(
Long
chaperId
)
{
CourseChapterPO
po
=
chapterMapper
.
selectById
(
chaperId
);
...
...
@@ -183,10 +228,19 @@ public class CourseService extends ServiceImpl<CourseMapper, CoursePO> {
}
/**
* 修改课程状态
* @param model
*/
public
void
modifyStatus
(
ModifyCourseStatusModel
model
)
{
baseMapper
.
updateStatusById
(
model
.
getId
(),
model
.
getStatus
());
}
/**
* 获取课程章节列表
* @param courseId
* @return
*/
public
List
<
CourseChaperModel
>
chaperList
(
Long
courseId
)
{
List
<
CourseChaperModel
>
list
=
Lists
.
newArrayList
();
List
<
CourseChapterPO
>
poList
=
chapterMapper
.
selectList
(
Wrappers
.<
CourseChapterPO
>
lambdaQuery
().
eq
(
CourseChapterPO:
:
getCourseId
,
courseId
).
orderByAsc
(
CourseChapterPO:
:
getSortNo
));
...
...
@@ -205,6 +259,11 @@ public class CourseService extends ServiceImpl<CourseMapper, CoursePO> {
return
list
;
}
/**
* 设置章节对应视频的信息
* @param resourceId
* @param model
*/
private
void
setVideoInfo
(
Long
resourceId
,
CourseChaperModel
model
)
{
ResourcePO
resourcePO
=
resourceService
.
getById
(
resourceId
);
if
(
resourcePO
!=
null
)
{
...
...
@@ -232,18 +291,31 @@ public class CourseService extends ServiceImpl<CourseMapper, CoursePO> {
}
/**
* 后台-分页查询课程系列表表
* @param model
* @return
*/
public
PageResult
<
CourseSeriesPO
>
querySeriesPageList
(
QueryCourseSeriesModel
model
)
{
Page
page
=
new
Page
(
model
.
getPageIndex
(),
model
.
getPageSize
());
List
<
CourseSeriesPO
>
list
=
seriesMapper
.
queryPageList
(
page
,
model
);
return
PageResult
.<
CourseSeriesPO
>
builder
().
code
(
CodeEnum
.
SUCCESS
.
getCode
()).
count
(
page
.
getTotal
()).
data
(
list
).
build
();
}
/**
* 后台-保存课程系列
* @param po
* @return
*/
public
Long
saveSeries
(
CourseSeriesPO
po
)
{
seriesMapper
.
insert
(
po
);
return
po
.
getId
();
}
/**
* 后台-新增或修改课程信息
* @param model
*/
@Transactional
public
void
saveCourse
(
SaveCourseModel
model
)
{
Long
id
=
saveOrUpdateCourseBaseInfo
(
model
);
...
...
@@ -256,6 +328,11 @@ public class CourseService extends ServiceImpl<CourseMapper, CoursePO> {
}
/**
* 新增或修改课程授权的企业信息
* @param courseId
* @param allowOrgIds
*/
private
void
saveOrUpdateOrg
(
Long
courseId
,
List
<
Long
>
allowOrgIds
)
{
if
(
CollUtil
.
isNotEmpty
(
allowOrgIds
)){
allowOrgCourseMapper
.
deleteByCourseId
(
courseId
);
...
...
@@ -268,6 +345,11 @@ public class CourseService extends ServiceImpl<CourseMapper, CoursePO> {
}
}
/**
* 新增或修改课程所属标签
* @param courseId
* @param tagIds
*/
private
void
saveOrUpdateCourseTags
(
Long
courseId
,
List
<
Long
>
tagIds
)
{
if
(
CollUtil
.
isNotEmpty
(
tagIds
)){
tagRelMapper
.
deleteByCourseId
(
courseId
);
...
...
@@ -280,6 +362,11 @@ public class CourseService extends ServiceImpl<CourseMapper, CoursePO> {
}
}
/**
* 新增或修改课程上传的附件
* @param courseId
* @param attachmenIds
*/
private
void
saveCourseAttachment
(
Long
courseId
,
List
<
Long
>
attachmenIds
)
{
if
(
CollUtil
.
isNotEmpty
(
attachmenIds
)){
attachmentMapper
.
deleteByCourseId
(
courseId
);
...
...
@@ -292,6 +379,11 @@ public class CourseService extends ServiceImpl<CourseMapper, CoursePO> {
}
}
/**
* 新增课程的章节列表
* @param courseId
* @param chaperList
*/
private
void
saveCourseChaper
(
Long
courseId
,
List
<
SaveCourseChaperModel
>
chaperList
)
{
if
(
CollUtil
.
isNotEmpty
(
chaperList
)){
for
(
SaveCourseChaperModel
chaperModel
:
chaperList
){
...
...
@@ -320,6 +412,11 @@ public class CourseService extends ServiceImpl<CourseMapper, CoursePO> {
}
}
/**
* 新增或修改课程的基础信息
* @param model
* @return
*/
private
Long
saveOrUpdateCourseBaseInfo
(
SaveCourseModel
model
)
{
CoursePO
po
=
new
CoursePO
();
po
.
setId
(
model
.
getId
());
...
...
@@ -343,6 +440,11 @@ public class CourseService extends ServiceImpl<CourseMapper, CoursePO> {
return
po
.
getId
();
}
/**
* 获取视频信息
* @return
* @throws ClientException
*/
public
VideoInfoModel
getVideoInfo
(
String
videoId
)
throws
ClientException
{
VideoInfoModel
model
=
new
VideoInfoModel
();
GetVideoInfoResponse
response
=
aliyunService
.
getVideoInfo
(
videoId
);
...
...
@@ -353,12 +455,22 @@ public class CourseService extends ServiceImpl<CourseMapper, CoursePO> {
return
model
;
}
/**
* 用户端-搜索课程
* @param model
* @return
*/
public
PageResult
<
SearchCourseResultModel
>
search
(
SearchCourseConditionModel
model
)
{
Page
page
=
new
Page
(
model
.
getPageIndex
(),
model
.
getPageSize
());
List
<
SearchCourseResultModel
>
list
=
baseMapper
.
searchPageList
(
page
,
model
);
addTagAndDuration
(
list
);
return
PageResult
.<
SearchCourseResultModel
>
builder
().
code
(
CodeEnum
.
SUCCESS
.
getCode
()).
count
(
page
.
getTotal
()).
data
(
list
).
build
();
}
/**
* 设置课程所属标签和第一个章节视频时长
* @param list
*/
public
void
addTagAndDuration
(
List
<
SearchCourseResultModel
>
list
){
for
(
SearchCourseResultModel
m
:
list
){
List
<
CourseTagsModel
>
tags
=
tagRelMapper
.
selectModelList
(
m
.
getCourseId
());
...
...
@@ -369,6 +481,12 @@ public class CourseService extends ServiceImpl<CourseMapper, CoursePO> {
}
}
}
/**
* 获取课程授权企业的ID集合
* @param courseId
* @return
*/
public
List
<
Long
>
getAllowEnterpriseList
(
Long
courseId
)
{
List
<
AllowOrgCoursePO
>
enterpriseIdList
=
allowOrgCourseMapper
.
selectList
(
Wrappers
.<
AllowOrgCoursePO
>
lambdaQuery
().
eq
(
AllowOrgCoursePO:
:
getCourseId
,
courseId
));
if
(
CollUtil
.
isNotEmpty
(
enterpriseIdList
)){
...
...
src/main/java/com/qkdata/biz/management/service/TimeTaskService.java
View file @
4ee69f40
...
...
@@ -34,7 +34,7 @@ public class TimeTaskService {
*/
@Scheduled
(
cron
=
"0 0/5 * * * ?"
)
public
void
saveConsumeRecord
(){
log
.
debug
(
"TimeTaskService saveConsumeRecord excute start================="
);
//
log.debug("TimeTaskService saveConsumeRecord excute start=================");
Set
<
String
>
keys
=
redisTemplate
.
opsForHash
().
keys
(
BizConstants
.
CACHE_KE_CONSUME_RECORD
);
List
<
CourseConsumeRecordPO
>
saveList
=
Lists
.
newArrayList
();
for
(
String
key
:
keys
){
...
...
@@ -45,7 +45,7 @@ public class TimeTaskService {
if
(
saveList
.
size
()
>
0
){
recordService
.
saveOrUpdateBatch
(
saveList
);
}
log
.
debug
(
"TimeTaskService saveConsumeRecord excute end================="
);
//
log.debug("TimeTaskService saveConsumeRecord excute end=================");
}
/**
...
...
@@ -53,8 +53,8 @@ public class TimeTaskService {
*/
@Scheduled
(
cron
=
"0 0/1 * * * ?"
)
public
void
checkProductOrder
(){
log
.
debug
(
"TimeTaskService checkProductOrder excute start================="
);
//
log.debug("TimeTaskService checkProductOrder excute start=================");
productOrderService
.
checkProductOrder
();
log
.
debug
(
"TimeTaskService checkProductOrder excute end================="
);
//
log.debug("TimeTaskService checkProductOrder excute end=================");
}
}
src/main/java/com/qkdata/biz/web/controller/MainPageController.java
View file @
4ee69f40
...
...
@@ -83,15 +83,6 @@ public class MainPageController {
return
Result
.
succeed
(
list
);
}
@ApiOperation
(
"获取课程详情"
)
@GetMapping
(
"/course/{id}"
)
@SysLog
(
"获取课程详情"
)
public
Result
<
CourseDetailModel
>
getCourseDetail
(
@PathVariable
Long
id
){
// courseService.checkPerm(id);
CourseDetailModel
model
=
courseService
.
getCourseDetail
(
id
);
return
Result
.
succeed
(
model
);
}
@ApiOperation
(
"获取教师信息"
)
@GetMapping
(
"/teacher/{teacherId}"
)
@SysLog
(
"获取教师信息"
)
...
...
src/main/java/com/qkdata/biz/web/controller/UserCenterController.java
View file @
4ee69f40
package
com
.
qkdata
.
biz
.
web
.
controller
;
import
com.aliyuncs.vod.model.v20170321.GetVideoPlayAuthResponse
;
import
com.google.common.collect.Lists
;
import
com.qkdata.biz.common.BizConstants
;
import
com.qkdata.biz.management.service.CourseConsumeRecordService
;
import
com.qkdata.biz.management.service.CourseService
;
...
...
@@ -144,7 +143,7 @@ public class UserCenterController {
@RequiresRoles
(
value
=
{
BizConstants
.
ROLE_USER
,
BizConstants
.
ROLE_ENTERPRISE_ADMIN
},
logical
=
Logical
.
OR
)
@SysLog
(
"用户观看某课程的记录"
)
public
Result
<
CourseConsumeRecordModel
>
consumeRecordList
(
@RequestParam
Long
courseId
){
CourseConsumeRecordModel
model
=
courseConsumeRecordService
.
findUserCourseRecord
(
UserContext
.
getUserId
(),
courseId
);
CourseConsumeRecordModel
model
=
courseConsumeRecordService
.
findUserCourseRecord
Last
(
UserContext
.
getUserId
(),
courseId
);
return
Result
.
succeed
(
model
);
}
}
src/main/resources/mappers/management/course_consume_recordMapper.xml
View file @
4ee69f40
...
...
@@ -2,7 +2,7 @@
<!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.CourseConsumeRecordMapper"
>
<select
id=
"queryUserCourseRecord"
resultType=
"com.qkdata.biz.web.vo.CourseConsumeRecordModel"
>
<select
id=
"queryUserCourseRecord
Last
"
resultType=
"com.qkdata.biz.web.vo.CourseConsumeRecordModel"
>
SELECT r.id,
r.user_id,
r.course_id,
...
...
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