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<VideoMasterInfoMapper, VideoMasterInfoEntity> implements IVideoMasterInfoService {
|
|
private final VideoMasterItemsMapper videoMasterItemsMapper;
|
private final VideoMasterSourceMapper videoMasterSourceMapper;
|
private final VideoMasterDataMapper videoMasterDataMapper;
|
|
@Override
|
public IPage<VideoMasterInfoEntity> findInPage(VideoMasterInfoEntity info, QueryRequest request) {
|
Page<VideoMasterInfoEntity> 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<VideoMasterItemsEntity> 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<VideoMasterItemsEntity> beforeItems = this.videoMasterItemsMapper.selectItemsByMasterId(info.getId());
|
List<VideoMasterItemsEntity> newItems = info.getItems();
|
if (CollUtil.isEmpty(newItems)) {
|
throw new FebsException("章节异常");
|
}
|
|
List<Long> existID = new ArrayList<>();
|
List<VideoMasterItemsEntity> 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);
|
}
|
}
|