Commit 4ee69f40 authored by liuyang's avatar liuyang

update

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