逻辑修改

This commit is contained in:
2024-12-29 18:06:57 +08:00
parent 445c0bbf75
commit f86025bf47
8 changed files with 83 additions and 20 deletions

View File

@ -1,9 +1,11 @@
package com.ycwl.basic.controller.pc;
import com.ycwl.basic.model.jwt.JwtInfo;
import com.ycwl.basic.model.pc.source.entity.SourceEntity;
import com.ycwl.basic.model.pc.source.req.SourceReqQuery;
import com.ycwl.basic.service.pc.SourceService;
import com.ycwl.basic.utils.ApiResponse;
import com.ycwl.basic.utils.JwtTokenUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
@ -34,7 +36,8 @@ public class SourceController {
@ApiOperation("查询视频源详情")
@GetMapping("getDetail/{id}")
public ApiResponse getById(@PathVariable Long id) {
return sourceService.getById(id);
JwtInfo worker = JwtTokenUtil.getWorker();
return sourceService.getById(id, worker.getUserId());
}
@ApiOperation("添加视频源")
@PostMapping("/add")

View File

@ -1,5 +1,6 @@
package com.ycwl.basic.mapper;
import com.ycwl.basic.model.pc.source.entity.MemberSourceEntity;
import com.ycwl.basic.model.pc.source.entity.SourceEntity;
import com.ycwl.basic.model.pc.source.req.SourceReqQuery;
import com.ycwl.basic.model.pc.source.resp.SourceRespVO;
@ -17,6 +18,7 @@ public interface SourceMapper {
List<SourceRespVO> list(SourceReqQuery sourceReqQuery);
SourceRespVO getById(Long id);
SourceRespVO userGetById(Long id, Long userId);
List<SourceEntity> listBySampleIds(List<Long> sourceIds);
@ -43,4 +45,8 @@ public interface SourceMapper {
List<SourceEntity> listVideoBySampleIds(List<Long> sampleId);
SourceEntity findBySampleId(Long faceSampleId);
int addRelation(MemberSourceEntity source);
List<SourceRespVO> listUser(SourceReqQuery sourceReqQuery);
}

View File

@ -0,0 +1,14 @@
package com.ycwl.basic.model.pc.source.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@Data
@TableName("member_source")
public class MemberSourceEntity {
private Long id;
private Long memberId;
private Integer type;
private Long sourceId;
private Integer isBuy;
}

View File

@ -104,7 +104,7 @@ public class GoodsServiceImpl implements GoodsService {
sourceReqQuery.setIsBuy(query.getIsBuy());
sourceReqQuery.setMemberId(query.getMemberId());
sourceReqQuery.setType(sourceType);
List<SourceRespVO> list = sourceMapper.list(sourceReqQuery);
List<SourceRespVO> list = sourceMapper.listUser(sourceReqQuery);
List<GoodsDetailVO> goodsDetailVOList = new ArrayList<>();
String goodsNamePrefix = "";

View File

@ -37,8 +37,8 @@ public class SourceServiceImpl implements SourceService {
}
@Override
public ApiResponse<SourceRespVO> getById(Long id) {
return ApiResponse.success(sourceMapper.getById(id));
public ApiResponse<SourceRespVO> getById(Long id, Long userId) {
return ApiResponse.success(sourceMapper.userGetById(id, userId));
}
@Override

View File

@ -15,7 +15,7 @@ import java.util.List;
public interface SourceService {
ApiResponse<PageInfo<SourceRespVO>> pageQuery(SourceReqQuery sourceReqQuery);
ApiResponse<List<SourceRespVO>> list(SourceReqQuery sourceReqQuery);
ApiResponse<SourceRespVO> getById(Long id);
ApiResponse<SourceRespVO> getById(Long id, Long userId);
ApiResponse<Integer> add(SourceEntity source);
ApiResponse<Integer> deleteById(Long id);
ApiResponse<Integer> update(SourceEntity source);

View File

@ -9,6 +9,7 @@ import com.ycwl.basic.mapper.SourceMapper;
import com.ycwl.basic.model.pc.device.entity.DeviceConfigEntity;
import com.ycwl.basic.model.pc.device.entity.DeviceEntity;
import com.ycwl.basic.model.pc.faceSample.resp.FaceSampleRespVO;
import com.ycwl.basic.model.pc.source.entity.MemberSourceEntity;
import com.ycwl.basic.model.pc.source.entity.SourceEntity;
import com.ycwl.basic.storage.StorageFactory;
import com.ycwl.basic.storage.adapters.IStorageAdapter;
@ -110,7 +111,11 @@ public class VideoPieceGetter {
new Date(task.getCreateTime().getTime() - cutPre.multiply(BigDecimal.valueOf(1000)).longValue()),
new Date(task.getCreateTime().getTime() + cutPost.multiply(BigDecimal.valueOf(1000)).longValue())
);
long offset = task.getCreateTime().getTime() - listByDtRange.get(0).getCreateTime().getTime();
if (listByDtRange.isEmpty()) {
log.warn("没有可用的文件");
return;
}
long offset = task.getCreateTime().getTime() - listByDtRange.get(0).getCreateTime().getTime() - cutPre.multiply(BigDecimal.valueOf(1000)).longValue();
FfmpegTask ffmpegTask = new FfmpegTask();
ffmpegTask.setFileList(listByDtRange);
ffmpegTask.setDuration(duration);
@ -128,10 +133,19 @@ public class VideoPieceGetter {
SourceEntity imgSource = sourceMapper.findBySampleId(faceSample.getId());
SourceEntity sourceEntity = new SourceEntity();
sourceEntity.setId(SnowFlakeUtil.getLongId());
MemberSourceEntity videoSource = new MemberSourceEntity();
MemberSourceEntity imageSource = new MemberSourceEntity();
videoSource.setMemberId(task.getMemberId());
videoSource.setType(1);
videoSource.setIsBuy(0);
videoSource.setSourceId(sourceEntity.getId());
imageSource.setMemberId(task.getMemberId());
imageSource.setType(2);
imageSource.setIsBuy(0);
if (imgSource != null) {
imageSource.setSourceId(imgSource.getId());
sourceEntity.setUrl(imgSource.getUrl());
sourceEntity.setPosJson(imgSource.getPosJson());
sourceEntity.setMemberId(imgSource.getMemberId());
}
sourceEntity.setVideoUrl(url);
sourceEntity.setFaceSampleId(faceSample.getId());
@ -140,6 +154,10 @@ public class VideoPieceGetter {
sourceEntity.setDeviceId(faceSample.getDeviceId());
sourceEntity.setType(1);
sourceMapper.add(sourceEntity);
sourceMapper.addRelation(videoSource);
if (imgSource != null) {
sourceMapper.addRelation(imageSource);
}
}
public boolean startFfmpegTask(FfmpegTask task) {
@ -319,7 +337,7 @@ public class VideoPieceGetter {
ffmpegCmd.add("-filter_complex");
ffmpegCmd.add(
IntStream.range(0, inputFiles.size()).mapToObj(i -> "[" + i + ":v]").collect(Collectors.joining("")) +
"concat=n=2:v=1[v]"
"concat=n="+inputFiles.size()+":v=1[v]"
);
ffmpegCmd.add("-map");
ffmpegCmd.add("[v]");