package cc.mrbird.febs.video.service.impl; import cc.mrbird.febs.common.entity.QueryRequest; import cc.mrbird.febs.common.exception.FebsException; import cc.mrbird.febs.common.utils.AppContants; import cc.mrbird.febs.video.entity.VideoMasterDataEntity; import cc.mrbird.febs.video.entity.VideoMasterInfoEntity; import cc.mrbird.febs.video.entity.VideoMasterItemsEntity; import cc.mrbird.febs.video.entity.VideoMasterSourceEntity; import cc.mrbird.febs.video.mapper.VideoMasterDataMapper; import cc.mrbird.febs.video.mapper.VideoMasterInfoMapper; import cc.mrbird.febs.video.mapper.VideoMasterItemsMapper; import cc.mrbird.febs.video.mapper.VideoMasterSourceMapper; import cc.mrbird.febs.video.service.IVideoMasterInfoService; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; /** * @author wzy * @date 2021-12-15 **/ @Slf4j @Service @RequiredArgsConstructor public class VideoMasterInfoServiceImpl extends ServiceImpl implements IVideoMasterInfoService { private final VideoMasterItemsMapper videoMasterItemsMapper; private final VideoMasterSourceMapper videoMasterSourceMapper; private final VideoMasterDataMapper videoMasterDataMapper; @Override public IPage findInPage(VideoMasterInfoEntity info, QueryRequest request) { Page page = new Page<>(request.getPageNum(), request.getPageSize()); return this.baseMapper.selectInPage(info, page); } @Override @Transactional(rollbackFor = Exception.class) public void addVideo(VideoMasterInfoEntity info) { this.baseMapper.insert(info); List items = info.getItems(); if (CollUtil.isEmpty(items)) { throw new FebsException("章节异常"); } int i = 1; for (VideoMasterItemsEntity item : items) { if (StrUtil.isBlank(item.getName())){ throw new FebsException("章节标题未填写"); } VideoMasterSourceEntity source = this.videoMasterSourceMapper.selectById(item.getSourceId()); item.setMasterId(info.getId()); item.setSeq(i); item.setVideoUrl(source.getUrl()); this.videoMasterItemsMapper.insert(item); i++; } VideoMasterDataEntity data = new VideoMasterDataEntity(); data.setMasterId(info.getId()); data.setCollectCnt(0); data.setPlayCnt(0); data.setStarCnt(0); this.videoMasterDataMapper.insert(data); } @Override @Transactional(rollbackFor = Exception.class) public void updateVideo(VideoMasterInfoEntity info) { this.baseMapper.updateById(info); // List beforeItems = this.videoMasterItemsMapper.selectItemsByMasterId(info.getId()); List newItems = info.getItems(); if (CollUtil.isEmpty(newItems)) { throw new FebsException("章节异常"); } List existID = new ArrayList<>(); List newInsert = new ArrayList<>(); int i = 1; for (VideoMasterItemsEntity newItem : newItems) { if (StrUtil.isBlank(newItem.getName())) { throw new FebsException("章节标题未填写"); } if (newItem.getId() != null) { newItem.setSeq(i); this.videoMasterItemsMapper.updateById(newItem); existID.add(newItem.getId()); i++; } else { newInsert.add(newItem); } } if (CollUtil.isNotEmpty(existID)) { this.videoMasterItemsMapper.deleteNotInIds(existID, info.getId()); } if (CollUtil.isNotEmpty(newInsert)) { for (VideoMasterItemsEntity item : newInsert) { VideoMasterSourceEntity source = this.videoMasterSourceMapper.selectById(item.getSourceId()); item.setMasterId(info.getId()); item.setVideoUrl(source.getUrl()); item.setSeq(i); this.videoMasterItemsMapper.insert(item); i++; } } } @Override public VideoMasterInfoEntity findById(Long id) { return this.baseMapper.selectEntityById(id); } @Override public void changeIsUp(Long id) { VideoMasterInfoEntity masterInfo = this.baseMapper.selectById(id); if (masterInfo == null) { throw new FebsException("视频不存在"); } if (AppContants.FLAG_INT_Y.equals(masterInfo.getIsUp())) { masterInfo.setIsUp(AppContants.FLAG_INT_N); } else { masterInfo.setIsUp(AppContants.FLAG_INT_Y); } this.baseMapper.updateById(masterInfo); } }