You've already forked FrameTour-BE
逻辑
This commit is contained in:
@ -21,6 +21,7 @@ import com.ycwl.basic.model.pc.scenic.req.ScenicReqQuery;
|
||||
import com.ycwl.basic.model.pc.scenic.resp.ScenicRespVO;
|
||||
import com.ycwl.basic.model.pc.source.req.SourceReqQuery;
|
||||
import com.ycwl.basic.model.pc.source.resp.SourceRespVO;
|
||||
import com.ycwl.basic.model.pc.video.entity.MemberVideoEntity;
|
||||
import com.ycwl.basic.model.pc.video.req.VideoReqQuery;
|
||||
import com.ycwl.basic.model.pc.video.resp.VideoRespVO;
|
||||
import com.ycwl.basic.service.mobile.AppScenicService;
|
||||
@ -133,20 +134,15 @@ public class AppScenicServiceImpl implements AppScenicService {
|
||||
|
||||
FaceRespVO faceRespVO = faceMapper.getById(faceId);
|
||||
if (StringUtils.isBlank(faceRespVO.getMatchSampleIds())) {
|
||||
return ApiResponse.success(new ArrayList<>());
|
||||
// return ApiResponse.success(new ArrayList<>());
|
||||
}
|
||||
|
||||
List<ContentPageVO> contentList = templateMapper.listFor(faceRespVO.getScenicId(), faceId);
|
||||
List<ContentPageVO> contentList = templateMapper.listFor(faceRespVO.getScenicId());
|
||||
contentList.forEach(contentPageVO -> {
|
||||
if (contentPageVO.getContentType() == 1) {
|
||||
VideoReqQuery videoReqQuery = new VideoReqQuery();
|
||||
videoReqQuery.setScenicId(contentPageVO.getScenicId());
|
||||
videoReqQuery.setTemplateId(contentPageVO.getTemplateId());
|
||||
videoReqQuery.setMemberId(worker.getUserId());
|
||||
List<VideoRespVO> videoList = videoMapper.list(videoReqQuery);
|
||||
if (!videoList.isEmpty()) {
|
||||
contentPageVO.setContentId(videoList.get(0).getId());
|
||||
}
|
||||
List<MemberVideoEntity> memberVideoEntityList = videoMapper.userFaceTemplateVideo(worker.getUserId(), faceId, contentPageVO.getTemplateId());
|
||||
if (!memberVideoEntityList.isEmpty()) {
|
||||
contentPageVO.setIsBuy(memberVideoEntityList.get(0).getIsBuy());
|
||||
contentPageVO.setContentId(memberVideoEntityList.get(0).getId());
|
||||
}
|
||||
});
|
||||
|
||||
@ -180,17 +176,12 @@ public class AppScenicServiceImpl implements AppScenicService {
|
||||
if (StringUtils.isBlank(faceRespVO.getMatchSampleIds())) {
|
||||
return ApiResponse.success(new ArrayList<>());
|
||||
}
|
||||
List<ContentPageVO> contentList = templateMapper.listFor(faceRespVO.getScenicId(), faceId);
|
||||
List<ContentPageVO> contentList = templateMapper.listFor(faceRespVO.getScenicId());
|
||||
contentList.forEach(contentPageVO -> {
|
||||
if (contentPageVO.getContentType() == 1) {
|
||||
VideoReqQuery videoReqQuery = new VideoReqQuery();
|
||||
videoReqQuery.setScenicId(contentPageVO.getScenicId());
|
||||
videoReqQuery.setTemplateId(contentPageVO.getTemplateId());
|
||||
videoReqQuery.setMemberId(userId);
|
||||
List<VideoRespVO> videoList = videoMapper.list(videoReqQuery);
|
||||
if (!videoList.isEmpty()) {
|
||||
contentPageVO.setContentId(videoList.get(0).getId());
|
||||
}
|
||||
List<MemberVideoEntity> memberVideoEntityList = videoMapper.userFaceTemplateVideo(userId, faceId, contentPageVO.getTemplateId());
|
||||
if (!memberVideoEntityList.isEmpty()) {
|
||||
contentPageVO.setIsBuy(memberVideoEntityList.get(0).getIsBuy());
|
||||
contentPageVO.setContentId(memberVideoEntityList.get(0).getId());
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -79,12 +79,12 @@ public class GoodsServiceImpl implements GoodsService {
|
||||
GoodsPageVO goodsPageVO = new GoodsPageVO();
|
||||
if (type == 1) {
|
||||
goodsPageVO.setGoodsName("原片集");
|
||||
goodsPageVO.setGoodsType(2);
|
||||
} else {
|
||||
goodsPageVO.setGoodsName("照片集");
|
||||
goodsPageVO.setGoodsType(3);
|
||||
}
|
||||
goodsPageVO.setScenicId(query.getScenicId());
|
||||
goodsPageVO.setGoodsType(2);
|
||||
goodsPageVO.setSourceType(type);
|
||||
goodsList.add(goodsPageVO);
|
||||
});
|
||||
|
||||
@ -99,6 +99,7 @@ public class GoodsServiceImpl implements GoodsService {
|
||||
sourceReqQuery.setIsBuy(query.getIsBuy());
|
||||
sourceReqQuery.setMemberId(query.getMemberId());
|
||||
sourceReqQuery.setType(sourceType);
|
||||
sourceReqQuery.setFaceId(query.getFaceId());
|
||||
List<SourceRespVO> list = sourceMapper.listUser(sourceReqQuery);
|
||||
List<GoodsDetailVO> goodsDetailVOList = new ArrayList<>();
|
||||
|
||||
|
@ -4,6 +4,7 @@ import com.github.pagehelper.PageHelper;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import com.ycwl.basic.enums.StatisticEnum;
|
||||
import com.ycwl.basic.exception.BaseException;
|
||||
import com.ycwl.basic.mapper.FaceSampleMapper;
|
||||
import com.ycwl.basic.mapper.SourceMapper;
|
||||
import com.ycwl.basic.mapper.StatisticsMapper;
|
||||
import com.ycwl.basic.mapper.FaceMapper;
|
||||
@ -13,6 +14,7 @@ import com.ycwl.basic.model.mobile.statistic.req.StatisticsRecordAddReq;
|
||||
import com.ycwl.basic.model.pc.face.entity.FaceEntity;
|
||||
import com.ycwl.basic.model.pc.face.req.FaceReqQuery;
|
||||
import com.ycwl.basic.model.pc.face.resp.FaceRespVO;
|
||||
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.model.task.resp.SearchFaceRespVo;
|
||||
@ -22,6 +24,7 @@ import com.ycwl.basic.service.task.TaskService;
|
||||
import com.ycwl.basic.storage.StorageFactory;
|
||||
import com.ycwl.basic.storage.adapters.IStorageAdapter;
|
||||
import com.ycwl.basic.storage.utils.StorageUtil;
|
||||
import com.ycwl.basic.task.VideoPieceGetter;
|
||||
import com.ycwl.basic.utils.*;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@ -58,6 +61,8 @@ public class FaceServiceImpl implements FaceService {
|
||||
private TaskService taskTaskService;
|
||||
@Autowired
|
||||
private SourceMapper sourceMapper;
|
||||
@Autowired
|
||||
private FaceSampleMapper faceSampleMapper;
|
||||
|
||||
@Override
|
||||
public ApiResponse<PageInfo<FaceRespVO>> pageQuery(FaceReqQuery faceReqQuery) {
|
||||
@ -141,11 +146,11 @@ public class FaceServiceImpl implements FaceService {
|
||||
throw new BaseException("人脸照片校验失败,请重新上传");
|
||||
}
|
||||
// 2、通过人脸查找用户库
|
||||
SearchFaceRespVo userDbSearchResult = faceService.searchFace(USER_FACE_DB_NAME, faceUrl);
|
||||
Long newFaceId = SnowFlakeUtil.getLongId();
|
||||
FaceEntity faceEntity = new FaceEntity();
|
||||
faceEntity.setScore(scenicDbSearchResult.getScore());
|
||||
faceEntity.setMatchResult(scenicDbSearchResult.getSearchResultJson());
|
||||
SearchFaceRespVo userDbSearchResult = faceService.searchFace(USER_FACE_DB_NAME, faceUrl);
|
||||
if (userDbSearchResult == null) {
|
||||
// 都是null了,那得是新的
|
||||
faceService.addFaceSample(USER_FACE_DB_NAME, newFaceId.toString(), faceUrl, newFaceId.toString());
|
||||
@ -158,7 +163,12 @@ public class FaceServiceImpl implements FaceService {
|
||||
} else {
|
||||
// 有匹配结果,且能匹配旧的数据
|
||||
Long oldFaceId = userDbSearchResult.getSampleListIds().get(0);
|
||||
faceEntity.setId(oldFaceId);
|
||||
FaceRespVO oldFace = faceMapper.getById(oldFaceId);
|
||||
if (oldFace == null) {
|
||||
faceService.deleteFaceSample(USER_FACE_DB_NAME, oldFaceId.toString());
|
||||
} else {
|
||||
faceEntity.setId(oldFaceId);
|
||||
}
|
||||
}
|
||||
if (scenicDbSearchResult.getFirstMatchRate() != null) {
|
||||
faceEntity.setFirstMatchRate(BigDecimal.valueOf(scenicDbSearchResult.getFirstMatchRate()));
|
||||
@ -173,14 +183,6 @@ public class FaceServiceImpl implements FaceService {
|
||||
List<Long> sampleListIds = scenicDbSearchResult.getSampleListIds();
|
||||
// 匹配原片:照片
|
||||
List<SourceEntity> sourceEntities = sourceMapper.listBySampleIds(sampleListIds);
|
||||
List<MemberSourceEntity> memberSourceEntityList = sourceEntities.stream().map(sourceEntity -> {
|
||||
MemberSourceEntity memberSourceEntity = new MemberSourceEntity();
|
||||
memberSourceEntity.setMemberId(userId);
|
||||
memberSourceEntity.setSourceId(sourceEntity.getId());
|
||||
memberSourceEntity.setType(sourceEntity.getType());
|
||||
memberSourceEntity.setIsBuy(0);
|
||||
return memberSourceEntity;
|
||||
}).collect(Collectors.toList());
|
||||
if (faceEntity.getId()==null) {
|
||||
//新增人脸
|
||||
faceEntity.setId(newFaceId);
|
||||
@ -191,7 +193,26 @@ public class FaceServiceImpl implements FaceService {
|
||||
faceMapper.update(faceEntity);
|
||||
taskTaskService.autoCreateTaskByFaceId(faceEntity.getId());
|
||||
}
|
||||
List<MemberSourceEntity> memberSourceEntityList = sourceEntities.stream().map(sourceEntity -> {
|
||||
MemberSourceEntity memberSourceEntity = new MemberSourceEntity();
|
||||
memberSourceEntity.setScenicId(scenicId);
|
||||
memberSourceEntity.setFaceId(faceEntity.getId());
|
||||
memberSourceEntity.setMemberId(userId);
|
||||
memberSourceEntity.setSourceId(sourceEntity.getId());
|
||||
memberSourceEntity.setType(sourceEntity.getType());
|
||||
memberSourceEntity.setIsBuy(0);
|
||||
return memberSourceEntity;
|
||||
}).collect(Collectors.toList());
|
||||
sourceMapper.addRelations(memberSourceEntityList);
|
||||
List<FaceSampleRespVO> faceSampleList = faceSampleMapper.listByIds(sampleListIds);
|
||||
for (FaceSampleRespVO sampleRespVO : faceSampleList) {
|
||||
VideoPieceGetter.Task task = new VideoPieceGetter.Task();
|
||||
task.faceId = faceEntity.getId();
|
||||
task.faceSampleId = sampleRespVO.getId();
|
||||
task.memberId = userId;
|
||||
task.createTime = sampleRespVO.getCreateAt();
|
||||
VideoPieceGetter.addTask(task);
|
||||
}
|
||||
StatisticsRecordAddReq statisticsRecordAddReq = new StatisticsRecordAddReq();
|
||||
statisticsRecordAddReq.setMemberId(userId);
|
||||
statisticsRecordAddReq.setType(StatisticEnum.UPLOAD_FACE.code);
|
||||
|
@ -339,6 +339,21 @@ public class TaskFaceServiceImpl implements TaskFaceService {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean deleteFaceSample(String dbName, String entityId) {
|
||||
DeleteFaceEntityRequest deleteFaceEntityRequest = new DeleteFaceEntityRequest();
|
||||
deleteFaceEntityRequest.setDbName(dbName);
|
||||
deleteFaceEntityRequest.setEntityId(entityId);
|
||||
try {
|
||||
IAcsClient client = getClient();
|
||||
client.getAcsResponse(deleteFaceEntityRequest);
|
||||
return true;
|
||||
} catch (ClientException e) {
|
||||
log.error("删除人脸样本失败!", e);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public void addFaceDBCache(String dbName) {
|
||||
redisTemplate.opsForValue().set(FaceConstant.FACE_DB_NAME_PFX + dbName, "1");
|
||||
}
|
||||
|
@ -192,6 +192,9 @@ public class TaskTaskServiceImpl implements TaskService {
|
||||
@Override
|
||||
public void autoCreateTaskByFaceId(Long id) {
|
||||
FaceRespVO faceRespVO = faceMapper.getById(id);
|
||||
if (faceRespVO == null) {
|
||||
return;
|
||||
}
|
||||
if (!StringUtils.isNotBlank(faceRespVO.getMatchSampleIds())) {
|
||||
return;
|
||||
}
|
||||
@ -244,7 +247,6 @@ public class TaskTaskServiceImpl implements TaskService {
|
||||
VideoPieceGetter.Task task = new VideoPieceGetter.Task();
|
||||
task.setFaceSampleId(sample.getId());
|
||||
task.setMemberId(faceRespVO.getMemberId());
|
||||
task.setDeviceId(sample.getDeviceId());
|
||||
task.setCreateTime(sample.getCreateAt());
|
||||
return task;
|
||||
}).filter(Objects::nonNull).collect(Collectors.toList());
|
||||
|
@ -25,4 +25,6 @@ public interface TaskFaceService {
|
||||
void assureFaceDB(String scenicId);
|
||||
|
||||
String uploadFile(MultipartFile file, Long userId);
|
||||
|
||||
boolean deleteFaceSample(String dbName, String entityId);
|
||||
}
|
||||
|
Reference in New Issue
Block a user