You've already forked FrameTour-BE
feat(face): 添加摄影师拍照功能支持
- 在ContentPageVO中新增origUrl字段用于存储原始图片地址 - 集成DeviceV2DTO设备数据结构支持摄影师设备管理 - 添加SourceRepository依赖注入实现资源数据访问 - 实现景区模式2下的摄影师拍照内容展示逻辑 - 支持按设备分组显示摄影师拍摄的照片内容 - 添加摄影师拍照相关的购买状态和锁定类型控制 - 更新人脸识别页面查询返回摄影师拍摄的内容列表 - 优化景区配置管理器变量
This commit is contained in:
@@ -25,6 +25,7 @@ public class ContentPageVO {
|
||||
private int lockType;
|
||||
// 内容id contentType为0或1时才有值
|
||||
private Long contentId;
|
||||
private String origUrl;
|
||||
private String videoUrl;
|
||||
// 模版id
|
||||
private Long templateId;
|
||||
|
||||
@@ -12,6 +12,7 @@ import com.ycwl.basic.face.pipeline.enums.FaceMatchingScene;
|
||||
import com.ycwl.basic.face.pipeline.factory.FaceMatchingPipelineFactory;
|
||||
import com.ycwl.basic.facebody.adapter.IFaceBodyAdapter;
|
||||
import com.ycwl.basic.facebody.entity.SearchFaceResultItem;
|
||||
import com.ycwl.basic.integration.device.dto.device.DeviceV2DTO;
|
||||
import com.ycwl.basic.mapper.FaceSampleMapper;
|
||||
import com.ycwl.basic.mapper.ProjectMapper;
|
||||
import com.ycwl.basic.mapper.SourceMapper;
|
||||
@@ -60,6 +61,7 @@ import com.ycwl.basic.repository.FaceRepository;
|
||||
import com.ycwl.basic.repository.MemberRelationRepository;
|
||||
import com.ycwl.basic.repository.OrderRepository;
|
||||
import com.ycwl.basic.repository.ScenicRepository;
|
||||
import com.ycwl.basic.repository.SourceRepository;
|
||||
import com.ycwl.basic.repository.TemplateRepository;
|
||||
import com.ycwl.basic.repository.VideoRepository;
|
||||
import com.ycwl.basic.repository.VideoTaskRepository;
|
||||
@@ -210,6 +212,8 @@ public class FaceServiceImpl implements FaceService {
|
||||
private OrderRepository orderRepository;
|
||||
@Autowired
|
||||
private com.ycwl.basic.biz.FaceStatusManager faceStatusManager;
|
||||
@Autowired
|
||||
private SourceRepository sourceRepository;
|
||||
|
||||
@Override
|
||||
public ApiResponse<PageInfo<FaceRespVO>> pageQuery(FaceReqQuery faceReqQuery) {
|
||||
@@ -472,7 +476,47 @@ public class FaceServiceImpl implements FaceService {
|
||||
if (face == null) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
Long userId = face.getMemberId();
|
||||
Long userId = Long.parseLong(BaseContextHandler.getUserId());
|
||||
ScenicConfigManager scenicConfig = scenicRepository.getScenicConfigManager(face.getScenicId());
|
||||
if (Integer.valueOf(2).equals(scenicConfig.getInteger("scenic_mode", 0))) {
|
||||
List<ContentPageVO> result = new ArrayList<>();
|
||||
// 摄影师拍照
|
||||
List<DeviceV2DTO> deviceList = deviceRepository.getAllDeviceByScenicId(face.getScenicId());
|
||||
List<SourceEntity> sourceEntityList = sourceMapper.listSourceByFaceRelation(face.getId(), 2);
|
||||
for (SourceEntity sourceEntity : sourceEntityList) {
|
||||
ContentPageVO content = new ContentPageVO();
|
||||
content.setName("摄影师拍照");
|
||||
deviceList.stream().filter(device -> device.getId().equals(sourceEntity.getDeviceId())).findFirst().ifPresent(device -> {
|
||||
content.setGroup(device.getName());
|
||||
});
|
||||
content.setContentId(sourceEntity.getId());
|
||||
content.setGoodsType(2);
|
||||
content.setContentType(2);
|
||||
content.setScenicId(sourceEntity.getScenicId());
|
||||
content.setSourceType(2);
|
||||
content.setOrigUrl(sourceEntity.getUrl());
|
||||
content.setTemplateCoverUrl(sourceEntity.getThumbUrl());
|
||||
content.setIsBuy(sourceEntity.getIsBuy());
|
||||
content.setLockType(-1);
|
||||
result.add(content);
|
||||
}
|
||||
List<Long> containedDeviceId = sourceEntityList.stream().map(SourceEntity::getDeviceId).filter(Objects::nonNull).distinct().toList();
|
||||
deviceList.stream().filter(device -> !containedDeviceId.contains(device.getId())).forEach(device -> {
|
||||
ContentPageVO content = new ContentPageVO();
|
||||
content.setName(device.getName());
|
||||
content.setGroup(device.getName());
|
||||
content.setContentId(device.getId());
|
||||
content.setGoodsType(2);
|
||||
content.setContentType(2);
|
||||
content.setScenicId(face.getScenicId());
|
||||
content.setSourceType(2);
|
||||
content.setTemplateCoverUrl("");
|
||||
content.setIsBuy(0);
|
||||
content.setLockType(1);
|
||||
result.add(content);
|
||||
});
|
||||
return result;
|
||||
}
|
||||
List<TemplateRespVO> templateList = templateRepository.getTemplateListByScenicId(face.getScenicId());
|
||||
List<ContentPageVO> contentList = templateList.stream().map(template -> {
|
||||
/// select t.id templateId, t.scenic_id, t.`group`, t.`name`, pid, t.cover_url templateCoverUrl,
|
||||
@@ -607,7 +651,6 @@ public class FaceServiceImpl implements FaceService {
|
||||
sourceVideoContent.setGroup("直出原片");
|
||||
sourceImageContent.setGroup("直出原片");
|
||||
sourceAiCamContent.setGroup("智能连连拍");
|
||||
ScenicConfigManager configManager = scenicRepository.getScenicConfigManager(face.getScenicId());
|
||||
if (!scenicConfigFacade.isDisableSourceImage(face.getScenicId())) {
|
||||
IsBuyRespVO isBuyRespVO = orderBiz.isBuy(face.getScenicId(), userId, faceId, SourceType.IMAGE.getCode(), faceId);
|
||||
sourceImageContent.setSourceType(isBuyRespVO.getGoodsType());
|
||||
@@ -679,7 +722,7 @@ public class FaceServiceImpl implements FaceService {
|
||||
} else if (type == 3) {
|
||||
sourceAiCamContent.setSourceType(13);
|
||||
sourceAiCamContent.setLockType(-1);
|
||||
sourceAiCamContent.setTemplateCoverUrl(configManager.getString("ai_camera_cover_url"));
|
||||
sourceAiCamContent.setTemplateCoverUrl(scenicConfig.getString("ai_camera_cover_url"));
|
||||
}
|
||||
});
|
||||
return contentList;
|
||||
@@ -793,18 +836,31 @@ public class FaceServiceImpl implements FaceService {
|
||||
}
|
||||
return statusResp;
|
||||
}
|
||||
VideoTaskStatusVO taskStatusByFaceId = goodsService.getTaskStatusByFaceId(faceId);
|
||||
if (Integer.valueOf(1).equals(taskStatusByFaceId.getStatus())) {
|
||||
if (taskStatusByFaceId.getCount() > 0) {
|
||||
if (Integer.valueOf(2).equals(scenicConfig.getInteger("scenic_mode", 0))) {
|
||||
// 摄影模式
|
||||
if (!countUser.isEmpty()) {
|
||||
statusResp.setStep3Status(true);
|
||||
statusResp.setDisplayText("帧途AI已为您渲染"+ taskStatusByFaceId.getCount() +"个vlog");
|
||||
statusResp.setDisplayText("帧途AI已为您记录" + countUser.size() + "张大片");
|
||||
return statusResp;
|
||||
} else {
|
||||
statusResp.setStep3Status(false);
|
||||
statusResp.setDisplayText("帧途AI将会为您渲染vlog,请稍候");
|
||||
statusResp.setDisplayText("Hey,去拍摄点免费拍照吧");
|
||||
return statusResp;
|
||||
}
|
||||
} else {
|
||||
statusResp.setStep3Status(false);
|
||||
statusResp.setDisplayText("帧途AI正在为您渲染vlog,请稍候");
|
||||
VideoTaskStatusVO taskStatusByFaceId = goodsService.getTaskStatusByFaceId(faceId);
|
||||
if (Integer.valueOf(1).equals(taskStatusByFaceId.getStatus())) {
|
||||
if (taskStatusByFaceId.getCount() > 0) {
|
||||
statusResp.setStep3Status(true);
|
||||
statusResp.setDisplayText("帧途AI已为您渲染"+ taskStatusByFaceId.getCount() +"个vlog");
|
||||
} else {
|
||||
statusResp.setStep3Status(false);
|
||||
statusResp.setDisplayText("帧途AI将会为您渲染vlog,请稍候");
|
||||
}
|
||||
} else {
|
||||
statusResp.setStep3Status(false);
|
||||
statusResp.setDisplayText("帧途AI正在为您渲染vlog,请稍候");
|
||||
}
|
||||
}
|
||||
return statusResp;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user