Commit 987ff803 authored by liuyang's avatar liuyang

fixed bug

parent fd8db1b2
......@@ -43,11 +43,13 @@ public class MainPageTagConfigController {
@ApiOperation("添加标签")
@PostMapping("/add")
@RequiresRoles(value = {BizConstants.ROLE_ADMIN,BizConstants.ROLE_OPERATOR},logical = Logical.OR)
public Result<String> add(@RequestBody AddMainPageTagConfigModel model){
CourseTagPO po = new CourseTagPO();
po.setId(model.getTagId());
po.setRecommend(true);
tagService.updateById(po);
public Result<String> add(@RequestBody List<Long> tagIds){
for (Long tagId : tagIds){
CourseTagPO po = new CourseTagPO();
po.setId(tagId);
po.setRecommend(true);
tagService.updateById(po);
}
return Result.succeed("ok");
}
@ApiOperation("删除标签")
......
......@@ -3,7 +3,12 @@ package com.qkdata.biz.management.controller;
import com.qkdata.biz.common.BizConstants;
import com.qkdata.biz.management.entity.RecommendConfigPO;
import com.qkdata.biz.management.service.CourseService;
import com.qkdata.biz.management.service.RecommendConfigService;
import com.qkdata.biz.management.vo.CourseListItemModel;
import com.qkdata.biz.management.vo.QueryCourseModel;
import com.qkdata.biz.management.vo.RecommendConfigModel;
import com.qkdata.common.base.model.PageResult;
import com.qkdata.common.base.model.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
......@@ -13,6 +18,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.stream.Collectors;
/**
* <p>
......@@ -29,18 +35,33 @@ public class RecommendConfigController {
@Autowired
private RecommendConfigService configService;
@Autowired
private CourseService courseService;
@ApiOperation("待选课程列表")
@PostMapping("/select")
@RequiresRoles(value = {BizConstants.ROLE_ADMIN,BizConstants.ROLE_OPERATOR},logical = Logical.OR)
public PageResult<CourseListItemModel> select(@RequestBody QueryCourseModel model){
List<RecommendConfigPO> list = configService.list();
List<Long> courseIds = list.stream().map(RecommendConfigPO::getCourseId).collect(Collectors.toList());
model.setNotInIdList(courseIds);
return courseService.queryPageList(model);
}
@ApiOperation("获取推荐列表")
@GetMapping("/list")
@RequiresRoles(value = {BizConstants.ROLE_ADMIN,BizConstants.ROLE_OPERATOR},logical = Logical.OR)
public Result<List<RecommendConfigPO>> list(){
return Result.succeed(configService.list());
public Result<List<RecommendConfigModel>> list(){
return Result.succeed(configService.listConfig());
}
@ApiOperation("添加推荐")
@PostMapping("/add")
@RequiresRoles(value = {BizConstants.ROLE_ADMIN,BizConstants.ROLE_OPERATOR},logical = Logical.OR)
public Result<String> add(@RequestBody RecommendConfigPO po){
configService.save(po);
public Result<String> add(@RequestBody List<RecommendConfigPO> list){
for (RecommendConfigPO po : list){
configService.save(po);
}
return Result.succeed("ok");
}
@ApiOperation("删除推荐")
......
package com.qkdata.biz.management.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.qkdata.biz.enums.CourseStatusEnum;
import com.qkdata.biz.management.entity.CoursePO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qkdata.biz.management.vo.CourseAllowEnterpriseModel;
import com.qkdata.biz.management.vo.CourseAttachmentModel;
import com.qkdata.biz.management.vo.CourseListItemModel;
......@@ -34,5 +34,9 @@ public interface CourseMapper extends BaseMapper<CoursePO> {
List<CourseAllowEnterpriseModel> selectOrgListByCourseId(Long id);
List<SearchCourseResultModel> searchPageList(Page page, @Param("p") SearchCourseConditionModel model,@Param("enterpriseId") Long enterpriseId);
List<SearchCourseResultModel> searchPageList(Page page, @Param("p") SearchCourseConditionModel model);
List<SearchCourseResultModel> recommendList(Page page, @Param("p") SearchCourseConditionModel model);
List<CoursePO> findListByTags(List<Long> tagIds);
}
package com.qkdata.biz.management.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.qkdata.biz.management.entity.CourseTagPO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qkdata.biz.management.vo.CourseTagsModel;
import com.qkdata.biz.management.vo.QueryCourseTagModel;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
......@@ -22,5 +23,5 @@ public interface CourseTagMapper extends BaseMapper<CourseTagPO> {
List<CourseTagPO> queryPageList(Page page, @Param("p") QueryCourseTagModel param);
List<CourseTagPO> selectListByCourseId(Long courseId);
List<CourseTagsModel> selectListByCourseId(Long courseId);
}
package com.qkdata.biz.management.mapper;
import com.qkdata.biz.management.entity.RecommendConfigPO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qkdata.biz.management.entity.RecommendConfigPO;
import com.qkdata.biz.management.vo.RecommendConfigModel;
import org.apache.ibatis.annotations.Mapper;
......
......@@ -3,7 +3,6 @@ package com.qkdata.biz.management.service;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.vod.model.v20170321.GetPlayInfoResponse;
import com.aliyuncs.vod.model.v20170321.GetVideoInfoResponse;
import com.aliyuncs.vod.model.v20170321.GetVideoPlayAuthResponse;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
......@@ -66,101 +65,23 @@ public class CourseService extends ServiceImpl<CourseMapper, CoursePO> {
private SysUserService sysUserService;
@Autowired
private UserFavoritesService userFavoritesService;
@Autowired
private RecommendConfigService recommendConfigService;
public PageResult<CourseListItemModel> queryPageList(QueryCourseModel param) {
Page page = new Page(param.getPageIndex(), param.getPageSize());
List<CourseListItemModel> list = baseMapper.queryPageList(page, param);
for (CourseListItemModel course : list) {
List<CourseTagPO> tagsList = tagService.findListByCourseId(course.getId());
List<CourseTagsModel> tagsList = tagService.findListByCourseId(course.getId());
if (CollUtil.isNotEmpty(tagsList)) {
List<String> tagNameList = tagsList.stream().map(CourseTagPO::getName).collect(Collectors.toList());
List<String> tagNameList = tagsList.stream().map(CourseTagsModel::getTagName).collect(Collectors.toList());
course.setTags(tagNameList);
}
}
return PageResult.<CourseListItemModel>builder().code(CodeEnum.SUCCESS.getCode()).count(page.getTotal()).data(list).build();
}
// @Transactional
// public Long saveStep1(CourseStep1SaveModel model) {
// CoursePO po = convertToPO(model);
// if (po.getId() == null){
// save(po);
// }else {
// updateById(po);
// }
//
// if (CollUtil.isNotEmpty(model.getTagIds())){
// updateCourseTags(po.getId(),model.getTagIds());
// }
// if (model.getAllow() == CourseAllowEnum.SPECIFY){
// updateCourseAllowOrg(po.getId(),model.getAllowOrgIds());
// }
// return po.getId();
// }
// private void updateCourseAllowOrg(Long id, List<Long> allowOrgIds) {
// //TODO
// }
//
// private void updateCourseTags(Long id, List<Long> tagIds) {
// //TODO
// }
// private CoursePO convertToPO(CourseStep1SaveModel model) {
// CoursePO po = new CoursePO();
// po.setId(model.getId());
// po.setName(model.getName());
// po.setType(model.getType());
// po.setIntroduce(model.getIntroduce());
// po.setDetail(model.getDetail());
// po.setLogoUrl(model.getLogoUrl());
// po.setStatus(CourseStatusEnum.UP);
// po.setTeacherId(model.getTeacherId());
// po.setChargeModel(model.getChargeModel());
// if (po.getChargeModel() == CourseChargeModelEnum.PAY) {
// po.setPrice(model.getPrice());
// po.setValidPeriod(model.getValidPeriod());
// po.setVipPrice(model.getVipPrice());
// }
// po.setModel(CourseModelEnum.VOD);
// po.setAllow(model.getAllow());
// po.setSeriesId(model.getSeriesId());
// return po;
// }
// @Transactional
// public void saveStep2(CourseStep2SaveModel model) {
// try {
// Long resourceId = saveToResource(model.getVideoId());
// CourseChapterPO po = new CourseChapterPO();
// po.setCourseId(model.getCourseId());
// po.setName(model.getChaperName());
// po.setResourceId(resourceId);
// po.setSortNo(model.getSortNo());
// chapterMapper.insert(po);
// } catch (ClientException e) {
// throw new BusinessException("获取视频信息错误");
// }
//
//
// }
//
// private Long saveToResource(String videoId) throws ClientException {
// //根据视频ID,获取视频信息
// GetVideoInfoResponse videoInfoResponse = aliyunService.getVideoInfo(videoId);
// Float duration = videoInfoResponse.getVideo().getDuration();
// Long size = videoInfoResponse.getVideo().getSize();
// String title = videoInfoResponse.getVideo().getTitle();
// ResourcePO po = resourceService.getByVideoId(videoId);
// if (po == null) {
// po = new ResourcePO();
// }
// po.setName(title);
// po.setSize(size);
// po.setVideoDuration(duration);
// resourceService.saveOrUpdate(po);
// return po.getId();
// }
public CourseDetailModel getCourseDetail(Long id) {
CoursePO po = getById(id);
......@@ -428,9 +349,7 @@ public class CourseService extends ServiceImpl<CourseMapper, CoursePO> {
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());
List<SearchCourseResultModel> list = baseMapper.searchPageList(page,model);
for (SearchCourseResultModel m : list){
List<CourseTagsModel> tags = tagRelMapper.selectModelList(m.getCourseId());
m.setTags(tags);
......@@ -519,79 +438,58 @@ public class CourseService extends ServiceImpl<CourseMapper, CoursePO> {
}
return null;
}
private List<CoursePO> findListByTags(List<Long> tagIds){
return baseMapper.findListByTags(tagIds);
}
/**
* 推荐课程列表
* 根据课程标签关联推荐课程列表
* 默认推荐4个课程
* 优先推荐相同系列下的其它课程
* 如果相同系列下没有其它课程,则随机推荐其它课程
* 优先推荐相同标签下的其它课程
* 如果相同标签下没有其它课程,则随机推荐其它课程
* 注意过滤指定企业可见范围的课程
* @return
*/
public List<RecommendConfigModel> recommend(Long courseId) {
public List<SearchCourseResultModel> relationRecommend(Long courseId) {
CoursePO coursePO = getById(courseId);
if (coursePO != null){
throw new BusinessException("请求错误,课程不存在");
}
List<RecommendConfigModel> resultList = Lists.newArrayList();
Long seriesId = coursePO.getSeriesId();
Long enterpriseId = sysUserService.getCurrentUserEnterpriseId();
List<CoursePO> sameSeriesCourseList = list(Wrappers.<CoursePO>lambdaQuery().eq(CoursePO::getSeriesId,seriesId).eq(CoursePO::getStatus,CourseStatusEnum.UP));
for (CoursePO course : sameSeriesCourseList){
if (course.getAllow() == CourseAllowEnum.SPECIFY){
List<Long> orgIds = getAllowEnterpriseList(courseId);
boolean hasPerm = false;
for (Long orgId : orgIds){
if (enterpriseId != null){
if (orgId.longValue() == enterpriseId.longValue()){
hasPerm = true;
break;
}
}
}
if (hasPerm){
RecommendConfigModel model = new RecommendConfigModel();
model.setCourseId(courseId);
model.setCourseName(course.getName());
model.setCourseLogoUrl(course.getLogoUrl());
model.setChargeModel(course.getChargeModel());
model.setAllow(course.getAllow());
resultList.add(model);
}else {
continue;
}
List<SearchCourseResultModel> resultList = Lists.newArrayList();
List<CourseTagsModel> courseTagsModelList = tagService.findListByCourseId(courseId);
List<Long> tagIds = courseTagsModelList.stream().map(CourseTagsModel::getTagId).collect(Collectors.toList());
List<CoursePO> courseList = findListByTags(tagIds);
int index = 0;
for (CoursePO course : courseList){
if (index == 3){
break;
}else {
RecommendConfigModel model = new RecommendConfigModel();
model.setCourseId(courseId);
SearchCourseResultModel model = new SearchCourseResultModel();
model.setCourseId(course.getId());
model.setCourseName(course.getName());
model.setCourseLogoUrl(course.getLogoUrl());
model.setChargeModel(course.getChargeModel());
model.setAllow(course.getAllow());
resultList.add(model);
index++;
}
if (resultList.size() == 4){
break;
}
}
if (resultList.size() < 4){
int diff = 4 - resultList.size();
List<Long> ids = resultList.stream().map(RecommendConfigModel::getCourseId).collect(Collectors.toList());
List<CoursePO> courseList = list(Wrappers.<CoursePO>lambdaQuery()
List<Long> ids = resultList.stream().map(SearchCourseResultModel::getCourseId).collect(Collectors.toList());
courseList = list(Wrappers.<CoursePO>lambdaQuery()
.notIn(CoursePO::getId,ids)
.eq(CoursePO::getStatus,CourseStatusEnum.UP)
.eq(CoursePO::getAllow,CourseAllowEnum.ALL)
.last("limit "+diff));
for (CoursePO course : courseList){
RecommendConfigModel model = new RecommendConfigModel();
model.setCourseId(courseId);
SearchCourseResultModel model = new SearchCourseResultModel();
model.setCourseId(course.getId());
model.setCourseName(course.getName());
model.setCourseLogoUrl(course.getLogoUrl());
model.setChargeModel(course.getChargeModel());
model.setAllow(course.getAllow());
resultList.add(model);
}
}
for (RecommendConfigModel model : resultList){
List<CourseTagPO> tagList = tagService.findListByCourseId(model.getCourseId());
for (SearchCourseResultModel model : resultList){
List<CourseTagsModel> tagList = tagService.findListByCourseId(model.getCourseId());
model.setTags(tagList);
List<CourseChaperModel> chaperList = chaperList(model.getCourseId());
if (CollUtil.isNotEmpty(chaperList)){
......@@ -603,7 +501,26 @@ public class CourseService extends ServiceImpl<CourseMapper, CoursePO> {
}
}
}
return resultList;
}
public PageResult<SearchCourseResultModel> mainPageRecommendList(SearchCourseConditionModel model) {
Page page = new Page(model.getPageIndex(),model.getPageSize());
List<SearchCourseResultModel> list = baseMapper.recommendList(page,model);
for (SearchCourseResultModel recommend : list){
List<CourseTagsModel> tagList = tagService.findListByCourseId(recommend.getCourseId());
recommend.setTags(tagList);
List<CourseChaperModel> chaperList = chaperList(recommend.getCourseId());
if (CollUtil.isNotEmpty(chaperList)){
CourseChaperModel chaperModel = chaperList.get(0);
ResourcePO resourcePO = resourceService.getById(chaperModel.getResourceId());
if (resourcePO != null){
recommend.setDuration(resourcePO.getVideoDuration());
}
}
}
return PageResult.<SearchCourseResultModel>builder().code(CodeEnum.SUCCESS.getCode()).count(page.getTotal()).data(list).build();
}
}
\ No newline at end of file
......@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.qkdata.biz.management.entity.CourseTagPO;
import com.qkdata.biz.management.mapper.CourseTagMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qkdata.biz.management.vo.CourseTagsModel;
import com.qkdata.biz.management.vo.QueryCourseTagModel;
import com.qkdata.common.base.enums.CodeEnum;
import com.qkdata.common.base.model.PageResult;
......@@ -28,7 +29,7 @@ public class CourseTagService extends ServiceImpl<CourseTagMapper, CourseTagPO>
return PageResult.<CourseTagPO>builder().code(CodeEnum.SUCCESS.getCode()).count(page.getTotal()).data(pageList).build();
}
public List<CourseTagPO> findListByCourseId(Long courseId) {
public List<CourseTagsModel> findListByCourseId(Long courseId) {
return baseMapper.selectListByCourseId(courseId);
}
}
\ No newline at end of file
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.ResourcePO;
import com.qkdata.biz.management.mapper.RecommendConfigMapper;
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 java.util.List;
......@@ -32,52 +20,11 @@ import java.util.List;
@Slf4j
@Service
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;
return modelList;
}
}
\ No newline at end of file
package com.qkdata.biz.management.vo;
import com.qkdata.biz.enums.CourseAllowEnum;
import com.qkdata.biz.enums.CourseChargeModelEnum;
import com.qkdata.biz.enums.CourseStatusEnum;
import com.qkdata.common.constants.Constants;
import lombok.Data;
import java.util.List;
@Data
public class QueryCourseModel {
private int pageIndex = Constants.DEFAULT_PAGE;
......@@ -25,4 +28,12 @@ public class QueryCourseModel {
* 课程状态
*/
private CourseStatusEnum status;
/**
* 可见范围
*/
private CourseAllowEnum allow;
/**
* 不包含课程ID列表
*/
private List<Long> notInIdList;
}
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 id;
private Long courseId;
/**
* 课程名称
*/
private String courseName;
/**
* 课程封面url
*/
private String courseLogoUrl;
/**
* 收费模式
*/
private CourseChargeModelEnum chargeModel;
/**
* 视频时长
*/
private Float duration;
/**
* 标签
*/
private List<CourseTagPO> tags;
/**
* 可见范围
*/
private CourseAllowEnum allow;
}
......@@ -5,6 +5,7 @@ import lombok.Data;
@Data
public class SwiperConfigModel {
private Long id;
/**
* 封面图片url
*/
......
......@@ -10,7 +10,6 @@ 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.RecommendConfigModel;
import com.qkdata.biz.management.vo.SwiperConfigModel;
import com.qkdata.biz.web.service.UserCenterService;
import com.qkdata.biz.web.vo.MainPageModel;
......@@ -52,14 +51,18 @@ public class MainPageController {
public Result<MainPageModel> get(){
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();
model.setTags(tagList);
model.setSwiperConfigs(swiperConfigModels);
model.setRecommendConfigs(recommendConfigList);
return Result.succeed(model);
}
@ApiOperation("首页推存课程列表")
@PostMapping("/course/recommend/list")
@RequiresRoles(value = {BizConstants.ROLE_USER,BizConstants.ROLE_ENTERPRISE_ADMIN},logical = Logical.OR)
public PageResult<SearchCourseResultModel> recommendCourseList(@RequestBody SearchCourseConditionModel model){
return courseService.mainPageRecommendList(model);
}
@ApiOperation("搜索课程")
@PostMapping("/course/search")
......@@ -77,11 +80,11 @@ public class MainPageController {
return Result.succeed(tags);
}
@ApiOperation("获取推荐课程")
@ApiOperation("详情页关联课程推荐")
@GetMapping("/course/recommend/{courseId}")
@RequiresRoles(value = {BizConstants.ROLE_USER,BizConstants.ROLE_ENTERPRISE_ADMIN},logical = Logical.OR)
public Result<List<RecommendConfigModel>> courseRecommend(Long courseId){
List<RecommendConfigModel> list = courseService.recommend(courseId);
public Result<List<SearchCourseResultModel>> courseRecommend(Long courseId){
List<SearchCourseResultModel> list = courseService.relationRecommend(courseId);
return Result.succeed(list);
}
......
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;
......@@ -11,5 +10,4 @@ import java.util.List;
public class MainPageModel {
List<SwiperConfigModel> swiperConfigs;
List<CourseTagPO> tags;
List<RecommendConfigModel> recommendConfigs;
}
......@@ -28,6 +28,15 @@
<if test="p.status != null">
AND c.`status` = #{p.status}
</if>
<if test="p.allow != null">
and c.allow = #{p.allow}
</if>
<if test="p.notInIdList != null and p.notInIdList.size > 0">
and c.id not in
<foreach collection="p.notInIdList" item="item" separator="," open="(" close=")">
#{item}
</foreach>
</if>
ORDER BY c.create_time DESC
</select>
......@@ -50,48 +59,52 @@
WHERE r.course_id = #{id}
</select>
<select id="searchPageList" resultType="com.qkdata.biz.web.vo.SearchCourseResultModel">
SELECT
*
SELECT DISTINCT
c.id course_id,
c.`name` course_name,
c.charge_model,
c.logo_url course_logo_url,
c.teacher_id
FROM
(
SELECT
c.id course_id,
c.`name` course_name,
c.charge_model,
c.logo_url course_logo_url,
c.teacher_id
FROM
course c
WHERE
c.is_del = 0
AND c.allow = 'ALL'
and c.status = 'UP'
UNION
SELECT
c.id course_id,
c.`name` course_name,
c.charge_model,
c.logo_url course_logo_url,
c.teacher_id
FROM
course c
INNER JOIN allow_org_course o ON c.id = o.course_id
WHERE
c.is_del = 0
and c.status = 'UP'
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
course c
LEFT JOIN course_tag_rel r on c.id = r.course_id
WHERE
c.is_del = 0
AND c.allow = 'ALL'
AND c.`status` = 'UP'
<if test="p.courseName != null and p.courseName != ''">
and tmp.course_name like concat ('%',#{p.courseName},'%')
and c.`name` like concat ('%',#{p.courseName},'%')
</if>
<if test="p.tagId != null">
and r.tag_id = #{p.tagId}
</if>
<if test="p.teacherId != null">
and tmp.teacher_id = #{p.teacherId}
and c.teacher_id = #{p.teacherId}
</if>
</select>
<select id="recommendList" resultType="com.qkdata.biz.web.vo.SearchCourseResultModel">
SELECT c.id course_id,
c.`name` course_name,
c.logo_url course_logo_url,
c.charge_model,
c.allow
from course c
LEFT JOIN recommend_config r on r.course_id = c.id
WHERE c.is_del = 0
and c.`status` = 'UP'
and c.allow = 'ALL'
ORDER BY r.sort_no ASC,c.create_time DESC
</select>
<select id="findListByTags" resultType="com.qkdata.biz.management.entity.CoursePO">
SELECT c.*
FROM course c
INNER JOIN course_tag_rel r on c.id = r.course_id
WHERE c.is_del = 0
and c.`status` = 'UP'
and c.allow = 'ALL'
and r.tag_id in
<foreach collection="tagIds" item="tagId" open="(" close=")" separator=",">
#{tagId}
</foreach>
</select>
</mapper>
......@@ -12,8 +12,10 @@
and recommend = 0
</if>
</select>
<select id="selectListByCourseId" resultType="com.qkdata.biz.management.entity.CourseTagPO">
select t.*
<select id="selectListByCourseId" resultType="com.qkdata.biz.management.vo.CourseTagsModel">
select t.id tag_id,
t.`name` tag_name,
r.course_id
from course_tag t
inner join course_tag_rel r on t.id = r.tag_id
where r.course_id = #{courseId}
......
......@@ -3,14 +3,12 @@
<mapper namespace="com.qkdata.biz.management.mapper.RecommendConfigMapper">
<select id="listConfig" resultType="com.qkdata.biz.management.vo.RecommendConfigModel">
SELECT c.id course_id,
SELECT r.id,
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
and c.status = 'UP'
ORDER BY cfg.sort_no ASC
c.logo_url course_logo_url
from course c
INNER JOIN recommend_config r on c.id = r.course_id
</select>
</mapper>
......@@ -7,7 +7,6 @@
s.`name` course_name
from swiper_config c
INNER JOIN course s on c.course_id = s.id
and s.status = 'UP'
<if test="status != null">
and c.status = #{status}
</if>
......
package com.qkdata.autogenerator;
import cn.hutool.core.util.RandomUtil;
public class Test {
public static void main(String[] args) {
System.out.println(RandomUtil.randomString(32));
}
}
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