You've already forked FrameTour-BE
指定设备提前预约
This commit is contained in:
@ -346,7 +346,7 @@ public class GoodsServiceImpl implements GoodsService {
|
||||
|
||||
@Override
|
||||
public VideoTaskStatusVO getTaskStatusByScenicId(Long userId, Long scenicId) {
|
||||
FaceRespVO faceVO = faceMapper.getByMemberId(userId, scenicId);
|
||||
FaceRespVO faceVO = faceMapper.getLatestByMemberId(userId, scenicId);
|
||||
VideoTaskStatusVO response = new VideoTaskStatusVO();
|
||||
response.setScenicId(scenicId);
|
||||
if (faceVO == null) {
|
||||
|
@ -326,14 +326,6 @@ public class OrderServiceImpl implements OrderService {
|
||||
return ApiResponse.fail("订单添加失败");
|
||||
}
|
||||
//点击支付按钮统计
|
||||
OrderRespVO orderRespVO = orderMapper.getById(orderId);
|
||||
StatisticsRecordAddReq statisticsRecordAddReq = new StatisticsRecordAddReq();
|
||||
statisticsRecordAddReq.setMemberId(orderRespVO.getMemberId());
|
||||
statisticsRecordAddReq.setType(StatisticEnum.CLICK_ON_PAYMENT.code);
|
||||
statisticsRecordAddReq.setScenicId(orderRespVO.getScenicId());
|
||||
statisticsRecordAddReq.setMorphId(orderId);
|
||||
statisticsMapper.addStatisticsRecord(statisticsRecordAddReq);
|
||||
|
||||
|
||||
WxPayRespVO wxPayRespVO = initiatePayment(order, orderItems);
|
||||
return ApiResponse.success(wxPayRespVO);
|
||||
|
@ -1,9 +1,7 @@
|
||||
package com.ycwl.basic.service.task.impl;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.aliyuncs.exceptions.ClientException;
|
||||
import com.aliyuncs.exceptions.ServerException;
|
||||
import com.aliyuncs.facebody.model.v20191230.AddFaceEntityRequest;
|
||||
import com.aliyuncs.facebody.model.v20191230.AddFaceRequest;
|
||||
import com.aliyuncs.facebody.model.v20191230.AddFaceResponse;
|
||||
@ -16,7 +14,6 @@ import com.aliyuncs.facebody.model.v20191230.ListFaceEntitiesRequest;
|
||||
import com.aliyuncs.facebody.model.v20191230.ListFaceEntitiesResponse;
|
||||
import com.aliyuncs.facebody.model.v20191230.SearchFaceRequest;
|
||||
import com.aliyuncs.facebody.model.v20191230.SearchFaceResponse;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.ycwl.basic.biz.OrderBiz;
|
||||
import com.ycwl.basic.config.FaceDetectConfig;
|
||||
import com.ycwl.basic.constant.FaceConstant;
|
||||
@ -27,22 +24,20 @@ import com.ycwl.basic.mapper.FaceSampleMapper;
|
||||
import com.ycwl.basic.mapper.ScenicMapper;
|
||||
import com.ycwl.basic.mapper.SourceMapper;
|
||||
import com.ycwl.basic.model.mobile.order.IsBuyRespVO;
|
||||
import com.ycwl.basic.model.pc.device.entity.DeviceEntity;
|
||||
import com.ycwl.basic.model.pc.face.entity.FaceEntity;
|
||||
import com.ycwl.basic.model.pc.face.resp.FaceRespVO;
|
||||
import com.ycwl.basic.model.pc.faceDetectLog.entity.FaceDetectLog;
|
||||
import com.ycwl.basic.model.pc.faceDetectLog.resp.MatchLocalRecord;
|
||||
import com.ycwl.basic.model.pc.faceSample.entity.FaceSampleEntity;
|
||||
import com.ycwl.basic.model.pc.faceSample.req.FaceSampleReqQuery;
|
||||
import com.ycwl.basic.model.pc.faceSample.resp.FaceSampleRespVO;
|
||||
import com.ycwl.basic.model.pc.scenic.entity.ScenicConfigEntity;
|
||||
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.entity.MemberSourceEntity;
|
||||
import com.ycwl.basic.model.pc.source.entity.SourceEntity;
|
||||
import com.ycwl.basic.model.task.resp.AddFaceSampleRespVo;
|
||||
import com.ycwl.basic.model.task.resp.SearchFaceRespVo;
|
||||
import com.ycwl.basic.ratelimiter.FixedRateLimiter;
|
||||
import com.ycwl.basic.ratelimiter.SlidingWindowRateLimiter;
|
||||
import com.ycwl.basic.repository.DeviceRepository;
|
||||
import com.ycwl.basic.repository.FaceRepository;
|
||||
import com.ycwl.basic.repository.ScenicRepository;
|
||||
import com.ycwl.basic.service.task.TaskFaceService;
|
||||
@ -55,7 +50,6 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.aliyuncs.DefaultAcsClient;
|
||||
import com.aliyuncs.IAcsClient;
|
||||
@ -103,6 +97,8 @@ public class TaskFaceServiceImpl implements TaskFaceService {
|
||||
|
||||
@Autowired
|
||||
private ScenicRepository scenicRepository;
|
||||
@Autowired
|
||||
private DeviceRepository deviceRepository;
|
||||
|
||||
private IAcsClient getClient() {
|
||||
DefaultProfile profile = DefaultProfile.getProfile(
|
||||
@ -195,29 +191,13 @@ public class TaskFaceServiceImpl implements TaskFaceService {
|
||||
if (matchList.get(0).getFaceItems().isEmpty()) {
|
||||
return respVo;
|
||||
}
|
||||
List<MatchLocalRecord> records = matchList.get(0).getFaceItems().stream()
|
||||
.map(item -> {
|
||||
MatchLocalRecord record = new MatchLocalRecord();
|
||||
record.setIdStr(item.getExtraData());
|
||||
record.setFaceSampleId(Long.parseLong(item.getExtraData()));
|
||||
if (StringUtils.isNumeric(item.getDbName())) {
|
||||
FaceSampleEntity faceSample = faceRepository.getFaceSample(record.getFaceSampleId());
|
||||
if (faceSample != null) {
|
||||
record.setFaceUrl(faceSample.getFaceUrl());
|
||||
record.setShotDate(faceSample.getCreateAt());
|
||||
}
|
||||
} else {
|
||||
record.setFaceUrl(getFaceUrl(record.getFaceSampleId()));
|
||||
}
|
||||
record.setScore(item.getScore());
|
||||
record.setConfidence(item.getConfidence());
|
||||
return record;
|
||||
})
|
||||
.collect(Collectors.toList());
|
||||
log.matchLocalRecord(records);
|
||||
List<SearchFaceResponse.Data.MatchListItem.FaceItemsItem> records = matchList.get(0).getFaceItems();
|
||||
log.setMatchRawRecord(records);
|
||||
List<Long> faceSampleIds = records.stream()
|
||||
.filter(record -> record.getScore() > 0.525F)
|
||||
.map(MatchLocalRecord::getFaceSampleId)
|
||||
.map(SearchFaceResponse.Data.MatchListItem.FaceItemsItem::getExtraData)
|
||||
.filter(StringUtils::isNumeric)
|
||||
.map(Long::valueOf)
|
||||
.collect(Collectors.toList());
|
||||
respVo.setFirstMatchRate(matchList.get(0).getFaceItems().get(0).getScore());
|
||||
respVo.setSampleListIds(faceSampleIds);
|
||||
@ -227,7 +207,33 @@ public class TaskFaceServiceImpl implements TaskFaceService {
|
||||
e.printStackTrace();
|
||||
throw new BaseException(e.getMessage());
|
||||
} finally {
|
||||
logMapper.insert(log);
|
||||
new Thread(() -> {
|
||||
if (log.getMatchRawRecord() != null) {
|
||||
List<MatchLocalRecord> collect = log.getMatchRawRecord().parallelStream().map(item -> {
|
||||
MatchLocalRecord record = new MatchLocalRecord();
|
||||
record.setIdStr(item.getExtraData());
|
||||
record.setFaceSampleId(Long.parseLong(item.getExtraData()));
|
||||
if (StringUtils.isNumeric(item.getDbName())) {
|
||||
FaceSampleEntity faceSample = faceRepository.getFaceSample(record.getFaceSampleId());
|
||||
if (faceSample != null) {
|
||||
DeviceEntity device = deviceRepository.getDevice(faceSample.getDeviceId());
|
||||
if (device != null) {
|
||||
record.setDeviceName(device.getName());
|
||||
}
|
||||
record.setFaceUrl(faceSample.getFaceUrl());
|
||||
record.setShotDate(faceSample.getCreateAt());
|
||||
}
|
||||
} else {
|
||||
record.setFaceUrl(getFaceUrl(record.getFaceSampleId()));
|
||||
}
|
||||
record.setScore(item.getScore());
|
||||
record.setConfidence(item.getConfidence());
|
||||
return record;
|
||||
}).collect(Collectors.toList());
|
||||
log.setMatchLocalRecord(JSON.toJSONString(collect));
|
||||
}
|
||||
logMapper.insert(log);
|
||||
}).start();
|
||||
}
|
||||
}
|
||||
|
||||
@ -289,20 +295,6 @@ public class TaskFaceServiceImpl implements TaskFaceService {
|
||||
sampleStoreDay = 7;
|
||||
}
|
||||
Date endDate = DateUtils.addDateDays(new Date(), -(sampleStoreDay + 1));
|
||||
List<FaceSampleEntity> faceSampleList = faceSampleMapper.listEntity(scenicId, endDate);
|
||||
if (faceSampleList.isEmpty()) {
|
||||
log.info("当前景区{},人脸样本为空", scenicId);
|
||||
return;
|
||||
}
|
||||
faceSampleList.forEach(faceSample -> {
|
||||
boolean success = deleteFaceSample(String.valueOf(scenicId), generateEntityId(faceSample));
|
||||
if (success) {
|
||||
log.info("当前景区{},人脸样本ID{},删除成功", scenicId, faceSample.getId());
|
||||
faceSampleMapper.deleteById(faceSample.getId());
|
||||
} else {
|
||||
log.info("当前景区{},人脸样本ID{},删除失败", scenicId, faceSample.getId());
|
||||
}
|
||||
});
|
||||
ListFaceEntitiesRequest listFaceEntitiesRequest = new ListFaceEntitiesRequest();
|
||||
listFaceEntitiesRequest.setDbName(String.valueOf(scenicId));
|
||||
listFaceEntitiesRequest.setOrder("asc");
|
||||
@ -342,6 +334,20 @@ public class TaskFaceServiceImpl implements TaskFaceService {
|
||||
}
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
List<FaceSampleEntity> faceSampleList = faceSampleMapper.listEntityBeforeDate(scenicId, endDate);
|
||||
if (faceSampleList.isEmpty()) {
|
||||
log.info("当前景区{},人脸样本为空", scenicId);
|
||||
return;
|
||||
}
|
||||
faceSampleList.forEach(faceSample -> {
|
||||
boolean success = deleteFaceSample(String.valueOf(scenicId), generateEntityId(faceSample));
|
||||
if (success) {
|
||||
log.info("当前景区{},人脸样本ID{},删除成功", scenicId, faceSample.getId());
|
||||
faceSampleMapper.deleteById(faceSample.getId());
|
||||
} else {
|
||||
log.info("当前景区{},人脸样本ID{},删除失败", scenicId, faceSample.getId());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -345,7 +345,8 @@ public class TaskTaskServiceImpl implements TaskService {
|
||||
if (templateList == null || templateList.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
if (Integer.valueOf(3).equals(scenicConfig.getBookRoutine())) {
|
||||
if (Integer.valueOf(3).equals(scenicConfig.getBookRoutine()) || Integer.valueOf(4).equals(scenicConfig.getBookRoutine())) {
|
||||
// 生成全部视频的逻辑
|
||||
templateList.forEach(template -> {
|
||||
createTaskByFaceIdAndTempalteId(faceId, template.getId(), 1);
|
||||
});
|
||||
|
Reference in New Issue
Block a user