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> benefitsVideos = this.baseMapper.queryBenefitsVideosList(uid, classificationId, ids, offset, limit); List lists = new ArrayList<>(); for (Map benefitsVideo : benefitsVideos) { Integer id = Integer.valueOf(benefitsVideo.get("id").toString()); Integer courseId = Integer.valueOf(benefitsVideo.get("courseId").toString()); Integer integral = Integer.valueOf(benefitsVideo.get("integral").toString()); Integer study = Integer.valueOf(benefitsVideo.get("study").toString()); Course course = courseClient.queryCourseById(courseId); BenefitsVideosListVo benefitsVideosListVo = new BenefitsVideosListVo(); benefitsVideosListVo.setId(id); benefitsVideosListVo.setName(course.getName()); benefitsVideosListVo.setCover(course.getCoverDrawing()); benefitsVideosListVo.setIntroduce(course.getIntroduce()); benefitsVideosListVo.setIntegral(integral); benefitsVideosListVo.setStudy(study); lists.add(benefitsVideosListVo); } return lists; } /** * 获取福利视频详情 * * @param uid * @param id * @return * @throws Exception */ @Override public BenefitsVideosInfoVo queryBenefitsVideosInfo(Integer uid, Integer id) throws Exception { BenefitsVideos benefitsVideos = this.getById(id); Integer courseId = benefitsVideos.getCourseId(); Course course = courseClient.queryCourseById(courseId); BenefitsVideosInfoVo benefitsVideosInfoVo = new BenefitsVideosInfoVo(); benefitsVideosInfoVo.setId(id); benefitsVideosInfoVo.setName(course.getName()); benefitsVideosInfoVo.setCover(course.getCoverDrawing()); benefitsVideosInfoVo.setIntroduce(course.getIntroduce()); benefitsVideosInfoVo.setIntroductionDrawing(course.getIntroductionDrawing()); benefitsVideosInfoVo.setCourseVideo(course.getCourseVideo()); benefitsVideosInfoVo.setIntegral(benefitsVideos.getIntegral()); UserBenefitsVideos one = userBenefitsVideosService.getOne(new QueryWrapper().eq("appUserId", uid).eq("benefitsVideosId", id)); benefitsVideosInfoVo.setStudy(null == one ? 0 : 1); return benefitsVideosInfoVo; } /** * 视频观看完毕后获得奖励 * * @param uid * @param id * @throws Exception */ @Override public void receiveAward(Integer uid, Integer id) throws Exception { BenefitsVideos benefitsVideos = this.getById(id); UserBenefitsVideos one = userBenefitsVideosService.getOne(new QueryWrapper().eq("appUserId", uid).eq("benefitsVideosId", id)); if (null == one) { one = new UserBenefitsVideos(); one.setAppUserId(uid); one.setBenefitsVideoClassificationId(benefitsVideos.getBenefitsVideoClassificationId()); one.setBenefitsVideosId(id); one.setInsertTime(new Date()); one.setIntegral(benefitsVideos.getIntegral()); userBenefitsVideosService.save(one); //添加积分 SaveUserIntegralChangesVo vo = new SaveUserIntegralChangesVo(); vo.setAppUserId(uid); vo.setIntegral(benefitsVideos.getIntegral()); vo.setType(4); userIntegralChangesClient.saveUserIntegralChanges(vo); } } @Override public List getBenefitVideoById(Integer id) { return benefitsVideosMapper.getBenefitVideoById(id); } @Override public List getBybIdAndcId(Integer benefitsVideoClassificationId, Integer courseId) { return benefitsVideosMapper.getBybIdAndcId(benefitsVideoClassificationId, courseId); } }