diff --git a/src/main/java/com/ycwl/basic/controller/mobile/AppPuzzleController.java b/src/main/java/com/ycwl/basic/controller/mobile/AppPuzzleController.java index b83480a0..51db72b0 100644 --- a/src/main/java/com/ycwl/basic/controller/mobile/AppPuzzleController.java +++ b/src/main/java/com/ycwl/basic/controller/mobile/AppPuzzleController.java @@ -33,7 +33,6 @@ import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.math.BigDecimal; import java.util.Collections; import java.util.List; import java.util.stream.Collectors; @@ -62,8 +61,9 @@ public class AppPuzzleController { if (faceId == null) { return ApiResponse.fail("faceId不能为空"); } - int count = puzzleRepository.countRecordsByFaceId(faceId); - return ApiResponse.success(count); + // 通过关联表查询数量 + List relations = memberPuzzleMapper.listByFaceId(faceId); + return ApiResponse.success(relations.size()); } /** @@ -74,9 +74,17 @@ public class AppPuzzleController { if (faceId == null) { return ApiResponse.fail("faceId不能为空"); } - List records = puzzleRepository.getRecordsByFaceId(faceId); - List result = records.stream() - .map(this::convertToContentPageVO) + // 通过关联表查询,获取关联的拼图记录 + List relations = memberPuzzleMapper.listByFaceId(faceId); + List result = relations.stream() + .map(relation -> { + PuzzleGenerationRecordEntity record = puzzleRepository.getRecordById(relation.getRecordId()); + if (record == null) { + return null; + } + return convertToContentPageVO(record, relation); + }) + .filter(vo -> vo != null) .collect(Collectors.toList()); return ApiResponse.success(result); } @@ -93,7 +101,9 @@ public class AppPuzzleController { if (record == null) { return ApiResponse.fail("未找到对应的拼图记录"); } - ContentPageVO result = convertToContentPageVO(record); + // 查询关联记录 + MemberPuzzleEntity relation = memberPuzzleMapper.getByFaceAndRecord(record.getFaceId(), recordId); + ContentPageVO result = convertToContentPageVO(record, relation); return ApiResponse.success(result); } @@ -273,8 +283,11 @@ public class AppPuzzleController { /** * 将PuzzleGenerationRecordEntity转换为ContentPageVO + * + * @param record 拼图生成记录 + * @param relation 会员拼图关联记录,用于获取免费状态 */ - private ContentPageVO convertToContentPageVO(PuzzleGenerationRecordEntity record) { + private ContentPageVO convertToContentPageVO(PuzzleGenerationRecordEntity record, MemberPuzzleEntity relation) { ContentPageVO vo = new ContentPageVO(); // 内容类型为3(拼图) @@ -310,21 +323,11 @@ public class AppPuzzleController { vo.setIsBuy(1); } else { vo.setIsBuy(0); - PriceCalculationRequest calculationRequest = new PriceCalculationRequest(); - ProductItem productItem = new ProductItem(); - productItem.setProductType(ProductType.PHOTO_LOG); - productItem.setProductId(record.getTemplateId().toString()); - productItem.setPurchaseCount(1); - productItem.setScenicId(face.getScenicId().toString()); - calculationRequest.setProducts(Collections.singletonList(productItem)); - calculationRequest.setUserId(face.getMemberId()); - calculationRequest.setFaceId(record.getFaceId()); - calculationRequest.setPreviewOnly(true); // 仅查询价格,不实际使用优惠 - PriceCalculationResult calculationResult = iPriceCalculationService.calculatePrice(calculationRequest); - if (calculationResult.getFinalAmount().compareTo(BigDecimal.ZERO) > 0) { - vo.setFreeCount(0); - } else { + // 从关联记录读取免费状态 + if (relation != null && FreeStatus.isFree(relation.getIsFree())) { vo.setFreeCount(1); + } else { + vo.setFreeCount(0); } } } 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 03e1478f..804c9e43 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 @@ -47,13 +47,11 @@ import com.ycwl.basic.model.pc.video.entity.VideoEntity; import com.ycwl.basic.model.repository.TaskUpdateResult; import com.ycwl.basic.model.task.resp.SearchFaceRespVo; -import com.ycwl.basic.pricing.dto.PriceCalculationRequest; -import com.ycwl.basic.pricing.dto.PriceCalculationResult; -import com.ycwl.basic.pricing.dto.ProductItem; -import com.ycwl.basic.pricing.enums.ProductType; -import com.ycwl.basic.pricing.service.IPriceCalculationService; +import com.ycwl.basic.constant.FreeStatus; +import com.ycwl.basic.model.pc.puzzle.entity.MemberPuzzleEntity; import com.ycwl.basic.puzzle.entity.PuzzleGenerationRecordEntity; import com.ycwl.basic.puzzle.entity.PuzzleTemplateEntity; +import com.ycwl.basic.puzzle.mapper.MemberPuzzleMapper; import com.ycwl.basic.puzzle.mapper.PuzzleGenerationRecordMapper; import com.ycwl.basic.puzzle.mapper.PuzzleTemplateMapper; import com.ycwl.basic.puzzle.repository.PuzzleRepository; @@ -201,12 +199,12 @@ public class FaceServiceImpl implements FaceService { @Autowired private PuzzleGenerationRecordMapper puzzleGenerationRecordMapper; @Autowired - private IPriceCalculationService iPriceCalculationService; - @Autowired private PuzzleTemplateMapper puzzleTemplateMapper; @Autowired private PuzzleRepository puzzleRepository; @Autowired + private MemberPuzzleMapper memberPuzzleMapper; + @Autowired private FaceDetectLogAiCamService faceDetectLogAiCamService; @Autowired private OrderRepository orderRepository; @@ -566,21 +564,16 @@ public class FaceServiceImpl implements FaceService { } } } - PriceCalculationRequest calculationRequest = new PriceCalculationRequest(); - ProductItem productItem = new ProductItem(); - productItem.setProductType(ProductType.PHOTO_LOG); - productItem.setProductId(template.getId().toString()); - productItem.setPurchaseCount(1); - productItem.setScenicId(face.getScenicId().toString()); - calculationRequest.setProducts(Collections.singletonList(productItem)); - calculationRequest.setUserId(face.getMemberId()); - calculationRequest.setFaceId(face.getId()); - calculationRequest.setPreviewOnly(true); // 仅查询价格,不实际使用优惠 - PriceCalculationResult calculationResult = iPriceCalculationService.calculatePrice(calculationRequest); - if (calculationResult.getFinalAmount().compareTo(BigDecimal.ZERO) > 0) { - sfpContent.setFreeCount(0); + // 从 member_puzzle 关联记录读取免费状态 + if (optionalRecord.isPresent()) { + MemberPuzzleEntity memberPuzzle = memberPuzzleMapper.getByFaceAndRecord(faceId, optionalRecord.get().getId()); + if (memberPuzzle != null && FreeStatus.isFree(memberPuzzle.getIsFree())) { + sfpContent.setFreeCount(1); + } else { + sfpContent.setFreeCount(0); + } } else { - sfpContent.setFreeCount(1); + sfpContent.setFreeCount(0); } contentList.add(1, sfpContent); }