package com.xinquan.course.controller.client;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.xinquan.common.core.domain.R;
import com.xinquan.common.core.utils.page.BeanUtils;
import com.xinquan.common.core.utils.page.CollUtils;
import com.xinquan.common.core.utils.page.PageDTO;
import com.xinquan.common.security.utils.SecurityUtils;
import com.xinquan.course.api.domain.Course;
import com.xinquan.course.api.domain.CourseCategory;
import com.xinquan.course.api.domain.CourseChapter;
import com.xinquan.course.domain.CourseLearningRecord;
import com.xinquan.course.domain.TutorSpecialColumn;
import com.xinquan.course.domain.TutorSpecialColumnCourse;
import com.xinquan.course.domain.vo.ClientCourseVO;
import com.xinquan.course.domain.vo.TutorCourseVO;
import com.xinquan.course.domain.vo.TutorVo;
import com.xinquan.course.service.*;
import com.xinquan.system.api.domain.AppUser;
import com.xinquan.user.api.feign.RemoteAppUserService;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
*
* 导师专栏表 前端控制器
*
*
* @author mitao
* @since 2024-08-21
*/
@RestController
@RequestMapping("/client/course/tutor-special-column")
public class ClientTutorSpecialColumnController {
@Resource
private TutorSpecialColumnService tutorSpecialColumnService;
@Resource
private TutorSpecialColumnCourseService tutorSpecialColumnCourseService;
@Resource
private CourseCategoryService courseCategoryService;
@Resource
private CourseService courseService;
@Resource
private CourseLearningRecordService courseLearningRecordService;
@Resource
private CourseChapterService courseChapterService;
@Resource
private RemoteAppUserService remoteAppUserService;
@PostMapping("/getCoursePageList")
@ApiOperation(value = "导师专栏",tags = "导师专栏")
public R getCourseList() {
TutorVo tutorVo = new TutorVo();
TutorSpecialColumn one = tutorSpecialColumnService.lambdaQuery().one();
List clientCourseVOS = new ArrayList<>();
if (one!=null){
BeanUtils.copyProperties(one, tutorVo);
TutorSpecialColumnCourse one1 = tutorSpecialColumnCourseService.lambdaQuery().eq(TutorSpecialColumnCourse::getTutorSpecialColumnId, one.getId()).one();
if (one1!=null){
LambdaQueryWrapper courseLambdaQueryWrapper = new LambdaQueryWrapper<>();
if (StringUtils.hasLength(one1.getCourseId())){
courseLambdaQueryWrapper.in(Course::getId, Arrays.asList(one1.getCourseId().split(",")));
}
courseLambdaQueryWrapper.orderByDesc(Course::getSortNum);
List page = courseService.list(courseLambdaQueryWrapper);
for (Course course : page) {
TutorCourseVO tutorCourseVO = new TutorCourseVO();
List data = remoteAppUserService.getUserByCourseId(course.getId()).getData();
List list1 = courseChapterService.lambdaQuery().eq(CourseChapter::getCourseId, course.getId()).list();
int a = 0;
int b = 0;
for (CourseChapter courseChapter : list1) {
a+= courseChapter.getVirtualLearnedNum();
Long data1 = remoteAppUserService.getCourseChapterHistoryCount(courseChapter.getId()).getData();
b+=data1;
}
course.setCount(a+b);
course.setRealLearnedNum(a+b);
BeanUtils.copyProperties(course, tutorCourseVO);
clientCourseVOS.add(tutorCourseVO);
}
tutorVo.setList(clientCourseVOS);
return R.ok(tutorVo);
}else{
return R.ok(tutorVo);
}
}else{
tutorVo.setList(clientCourseVOS);
return R.ok(tutorVo);
}
}
@GetMapping("/detailTutor")
@ApiOperation(value = "查看详情导师专栏", tags = "管理后台-导师专栏")
public R detailTutor() {
TutorSpecialColumn one = tutorSpecialColumnService.getOne(null);
if (one!=null){
TutorSpecialColumnCourse one1 = tutorSpecialColumnCourseService.lambdaQuery()
.eq(TutorSpecialColumnCourse::getTutorSpecialColumnId, one.getId()).one();
if (one1!=null){
List collect = Arrays.asList(one1.getCourseId().split(","));
List list = courseService.lambdaQuery().in(Course::getId, collect).list();
for (Course course : list) {
CourseCategory byId = courseCategoryService.getById(course.getCateId());
if (byId!=null){
course.setCategoryName(byId.getName());
}
}
one.setCourses(list);
}
}
return R.ok(one);
}
@PostMapping("/updateTutor")
@ApiOperation(value = "修改分类导师专栏", tags = "管理后台-导师专栏")
public R updateTutor(@RequestBody TutorSpecialColumn homeBackgroundMusic) {
TutorSpecialColumn one = tutorSpecialColumnService.getOne(null);
if (one == null){
tutorSpecialColumnService.save(homeBackgroundMusic);
}
homeBackgroundMusic.setUpdateBy(SecurityUtils.getUsername());
homeBackgroundMusic.setUpdateTime(LocalDateTime.now());
List collect = tutorSpecialColumnCourseService.lambdaQuery()
.eq(TutorSpecialColumnCourse::getTutorSpecialColumnId, homeBackgroundMusic.getId())
.list().stream().map(TutorSpecialColumnCourse::getId)
.collect(Collectors.toList());
tutorSpecialColumnCourseService.removeBatchByIds(collect);
if (StringUtils.hasLength(homeBackgroundMusic.getCourseIds())){
List tutorSpecialColumnCourses = new ArrayList<>();
TutorSpecialColumnCourse tutorSpecialColumnCourse = new TutorSpecialColumnCourse();
tutorSpecialColumnCourse.setCourseId(homeBackgroundMusic.getCourseIds());
tutorSpecialColumnCourse.setTutorSpecialColumnId(homeBackgroundMusic.getId());
tutorSpecialColumnCourses.add(tutorSpecialColumnCourse);
tutorSpecialColumnCourseService.saveBatch(tutorSpecialColumnCourses);
}
return R.ok(tutorSpecialColumnService.updateById(homeBackgroundMusic));
}
}