diff --git a/src/main/java/com/ycwl/basic/biz/OrderBiz.java b/src/main/java/com/ycwl/basic/biz/OrderBiz.java index bf6481dc..f1731a34 100644 --- a/src/main/java/com/ycwl/basic/biz/OrderBiz.java +++ b/src/main/java/com/ycwl/basic/biz/OrderBiz.java @@ -220,6 +220,7 @@ public class OrderBiz { break; case 1: // 视频原素材 case 2: // 照片原素材 + case 13: // AI微单 sourceRepository.setUserIsBuyItem(order.getMemberId(), item.getGoodsType(), item.getGoodsId(), order.getId()); break; case 3: diff --git a/src/main/java/com/ycwl/basic/controller/mobile/AppOrderV2Controller.java b/src/main/java/com/ycwl/basic/controller/mobile/AppOrderV2Controller.java index 1793552f..706748ae 100644 --- a/src/main/java/com/ycwl/basic/controller/mobile/AppOrderV2Controller.java +++ b/src/main/java/com/ycwl/basic/controller/mobile/AppOrderV2Controller.java @@ -86,7 +86,7 @@ public class AppOrderV2Controller { TaskEntity task = videoTaskRepository.getTaskById(video.getTaskId()); request.setFaceId(task.getFaceId()); } - case RECORDING_SET, PHOTO_SET -> request.setFaceId(Long.valueOf(productItem.getProductId())); + case RECORDING_SET, PHOTO_SET, AI_CAM_PHOTO_SET -> request.setFaceId(Long.valueOf(productItem.getProductId())); } } @@ -119,6 +119,14 @@ public class AppOrderV2Controller { Integer count = sourceMapper.countUser(sourceReqQuery); product.setQuantity(count); break; + case AI_CAM_PHOTO_SET: + SourceReqQuery aiPhotoSetReqQuery = new SourceReqQuery(); + aiPhotoSetReqQuery.setMemberId(currentUserId); + aiPhotoSetReqQuery.setType(13); + aiPhotoSetReqQuery.setFaceId(face.getId()); + Integer _count = sourceMapper.countUser(aiPhotoSetReqQuery); + product.setQuantity(_count); + break; default: log.warn("未知的商品类型,跳过重复购买检查: productType={}", product.getProductType()); break; diff --git a/src/main/java/com/ycwl/basic/repository/SourceRepository.java b/src/main/java/com/ycwl/basic/repository/SourceRepository.java index 324ea8e3..c070c1ce 100644 --- a/src/main/java/com/ycwl/basic/repository/SourceRepository.java +++ b/src/main/java/com/ycwl/basic/repository/SourceRepository.java @@ -41,6 +41,9 @@ public class SourceRepository { } public void setUserIsBuyItem(Long memberId, int type, Long faceId, Long orderId) { + if (type == 13) { + type = 3; // compact + } MemberSourceEntity memberSource = new MemberSourceEntity(); memberSource.setMemberId(memberId); memberSource.setFaceId(faceId); diff --git a/src/main/java/com/ycwl/basic/service/mobile/impl/GoodsServiceImpl.java b/src/main/java/com/ycwl/basic/service/mobile/impl/GoodsServiceImpl.java index c24bcce3..22a35b49 100644 --- a/src/main/java/com/ycwl/basic/service/mobile/impl/GoodsServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/mobile/impl/GoodsServiceImpl.java @@ -575,7 +575,7 @@ public class GoodsServiceImpl implements GoodsService { if (query.getGoodsId() != null) { list = list.stream().filter(source -> source.getId().equals(query.getGoodsId())).toList(); } - if (!Integer.valueOf(2).equals(query.getSourceType())) { + if (Integer.valueOf(1).equals(query.getSourceType())) { return list.stream().map(source -> { GoodsUrlVO goodsUrlVO = new GoodsUrlVO(); goodsUrlVO.setGoodsType(source.getType()); @@ -594,7 +594,7 @@ public class GoodsServiceImpl implements GoodsService { } return true; }).count(); - IsBuyRespVO isBuy = orderBiz.isBuy(face.getScenicId(), face.getMemberId(), face.getId(), query.getSourceType(), face.getId()); + IsBuyRespVO isBuy = orderBiz.isBuy(face.getScenicId(), face.getMemberId(), face.getId(), sourceType == 3 ? 13 : sourceType, face.getId()); if (count > 0) { if (!isBuy.isBuy()) { return Collections.emptyList(); @@ -831,6 +831,9 @@ public class GoodsServiceImpl implements GoodsService { } else if (type == 2) { goodsPageVO.setGoodsName("照片集"); goodsPageVO.setTemplateCoverUrl(scenicConfig.getString("photo_cover_url")); + } else if (type == 3) { + goodsPageVO.setGoodsName("AI微单"); + goodsPageVO.setTemplateCoverUrl(scenicConfig.getString("ai_camera_cover_url")); } else { goodsPageVO.setGoodsName("未知商品"); } diff --git a/src/main/java/com/ycwl/basic/service/pc/impl/FaceServiceImpl.java b/src/main/java/com/ycwl/basic/service/pc/impl/FaceServiceImpl.java index 55936f21..ab168d68 100644 --- a/src/main/java/com/ycwl/basic/service/pc/impl/FaceServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/pc/impl/FaceServiceImpl.java @@ -558,6 +558,7 @@ 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()); @@ -599,7 +600,7 @@ public class FaceServiceImpl implements FaceService { // AI微单:只有存在type=3的数据时才添加 boolean hasAiCam = sourceList.stream().anyMatch(source -> source.getType() == 3); if (hasAiCam) { - IsBuyRespVO isBuyRespVO = orderBiz.isBuy(face.getScenicId(), userId, faceId, SourceType.AI_CAM.getCode(), faceId); + IsBuyRespVO isBuyRespVO = orderBiz.isBuy(face.getScenicId(), userId, faceId, 13, faceId); sourceAiCamContent.setSourceType(isBuyRespVO.getGoodsType()); sourceAiCamContent.setContentId(isBuyRespVO.getGoodsId()); if (isBuyRespVO.isBuy()) { @@ -629,7 +630,7 @@ public class FaceServiceImpl implements FaceService { } else if (type == 3) { sourceAiCamContent.setSourceType(13); sourceAiCamContent.setLockType(-1); - sourceAiCamContent.setTemplateCoverUrl(list.getFirst().getUrl()); + sourceAiCamContent.setTemplateCoverUrl(configManager.getString("ai_camera_cover_url")); } }); return contentList; diff --git a/src/main/java/com/ycwl/basic/service/pc/impl/OrderServiceImpl.java b/src/main/java/com/ycwl/basic/service/pc/impl/OrderServiceImpl.java index c06a4203..ab4e47f7 100644 --- a/src/main/java/com/ycwl/basic/service/pc/impl/OrderServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/pc/impl/OrderServiceImpl.java @@ -177,6 +177,9 @@ public class OrderServiceImpl implements OrderService { } else if (Integer.valueOf(2).equals(orderItemList.getFirst().getGoodsType())) { item.setGoodsName("照片集"); item.setOrderType("照片集"); + } else if (Integer.valueOf(3).equals(orderItemList.getFirst().getGoodsType())) { + item.setGoodsName("AI微单"); + item.setOrderType("AI微单"); } else if (Integer.valueOf(0).equals(orderItemList.getFirst().getGoodsType())) { item.setOrderType("旅行Vlog"); item.setGoodsName(orderItemList.getFirst().getGoodsName()); @@ -237,6 +240,9 @@ public class OrderServiceImpl implements OrderService { } else if (Integer.valueOf(2).equals(orderItemList.getFirst().getGoodsType())) { item.setGoodsName("照片集"); item.setOrderType("照片集"); + } else if (Integer.valueOf(3).equals(orderItemList.getFirst().getGoodsType())) { + item.setGoodsName("AI微单"); + item.setOrderType("AI微单"); } else if (Integer.valueOf(0).equals(orderItemList.getFirst().getGoodsType())) { item.setOrderType("旅行Vlog"); item.setGoodsName(orderItemList.getFirst().getGoodsName()); @@ -940,11 +946,13 @@ public class OrderServiceImpl implements OrderService { case PHOTO_SET -> 2; case VLOG_VIDEO -> 0; case RECORDING_SET -> 1; + case AI_CAM_PHOTO_SET -> 13; default -> 0; }; Long goodsId = switch (productItem.getProductType()) { case PHOTO_LOG -> Long.valueOf(productItem.getProductId()); case PHOTO_SET, RECORDING_SET -> face.getId(); + case AI_CAM_PHOTO_SET -> face.getId(); case VLOG_VIDEO -> { List videos = memberRelationRepository.listRelationByFaceAndTemplate(face.getId(), Long.valueOf(productItem.getProductId())); yield videos.getFirst().getVideoId();