@Override
    @Transactional(rollbackFor = Exception.class)
    public Long createCombinationActivity(CombinationActivityCreateReqVO createReqVO) {
        // 校验商品 SPU 是否存在是否参加的别的活动
        validateProductConflict(createReqVO.getSpuId(), null);
        // 校验商品是否存在
        validateProductExists(createReqVO.getSpuId(), createReqVO.getProducts());

        // 插入拼团活动
        CombinationActivityDO activity = CombinationActivityConvert.INSTANCE.convert(createReqVO)
                .setStatus(CommonStatusEnum.ENABLE.getStatus());
        combinationActivityMapper.insert(activity);
        // 插入商品
        List<CombinationProductDO> products = CombinationActivityConvert.INSTANCE.convertList(createReqVO.getProducts(), activity);
        combinationProductMapper.insertBatch(products);
        return activity.getId();
    }
@Test
    public void testCreateCombinationActivity_success() {
        // 准备参数
        CombinationActivityCreateReqVO reqVO = randomPojo(CombinationActivityCreateReqVO.class);

        // 调用
        Long combinationActivityId = combinationActivityService.createCombinationActivity(reqVO);
        // 断言
        assertNotNull(combinationActivityId);
        // 校验记录的属性是否正确
        CombinationActivityDO combinationActivity = combinationActivityMapper.selectById(combinationActivityId);
        assertPojoEquals(reqVO, combinationActivity);
    }