package com.jeesharp.business.modules.mall.service.impl;

import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.jeesharp.business.modules.mall.entity.MallProductTemplateItem;
import com.jeesharp.business.modules.mall.mapper.MallProductTemplateItemMapper;
import com.jeesharp.business.modules.mall.service.MallProductTemplateItemService;
import com.jeesharp.business.modules.common.constants.PlatformTenantConstants;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
import java.util.stream.Collectors;

/**
 * 商品发布模板明细领域服务实现。
 *
 * @author jeesharp
 * @since 2026-05-15
 */
@Service
@AllArgsConstructor
@Transactional(readOnly = true)
public class MallProductTemplateItemServiceImpl implements MallProductTemplateItemService {

    private final MallProductTemplateItemMapper mallProductTemplateItemMapper;

    @Override
    public List<MallProductTemplateItem> listByTemplateId(String templateId) {
        if (StrUtil.isBlank(templateId)) {
            return List.of();
        }
        return mallProductTemplateItemMapper.selectByTemplateIdAndTenantCode(
            PlatformTenantConstants.PLATFORM_TENANT_CODE,
            templateId.trim());
    }

    @Override
    @Transactional(readOnly = false)
    public void removeByTemplateId(String templateId) {
        List<MallProductTemplateItem> list = listByTemplateId(templateId);
        if (CollUtil.isEmpty(list)) {
            return;
        }
        List<String> ids = list.stream().map(MallProductTemplateItem::getId).collect(Collectors.toList());
        mallProductTemplateItemMapper.batchDelete(ids.toArray(new String[0]));
    }

    @Override
    @Transactional(readOnly = false)
    public void batchInsert(List<MallProductTemplateItem> items) {
        if (CollUtil.isEmpty(items)) {
            return;
        }
        for (MallProductTemplateItem it : items) {
            mallProductTemplateItemMapper.insert(it);
        }
    }
}
