0元购逻辑,直接送

This commit is contained in:
2025-01-05 14:20:24 +08:00
parent 7befe07e70
commit 3907b5eb7a
19 changed files with 231 additions and 26 deletions

View File

@ -41,6 +41,7 @@ import com.ycwl.basic.model.pc.video.entity.MemberVideoEntity;
import com.ycwl.basic.model.wx.WXPayOrderReqVO;
import com.ycwl.basic.model.wx.WxPayRespVO;
import com.ycwl.basic.model.wx.WxchatCallbackSuccessData;
import com.ycwl.basic.repository.OrderRepository;
import com.ycwl.basic.service.HttpService;
import com.ycwl.basic.service.mobile.WxPayService;
import com.ycwl.basic.service.pc.OrderService;
@ -100,6 +101,8 @@ public class WxPayServiceImpl implements WxPayService {
private SourceMapper sourceMapper;
@Autowired
private VideoMapper videoMapper;
@Autowired
private OrderRepository orderRepository;
@Override
public WxPayRespVO createOrder(WXPayOrderReqVO req) {
@ -211,6 +214,7 @@ public class WxPayServiceImpl implements WxPayService {
OrderRespVO byId = orderMapper.getById(orderId);
List<OrderItemEntity> orderItemList = orderMapper.listOrderItemByOrderId(orderId);
orderItemList.forEach(orderItemVO -> {
orderRepository.clearUserBuyItemCache(byId.getMemberId(), orderItemVO.getGoodsType(), orderItemVO.getGoodsId());
switch (orderItemVO.getGoodsType()) {
case 0: // 成片
MemberVideoEntity memberVideoEntity = new MemberVideoEntity();
@ -224,7 +228,8 @@ public class WxPayServiceImpl implements WxPayService {
case 2: // 源素材
MemberSourceEntity memberSourceEntity = new MemberSourceEntity();
memberSourceEntity.setMemberId(byId.getMemberId());
memberSourceEntity.setSourceId(orderItemVO.getGoodsId());
// 源素材的goodsId是人脸ID
memberSourceEntity.setFaceId(orderItemVO.getGoodsId());
memberSourceEntity.setType(orderItemVO.getGoodsType());
memberSourceEntity.setIsBuy(1);
memberSourceEntity.setOrderId(orderId);

View File

@ -133,16 +133,17 @@ public class TaskFaceServiceImpl implements TaskFaceService {
} else {
record.setFaceUrl(getFaceUrl(record.getFaceSampleId()));
}
record.setScore(item.getScore());
record.setConfidence(item.getConfidence());
return record;
})
.collect(Collectors.toList());
log.matchLocalRecord(records);
List<Long> faceSampleIds = records.stream()
.filter(record -> record.getConfidence() > 60)
.filter(record -> record.getScore() > 0.6)
.map(MatchLocalRecord::getFaceSampleId)
.collect(Collectors.toList());
respVo.setFirstMatchRate(matchList.get(0).getFaceItems().get(0).getConfidence());
respVo.setFirstMatchRate(matchList.get(0).getFaceItems().get(0).getScore());
respVo.setSampleListIds(faceSampleIds);
return respVo;
} catch (Exception e) {

View File

@ -1,6 +1,7 @@
package com.ycwl.basic.service.impl.task;
import com.alibaba.fastjson.JSON;
import com.ycwl.basic.biz.OrderBiz;
import com.ycwl.basic.constant.TaskConstant;
import com.ycwl.basic.mapper.FaceMapper;
import com.ycwl.basic.mapper.FaceSampleMapper;
@ -9,6 +10,7 @@ import com.ycwl.basic.mapper.SourceMapper;
import com.ycwl.basic.mapper.TaskMapper;
import com.ycwl.basic.mapper.TemplateMapper;
import com.ycwl.basic.mapper.VideoMapper;
import com.ycwl.basic.model.mobile.order.PriceObj;
import com.ycwl.basic.model.pc.face.resp.FaceRespVO;
import com.ycwl.basic.model.pc.faceSample.resp.FaceSampleRespVO;
import com.ycwl.basic.model.pc.renderWorker.entity.RenderWorkerEntity;
@ -71,6 +73,8 @@ public class TaskTaskServiceImpl implements TaskService {
private TemplateRepository templateRepository;
@Autowired
private VideoTaskRepository videoTaskRepository;
@Autowired
private OrderBiz orderBiz;
private RenderWorkerEntity getWorker(@NonNull WorkerAuthReqVo req) {
String accessKey = req.getAccessKey();
@ -127,6 +131,10 @@ public class TaskTaskServiceImpl implements TaskService {
if (faceId == null) {
return;
}
boolean canGenerate = templateRepository.determineTemplateCanGenerate(templateId, faceId);
if (!canGenerate) {
return;
}
TemplateConfigEntity config = templateRepository.getTemplateConfig(templateId);
FaceRespVO faceRespVO = faceMapper.getById(faceId);
if (faceRespVO == null) {
@ -237,6 +245,10 @@ public class TaskTaskServiceImpl implements TaskService {
task.faceSampleId = faceSampleIds;
task.memberId = faceRespVO.getMemberId();
task.callback = () -> {
boolean canGenerate = templateRepository.determineTemplateCanGenerate(templateId, faceId);
if (!canGenerate) {
return;
}
List<SourceEntity> videoSourceList = sourceMapper.listVideoByFaceRelation(faceId);
Map<String, List<SourceEntity>> sourcesMap = videoSourceList.stream()
.peek(item -> item.setUrl(item.getVideoUrl()))
@ -268,6 +280,10 @@ public class TaskTaskServiceImpl implements TaskService {
memberVideoEntity.setTaskId(list.get(0).getId());
VideoEntity video = videoMapper.findByTaskId(list.get(0).getId());
if (video != null) {
PriceObj priceObj = orderBiz.queryPrice(0, video.getId());
if (priceObj.getPrice().equals(BigDecimal.ZERO)) {
memberVideoEntity.setIsBuy(1);
}
memberVideoEntity.setVideoId(video.getId());
}
}
@ -296,7 +312,6 @@ public class TaskTaskServiceImpl implements TaskService {
if (video != null) {
video.setVideoUrl(task.getVideoUrl());
videoMapper.update(video);
videoMapper.updateRelationWhenTaskSuccess(taskId, video.getId());
} else {
video = new VideoEntity();
video.setId(SnowFlakeUtil.getLongId());
@ -307,8 +322,13 @@ public class TaskTaskServiceImpl implements TaskService {
video.setVideoUrl(task.getVideoUrl());
video.setCreateTime(new Date());
videoMapper.add(video);
videoMapper.updateRelationWhenTaskSuccess(taskId, video.getId());
}
int isBuy = 0;
PriceObj priceObj = orderBiz.queryPrice(0, video.getId());
if (priceObj.getPrice().equals(BigDecimal.ZERO)) {
isBuy = 1;
}
videoMapper.updateRelationWhenTaskSuccess(taskId, video.getId(), isBuy);
}
@Override