diff --git a/yudao-module-mall/yudao-module-promotion/src/main/java/cn/iocoder/yudao/module/promotion/service/combination/CombinationRecordServiceImpl.java b/yudao-module-mall/yudao-module-promotion/src/main/java/cn/iocoder/yudao/module/promotion/service/combination/CombinationRecordServiceImpl.java index 862e130..46929ca 100644 --- a/yudao-module-mall/yudao-module-promotion/src/main/java/cn/iocoder/yudao/module/promotion/service/combination/CombinationRecordServiceImpl.java +++ b/yudao-module-mall/yudao-module-promotion/src/main/java/cn/iocoder/yudao/module/promotion/service/combination/CombinationRecordServiceImpl.java @@ -77,7 +77,6 @@ public class CombinationRecordServiceImpl implements CombinationRecordService { @Resource public SocialClientApi socialClientApi; - // TODO @芋艿:在详细预览下; @Override public KeyValue validateCombinationRecord( Long userId, Long activityId, Long headId, Long skuId, Integer count) { @@ -97,7 +96,7 @@ public class CombinationRecordServiceImpl implements CombinationRecordService { } // 2. 父拼团是否存在,是否已经满了 - if (headId != null) { + if (isJoinCombination(headId)) { // 2.1. 查询进行中的父拼团 CombinationRecordDO record = combinationRecordMapper.selectByHeadId(headId, CombinationRecordStatusEnum.IN_PROGRESS.getStatus()); if (record == null) { @@ -153,6 +152,16 @@ public class CombinationRecordServiceImpl implements CombinationRecordService { return new KeyValue<>(activity, product); } + /** + * 是否加入已有拼团。 + * + * 前端开团时可能不传 headId,也可能传 {@link CombinationRecordDO#HEAD_ID_GROUP},都应视为新开团; + * 只有传入真实团长记录编号时,才需要按参团校验父拼团。 + */ + private static boolean isJoinCombination(Long headId) { + return headId != null && ObjUtil.notEqual(headId, CombinationRecordDO.HEAD_ID_GROUP); + } + @Override @Transactional(rollbackFor = Exception.class) public CombinationRecordDO createCombinationRecord(CombinationRecordCreateReqDTO reqDTO) { @@ -166,7 +175,7 @@ public class CombinationRecordServiceImpl implements CombinationRecordService { ProductSkuRespDTO sku = productSkuApi.getSku(reqDTO.getSkuId()); CombinationRecordDO record = CombinationActivityConvert.INSTANCE.convert(reqDTO, keyValue.getKey(), user, spu, sku); // 2.1. 如果是团长需要设置 headId 为 CombinationRecordDO#HEAD_ID_GROUP - if (record.getHeadId() == null) { + if (!isJoinCombination(record.getHeadId())) { record.setStartTime(LocalDateTime.now()) .setExpireTime(LocalDateTime.now().plusHours(keyValue.getKey().getLimitDuration())) .setHeadId(CombinationRecordDO.HEAD_ID_GROUP);