package com.fdkankan.scene.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.fdkankan.common.constant.CommonStatus; import com.fdkankan.common.constant.ErrorCode; import com.fdkankan.common.constant.ServerCode; import com.fdkankan.common.exception.BusinessException; import com.fdkankan.fyun.face.FYunFileServiceInterface; import com.fdkankan.model.constants.UploadFilePath; import com.fdkankan.scene.entity.*; import com.fdkankan.scene.mapper.ISurveillanceMapper; import com.fdkankan.scene.service.*; import com.fdkankan.scene.vo.BaseSidParamVO; import com.fdkankan.scene.vo.SurveillanceParamVO; import com.fdkankan.scene.vo.SurveillanceVO; import com.fdkankan.web.response.ResultData; import java.io.IOException; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; /** *

* 监控推拉流信息 服务实现类 *

* * @author * @since 2022-09-16 */ @Service public class SurveillanceServiceImpl extends ServiceImpl implements ISurveillanceService { @Autowired private IScenePlusService scenePlusService; @Autowired private ISceneEditInfoExtService sceneEditInfoExtService; @Autowired private ISceneEditInfoService sceneEditInfoService; @Resource private FYunFileServiceInterface yunFileService; @Autowired private IScenePlusExtService scenePlusExtService; @Autowired private ICommonService commonService; @Override public ResultData saveSurveillance(SurveillanceParamVO param) throws Exception { if(param.getUrlType() == 1){ if(StrUtil.isEmpty(param.getPlayUrl())){ throw new BusinessException(ServerCode.PARAM_REQUIRED.code(), ServerCode.PARAM_REQUIRED.formatMessage("playUrl")); } }else{ if(StrUtil.isEmpty(param.getFileName()) || StrUtil.isEmpty(param.getPoster())){ throw new BusinessException(ServerCode.PARAM_REQUIRED.code(), ServerCode.PARAM_REQUIRED.formatMessage("fileName、poster")); } } ScenePlus scenePlus = scenePlusService.getScenePlusByNum(param.getNum()); if(Objects.isNull(scenePlus)){ throw new BusinessException(ErrorCode.FAILURE_CODE_5005); } ScenePlusExt scenePlusExt = scenePlusExtService.getScenePlusExtByPlusId(scenePlus.getId()); //转换视频格式 if(param.getUrlType() == 2){ commonService.transferToFlv(param.getNum(), param.getFileName(), scenePlusExt.getYunFileBucket()); } SceneEditInfo sceneEditInfo = sceneEditInfoService.getByScenePlusId(scenePlus.getId()); SceneEditInfoExt sceneEditInfoExt = sceneEditInfoExtService.getByScenePlusId(scenePlus.getId()); Surveillance surveillance = this.getBySid(param.getNum(), param.getSid()); if(Objects.isNull(surveillance)){ surveillance = new Surveillance(); } surveillance.setSid(param.getSid()); surveillance.setPanoId(param.getPanoId()); surveillance.setNum(param.getNum()); surveillance.setName(param.getName()); surveillance.setData(param.getData().toJSONString()); surveillance.setPlayUrl(param.getPlayUrl()); surveillance.setUrlType(param.getUrlType()); surveillance.setFileName(param.getFileName()); surveillance.setPoster(param.getPoster()); this.saveOrUpdate(surveillance); sceneEditInfoExt.setSurveillances(CommonStatus.YES.code().intValue()); sceneEditInfoExtService.updateById(sceneEditInfoExt); sceneEditInfoService.upgradeVersionById(sceneEditInfo.getId()); return ResultData.ok(); } @Override public ResultData deleteSurveillance(BaseSidParamVO param) throws IOException { ScenePlus scenePlus = scenePlusService.getScenePlusByNum(param.getNum()); if(Objects.isNull(scenePlus)){ throw new BusinessException(ErrorCode.FAILURE_CODE_5005); } Surveillance surveillance = this.getBySid(param.getNum(), param.getSid()); if(Objects.isNull(surveillance)){ return ResultData.ok("sid不存在"); } ScenePlusExt scenePlusExt = scenePlusExtService.getScenePlusExtByPlusId(scenePlus.getId()); SceneEditInfo sceneEditInfo = sceneEditInfoService.getByScenePlusId(scenePlus.getId()); SceneEditInfoExt sceneEditInfoExt = sceneEditInfoExtService.getByScenePlusId(scenePlus.getId()); String bucket = scenePlusExt.getYunFileBucket(); this.remove(new LambdaQueryWrapper().eq(Surveillance::getSid, param.getSid())); long count = this.count(new LambdaQueryWrapper().eq(Surveillance::getNum, param.getNum())); if(count < 1){ sceneEditInfoExt.setSurveillances(CommonStatus.NO.code().intValue()); } //如果是视频类型监控,需要删除oss文件 if(surveillance.getUrlType() == 2){ String userEditPath = String.format(UploadFilePath.USER_EDIT_PATH, param.getNum()); if(StrUtil.isNotEmpty(surveillance.getFileName())){ yunFileService.deleteFile(bucket, userEditPath.concat(surveillance.getFileName())); } if(StrUtil.isNotEmpty(surveillance.getPoster())){ yunFileService.deleteFile(bucket, userEditPath.concat(surveillance.getPoster())); } } sceneEditInfoExtService.updateById(sceneEditInfoExt); sceneEditInfoService.upgradeVersionById(sceneEditInfo.getId()); return ResultData.ok(); } @Override public List listSurveillance(String num) { List list = this.list(new LambdaQueryWrapper().eq(Surveillance::getNum, num).orderByDesc(Surveillance::getId)); if(Objects.isNull(list)){ return null; } List voList = list.stream().map(item -> { SurveillanceVO vo = BeanUtil.copyProperties(item, SurveillanceVO.class, "data"); vo.setData(JSON.parseObject(item.getData())); return vo; }).collect(Collectors.toList()); return voList; } @Override public Surveillance getBySid(String num, String sid) { return this.getOne(new LambdaQueryWrapper().eq(Surveillance::getSid, sid).eq(Surveillance::getNum, num)); } }