package com.dsh.activity.service.impl;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsh.activity.entity.BenefitsVideoClassification;
import com.dsh.activity.entity.BenefitsVideos;
import com.dsh.activity.entity.UserBenefitsVideos;
import com.dsh.activity.feignclient.account.UserIntegralChangesClient;
import com.dsh.activity.feignclient.account.model.SaveUserIntegralChangesVo;
import com.dsh.activity.feignclient.course.CourseClient;
import com.dsh.activity.feignclient.course.model.Course;
import com.dsh.activity.mapper.BenefitsVideoClassificationMapper;
import com.dsh.activity.mapper.BenefitsVideosMapper;
import com.dsh.activity.model.*;
import com.dsh.activity.service.BenefitsVideosService;
import com.dsh.activity.service.IBenefitsVideoClassificationService;
import com.dsh.activity.service.IUserBenefitsVideosService;
import com.dsh.activity.util.ToolUtil;
import org.aspectj.weaver.ast.Var;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
*
* 福利视频 服务实现类
*
*
* @author jqs
* @since 2023-07-06
*/
@Service
public class BenefitsVideosServiceImpl extends ServiceImpl implements BenefitsVideosService {
@Autowired
private IBenefitsVideoClassificationService benefitsVideoClassificationService;
@Autowired
private IUserBenefitsVideosService userBenefitsVideosService;
@Resource
private CourseClient courseClient;
@Resource
private UserIntegralChangesClient userIntegralChangesClient;
@Autowired
private BenefitsVideoClassificationMapper benefitsVideoClassificationMapper;
@Autowired
private BenefitsVideosMapper benefitsVideosMapper;
/**
* 获取福利视频分类列表数据
*
* @param uid
* @param search
* @return
* @throws Exception
*/
@Override
public List queryClassificationBenefitsVideosList(Integer uid, Integer position, String search) throws Exception {
QueryWrapper wrapper = new QueryWrapper().eq("position", position);
if (ToolUtil.isNotEmpty(search)) {
wrapper.like("name", search);
}
List list = benefitsVideoClassificationService.list(wrapper.orderByAsc("sort"));
List userBenefitsVideos = userBenefitsVideosService.list(new QueryWrapper().eq("appUserId", uid));
List collect = userBenefitsVideos.stream().map(UserBenefitsVideos::getBenefitsVideosId).collect(Collectors.toList());
List listVos = new ArrayList<>();
for (BenefitsVideoClassification benefitsVideoClassification : list) {
if (benefitsVideoClassification.getState() == 1) {
BenefitsVideoClassificationListVo benefitsVideoClassificationListVo = new BenefitsVideoClassificationListVo();
benefitsVideoClassificationListVo.setId(benefitsVideoClassification.getId());
benefitsVideoClassificationListVo.setName(benefitsVideoClassification.getName());
QueryWrapper benefitsVideosQueryWrapper = new QueryWrapper().eq("state", 1).eq("benefitsVideoClassificationId", benefitsVideoClassification.getId());
if (collect.size() > 0) {
benefitsVideosQueryWrapper.notIn("id", collect);
}
List list1 = this.list(benefitsVideosQueryWrapper.eq("state", 1).orderByDesc("insertTime").last(" limit 0, 4"));
List lists = new ArrayList<>();
for (BenefitsVideos benefitsVideos : list1) {
if (benefitsVideos.getState() == 1) {
Integer courseId = benefitsVideos.getCourseId();
Course course = courseClient.queryCourseById(courseId);
BenefitsVideosListVo benefitsVideosListVo = new BenefitsVideosListVo();
benefitsVideosListVo.setId(benefitsVideos.getId());
benefitsVideosListVo.setName(course.getName());
benefitsVideosListVo.setCover(course.getCoverDrawing());
benefitsVideosListVo.setIntroduce(course.getIntroduce());
lists.add(benefitsVideosListVo);
}
}
benefitsVideoClassificationListVo.setList(lists);
listVos.add(benefitsVideoClassificationListVo);
}
}
return listVos;
}
@Override
public List queryClassificationBenefitsVideosListOne(Integer uid, Integer position, String search) throws Exception {
QueryWrapper wrapper = new QueryWrapper().eq("position", position);
if (ToolUtil.isNotEmpty(search)) {
wrapper.like("name", search);
}
List list = benefitsVideoClassificationService.list(wrapper.orderByAsc("sort"));
List userBenefitsVideos = userBenefitsVideosService.list(new QueryWrapper().eq("appUserId", -1));
List collect = userBenefitsVideos.stream().map(UserBenefitsVideos::getBenefitsVideosId).collect(Collectors.toList());
List listVos = new ArrayList<>();
for (BenefitsVideoClassification benefitsVideoClassification : list) {
BenefitsVideoClassificationListVo benefitsVideoClassificationListVo = new BenefitsVideoClassificationListVo();
benefitsVideoClassificationListVo.setId(benefitsVideoClassification.getId());
benefitsVideoClassificationListVo.setName(benefitsVideoClassification.getName());
QueryWrapper benefitsVideosQueryWrapper = new QueryWrapper().eq("state", 1);
if (collect.size() > 0) {
benefitsVideosQueryWrapper.notIn("id", collect);
}
List list1 = this.list(benefitsVideosQueryWrapper.orderByDesc("insertTime").last(" limit 0, 4"));
List lists = new ArrayList<>();
for (BenefitsVideos benefitsVideos : list1) {
Integer courseId = benefitsVideos.getCourseId();
Course course = courseClient.queryCourseById(courseId);
BenefitsVideosListVo benefitsVideosListVo = new BenefitsVideosListVo();
benefitsVideosListVo.setId(benefitsVideos.getId());
benefitsVideosListVo.setName(course.getName());
benefitsVideosListVo.setCover(course.getCoverDrawing());
benefitsVideosListVo.setIntroduce(course.getIntroduce());
lists.add(benefitsVideosListVo);
}
benefitsVideoClassificationListVo.setList(lists);
listVos.add(benefitsVideoClassificationListVo);
}
return listVos;
}
@Override
public List queryBenefitsVideosList(Integer uid, Integer classificationId, String search, Integer pageSize, Integer pageNo) throws Exception {
pageSize = (pageSize - 1) * pageNo;
List ids = null;
if (ToolUtil.isNotEmpty(search)) {
List courses = courseClient.queryCourseByName(search);
ids = courses.stream().map(Course::getId).collect(Collectors.toList());
}
int offset = (pageNo - 1) * pageSize;
int limit = pageSize;
List