Commit fd8db1b2 authored by liuyang's avatar liuyang

暂存

parent 891b94e7
......@@ -37,7 +37,7 @@ public class SwiperConfigController {
@GetMapping("")
@RequiresRoles(value = {BizConstants.ROLE_ADMIN,BizConstants.ROLE_OPERATOR},logical = Logical.OR)
public Result<List<SwiperConfigModel>> list(){
List<SwiperConfigModel> list = swiperConfigService.listConfig();
List<SwiperConfigModel> list = swiperConfigService.listConfig(null);
return Result.succeed(list);
}
@ApiOperation("添加轮播图")
......@@ -61,5 +61,12 @@ public class SwiperConfigController {
swiperConfigService.modifyStatus(model);
return Result.succeed("ok");
}
@ApiOperation("删除配置")
@GetMapping("/remove/{id}")
@RequiresRoles(value = {BizConstants.ROLE_ADMIN,BizConstants.ROLE_OPERATOR},logical = Logical.OR)
public Result<String> remove(@PathVariable Long id){
swiperConfigService.removeById(id);
return Result.succeed("ok");
}
}
package com.qkdata.biz.management.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.qkdata.common.base.entity.BasePO;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 用户收藏课程
* </p>
*
* @author liuyang
* @since 2021-05-28
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("user_favorites")
public class UserFavoritesPO extends BasePO {
private static final long serialVersionUID = 1L;
/**
* 用户ID
*/
private Long userId;
/**
* 课程ID
*/
private Long courseId;
}
package com.qkdata.biz.management.mapper;
import com.qkdata.biz.enums.SwiperStatusEnum;
import com.qkdata.biz.management.entity.SwiperConfigPO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qkdata.biz.management.vo.SwiperConfigModel;
......@@ -18,5 +19,5 @@ import java.util.List;
@Mapper
public interface SwiperConfigMapper extends BaseMapper<SwiperConfigPO> {
List<SwiperConfigModel> listConfig();
List<SwiperConfigModel> listConfig(SwiperStatusEnum status);
}
package com.qkdata.biz.management.mapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.qkdata.biz.management.entity.UserFavoritesPO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qkdata.biz.management.vo.QueryFavoriteCourseModel;
import com.qkdata.biz.web.vo.SearchCourseResultModel;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* <p>
* 用户收藏课程 Mapper 接口
* </p>
*
* @author liuyang
* @since 2021-05-28
*/
@Mapper
public interface UserFavoritesMapper extends BaseMapper<UserFavoritesPO> {
List<SearchCourseResultModel> queryPageList(Page page, @Param("p") QueryFavoriteCourseModel model);
}
......@@ -64,6 +64,8 @@ public class CourseService extends ServiceImpl<CourseMapper, CoursePO> {
private ResourceService resourceService;
@Autowired
private SysUserService sysUserService;
@Autowired
private UserFavoritesService userFavoritesService;
public PageResult<CourseListItemModel> queryPageList(QueryCourseModel param) {
Page page = new Page(param.getPageIndex(), param.getPageSize());
......@@ -173,9 +175,17 @@ public class CourseService extends ServiceImpl<CourseMapper, CoursePO> {
addChaperInfo(model);
addAttachmentInfo(model);
addOrgInfo(model);
setFavorite(model);
return model;
}
private void setFavorite(CourseDetailModel model) {
UserFavoritesPO po = userFavoritesService.findByUserIdAndCourseId(UserContext.getUserId(),model.getId());
if (po != null){
model.setFavorite(true);
}
}
private void addOrgInfo(CourseDetailModel model) {
if (model.getAllow() == CourseAllowEnum.SPECIFY){
List<CourseAllowEnterpriseModel> allowOrgList = baseMapper.selectOrgListByCourseId(model.getId());
......@@ -421,6 +431,14 @@ public class CourseService extends ServiceImpl<CourseMapper, CoursePO> {
String username = UserContext.getUser().getUsername();
FullUserInfo userInfo = sysUserService.findFullUserInfo(username);
List<SearchCourseResultModel> list = baseMapper.searchPageList(page,model,userInfo.getEnterpriseId());
for (SearchCourseResultModel m : list){
List<CourseTagsModel> tags = tagRelMapper.selectModelList(m.getCourseId());
m.setTags(tags);
List<CourseChaperModel> chaperList = chaperList(m.getCourseId());
if (CollUtil.isNotEmpty(chaperList)){
m.setDuration(chaperList.get(0).getDuration());
}
}
return PageResult.<SearchCourseResultModel>builder().code(CodeEnum.SUCCESS.getCode()).count(page.getTotal()).data(list).build();
}
......@@ -468,24 +486,24 @@ public class CourseService extends ServiceImpl<CourseMapper, CoursePO> {
}
}
public String getVideoPlayUrl(Long courseId, Long chaperId) {
CourseChapterPO po = chapterMapper.selectById(chaperId);
if (po != null){
ResourcePO resourcePO = resourceService.getById(po.getResourceId());
if (resourcePO != null && StrUtil.isNotBlank(resourcePO.getVideoId())){
try {
GetPlayInfoResponse response = aliyunService.getVideoPlayInfo(resourcePO.getVideoId());
if (CollUtil.isNotEmpty(response.getPlayInfoList())){
GetPlayInfoResponse.PlayInfo playInfo = response.getPlayInfoList().get(0);
return playInfo.getPlayURL();
}
} catch (ClientException e) {
e.printStackTrace();
}
}
}
return "";
}
// public String getVideoPlayUrl(Long courseId, Long chaperId) {
// CourseChapterPO po = chapterMapper.selectById(chaperId);
// if (po != null){
// ResourcePO resourcePO = resourceService.getById(po.getResourceId());
// if (resourcePO != null && StrUtil.isNotBlank(resourcePO.getVideoId())){
// try {
// GetPlayInfoResponse response = aliyunService.getVideoPlayInfo(resourcePO.getVideoId());
// if (CollUtil.isNotEmpty(response.getPlayInfoList())){
// GetPlayInfoResponse.PlayInfo playInfo = response.getPlayInfoList().get(0);
// return playInfo.getPlayURL();
// }
// } catch (ClientException e) {
// e.printStackTrace();
// }
// }
// }
// return "";
// }
public GetVideoPlayAuthResponse getVideoPlayAuth(Long courseId,Long chaperId){
CourseChapterPO po = chapterMapper.selectById(chaperId);
if (po != null){
......
package com.qkdata.biz.management.service;
import com.qkdata.biz.enums.SwiperStatusEnum;
import com.qkdata.biz.management.entity.SwiperConfigPO;
import com.qkdata.biz.management.mapper.SwiperConfigMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
......@@ -21,8 +22,8 @@ import java.util.List;
@Service
public class SwiperConfigService extends ServiceImpl<SwiperConfigMapper, SwiperConfigPO> {
public List<SwiperConfigModel> listConfig() {
return baseMapper.listConfig();
public List<SwiperConfigModel> listConfig(SwiperStatusEnum status) {
return baseMapper.listConfig(status);
}
public void linkCourse(SwiperLInkCourseModel model) {
......
package com.qkdata.biz.management.service;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qkdata.biz.management.entity.UserFavoritesPO;
import com.qkdata.biz.management.mapper.UserFavoritesMapper;
import com.qkdata.biz.management.vo.QueryFavoriteCourseModel;
import com.qkdata.biz.web.vo.SearchCourseResultModel;
import com.qkdata.common.base.enums.CodeEnum;
import com.qkdata.common.base.model.PageResult;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserFavoritesService extends ServiceImpl<UserFavoritesMapper, UserFavoritesPO> {
public UserFavoritesPO findByUserIdAndCourseId(Long userId, Long courseId) {
return getOne(Wrappers.<UserFavoritesPO>lambdaQuery().eq(UserFavoritesPO::getUserId,userId).eq(UserFavoritesPO::getCourseId,courseId));
}
public void removeByUserIdAndCourseId(Long userId, Long courseId) {
remove(Wrappers.<UserFavoritesPO>lambdaQuery().eq(UserFavoritesPO::getUserId,userId).eq(UserFavoritesPO::getCourseId,courseId));
}
public PageResult<SearchCourseResultModel> queryPageList(QueryFavoriteCourseModel model) {
Page page = new Page(model.getPageIndex(),model.getPageSize());
List<SearchCourseResultModel> list = baseMapper.queryPageList(page,model);
return PageResult.<SearchCourseResultModel>builder().code(CodeEnum.SUCCESS.getCode()).count(page.getTotal()).data(list).build();
}
}
......@@ -77,6 +77,10 @@ public class CourseDetailModel {
* 可见范围(全部、指定企业)
*/
private CourseAllowEnum allow;
/**
* 是否已收藏
*/
private boolean favorite = false;
/**
* 指定企业的列表
*/
......
package com.qkdata.biz.management.vo;
import com.qkdata.common.constants.Constants;
import lombok.Data;
@Data
public class QueryFavoriteCourseModel {
private int pageIndex = Constants.DEFAULT_PAGE;
private int pageSize = Constants.DEFAULT_PAGE_SIZE;
private Long userId;
}
......@@ -2,8 +2,8 @@ package com.qkdata.biz.web.controller;
import com.aliyuncs.vod.model.v20170321.GetVideoPlayAuthResponse;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.qkdata.biz.aliyun.service.AliyunService;
import com.qkdata.biz.common.BizConstants;
import com.qkdata.biz.enums.SwiperStatusEnum;
import com.qkdata.biz.management.entity.CourseTagPO;
import com.qkdata.biz.management.service.CourseService;
import com.qkdata.biz.management.service.CourseTagService;
......@@ -14,6 +14,7 @@ import com.qkdata.biz.management.vo.RecommendConfigModel;
import com.qkdata.biz.management.vo.SwiperConfigModel;
import com.qkdata.biz.web.service.UserCenterService;
import com.qkdata.biz.web.vo.MainPageModel;
import com.qkdata.biz.web.vo.SaveFavoriteCourseModel;
import com.qkdata.biz.web.vo.SearchCourseConditionModel;
import com.qkdata.biz.web.vo.SearchCourseResultModel;
import com.qkdata.common.annotation.SysLog;
......@@ -49,7 +50,7 @@ public class MainPageController {
@GetMapping("")
@RequiresRoles(value = {BizConstants.ROLE_USER,BizConstants.ROLE_ENTERPRISE_ADMIN},logical = Logical.OR)
public Result<MainPageModel> get(){
List<SwiperConfigModel> swiperConfigModels = swiperConfigService.listConfig();
List<SwiperConfigModel> swiperConfigModels = swiperConfigService.listConfig(SwiperStatusEnum.ENABLE);
List<CourseTagPO> tagList = courseTagService.list(Wrappers.<CourseTagPO>lambdaQuery().eq(CourseTagPO::getRecommend,true));
List<RecommendConfigModel> recommendConfigList = recommendConfigService.listConfig();
MainPageModel model = new MainPageModel();
......@@ -93,6 +94,24 @@ public class MainPageController {
CourseDetailModel model = courseService.getCourseDetail(id);
return Result.succeed(model);
}
@ApiOperation("收藏课程")
@PostMapping("/course/favorite")
@RequiresRoles(value = {BizConstants.ROLE_USER,BizConstants.ROLE_ENTERPRISE_ADMIN},logical = Logical.OR)
@SysLog("收藏课程")
public Result<String> favoriteCourse(@RequestBody SaveFavoriteCourseModel model){
userCenterService.favoriteCourse(model.getCourseId());
return Result.succeed("ok");
}
@ApiOperation("取消收藏")
@PostMapping("/course/removeFavorite")
@RequiresRoles(value = {BizConstants.ROLE_USER,BizConstants.ROLE_ENTERPRISE_ADMIN},logical = Logical.OR)
@SysLog("取消收藏")
public Result<String> removeFavoriteCourse(@RequestBody SaveFavoriteCourseModel model){
userCenterService.removeFavoriteCourse(model.getCourseId());
return Result.succeed("ok");
}
@ApiOperation("获取视频播放凭证")
@GetMapping("/course/playVideo")
@RequiresRoles(value = {BizConstants.ROLE_USER,BizConstants.ROLE_ENTERPRISE_ADMIN},logical = Logical.OR)
......
package com.qkdata.biz.web.controller;
import com.qkdata.biz.common.BizConstants;
import com.qkdata.biz.sys.service.SysUserService;
import com.qkdata.biz.web.service.UserCenterService;
import com.qkdata.biz.web.vo.FullUserInfo;
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 com.qkdata.common.util.UserContext;
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/userCenter")
public class UserCenterController {
@Autowired
private UserCenterService userCenterService;
@Autowired
private SysUserService sysUserService;
@ApiOperation("获取个人信息")
@GetMapping("/userInfo")
@RequiresRoles(value = {BizConstants.ROLE_USER,BizConstants.ROLE_ENTERPRISE_ADMIN},logical = Logical.OR)
public Result<FullUserInfo> userInfo(){
String username = UserContext.getUser().getUsername();
FullUserInfo userInfo = sysUserService.findFullUserInfo(username);
return Result.succeed(userInfo);
}
@ApiOperation("获取收藏列表")
@GetMapping("/myFavorite/list")
@RequiresRoles(value = {BizConstants.ROLE_USER,BizConstants.ROLE_ENTERPRISE_ADMIN},logical = Logical.OR)
public PageResult<SearchCourseResultModel> myFavoriteList(){
return userCenterService.myFavoriteQueryPageList();
}
@ApiOperation("删除收藏")
@PostMapping("/myFavorite/remove")
@RequiresRoles(value = {BizConstants.ROLE_USER,BizConstants.ROLE_ENTERPRISE_ADMIN},logical = Logical.OR)
@SysLog("删除收藏")
public Result<String> removeFavorite(@RequestBody List<Long> courseIds){
userCenterService.removeFavorite(courseIds);
return Result.succeed("ok");
}
}
......@@ -6,13 +6,19 @@ import com.qkdata.biz.enums.CourseChargeModelEnum;
import com.qkdata.biz.enums.CourseStatusEnum;
import com.qkdata.biz.enums.UserPayRecordTypeEnum;
import com.qkdata.biz.management.entity.CoursePO;
import com.qkdata.biz.management.entity.UserFavoritesPO;
import com.qkdata.biz.management.entity.UserGetVipRecordPO;
import com.qkdata.biz.management.mapper.UserFavoritesMapper;
import com.qkdata.biz.management.service.CourseService;
import com.qkdata.biz.management.service.UserFavoritesService;
import com.qkdata.biz.management.service.UserGetVipRecordService;
import com.qkdata.biz.management.vo.QueryFavoriteCourseModel;
import com.qkdata.biz.sys.service.SysUserService;
import com.qkdata.biz.web.vo.FullUserInfo;
import com.qkdata.biz.web.vo.SearchCourseResultModel;
import com.qkdata.common.base.entity.BasePO;
import com.qkdata.common.base.exception.BusinessException;
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;
......@@ -30,6 +36,8 @@ public class UserCenterService {
private CourseService courseService;
@Autowired
private UserGetVipRecordService userGetVipRecordService;
@Autowired
private UserFavoritesService userFavoritesService;
/**
* 验证当前登陆用户是否有播放该课程和章节的权限
......@@ -95,4 +103,33 @@ public class UserCenterService {
}
public void favoriteCourse(Long courseId) {
Long userId = UserContext.getUserId();
UserFavoritesPO po = userFavoritesService.findByUserIdAndCourseId(userId,courseId);
if (po == null){
po = new UserFavoritesPO();
po.setUserId(userId);
po.setCourseId(courseId);
userFavoritesService.save(po);
}
}
public void removeFavoriteCourse(Long courseId) {
Long userId = UserContext.getUserId();
userFavoritesService.removeByUserIdAndCourseId(userId,courseId);
}
public PageResult<SearchCourseResultModel> myFavoriteQueryPageList() {
QueryFavoriteCourseModel model = new QueryFavoriteCourseModel();
model.setUserId(UserContext.getUserId());
return userFavoritesService.queryPageList(model);
}
public void removeFavorite(List<Long> courseIds) {
Long userId = UserContext.getUserId();
for (Long courseId : courseIds){
userFavoritesService.removeByUserIdAndCourseId(userId,courseId);
}
}
}
package com.qkdata.biz.web.vo;
import lombok.Data;
@Data
public class SaveFavoriteCourseModel {
private Long courseId;
}
......@@ -9,4 +9,5 @@ public class SearchCourseConditionModel {
private int pageSize = Constants.DEFAULT_PAGE_SIZE;
private String courseName;
private Long tagId;
private Long teacherId;
}
......@@ -2,6 +2,7 @@ package com.qkdata.biz.web.vo;
import com.qkdata.biz.enums.CourseChargeModelEnum;
import com.qkdata.biz.management.entity.CourseTagPO;
import com.qkdata.biz.management.vo.CourseTagsModel;
import lombok.Data;
import java.util.List;
......@@ -13,6 +14,6 @@ public class SearchCourseResultModel {
private CourseChargeModelEnum chargeModel;
private Float duration;
private String courseLogoUrl;
private List<CourseTagPO> tags;
private List<CourseTagsModel> tags;
}
......@@ -58,7 +58,8 @@
c.id course_id,
c.`name` course_name,
c.charge_model,
c.logo_url course_logo_url
c.logo_url course_logo_url,
c.teacher_id
FROM
course c
WHERE
......@@ -70,7 +71,8 @@
c.id course_id,
c.`name` course_name,
c.charge_model,
c.logo_url course_logo_url
c.logo_url course_logo_url,
c.teacher_id
FROM
course c
INNER JOIN allow_org_course o ON c.id = o.course_id
......@@ -88,5 +90,8 @@
<if test="p.tagId != null">
and r.tag_id = #{p.tagId}
</if>
<if test="p.teacherId != null">
and tmp.teacher_id = #{p.teacherId}
</if>
</select>
</mapper>
......@@ -7,8 +7,10 @@
s.`name` course_name
from swiper_config c
INNER JOIN course s on c.course_id = s.id
and c.status = 'ENABLE'
and s.status = 'UP'
<if test="status != null">
and c.status = #{status}
</if>
ORDER BY c.sort_no ASC
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.qkdata.biz.management.mapper.UserFavoritesMapper">
<select id="queryPageList" resultType="com.qkdata.biz.web.vo.SearchCourseResultModel">
SELECT
c.id course_id,
c.`name` course_name,
c.charge_model,
c.logo_url course_logo_url
FROM
course c
inner join user_favorites f on c.id = f.course_id
WHERE
c.is_del = 0
and c.status = 'UP'
</select>
</mapper>
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