package com.red.circle.order.infra.convertor;

import com.red.circle.framework.core.convertor.ConvertorModel;
import com.red.circle.order.domain.product.IAppPurchaseProduct;
import com.red.circle.order.domain.product.PayPlatformProductPackage;
import com.red.circle.order.infra.database.rds.entity.product.ProductConfig;
import com.red.circle.order.infra.database.rds.entity.product.ProductConfigPackage;
import com.red.circle.order.infra.database.rds.entity.product.ProductConfigV2;
import com.red.circle.order.inner.model.dto.ProductConfigDTO;
import com.red.circle.order.inner.model.dto.ProductConfigPackageDTO;
import java.util.List;
import org.mapstruct.Mapper;

/**
 * @author pengliang on 2020/12/3
 */
@Mapper(componentModel = ConvertorModel.SPRING)
public interface SysProductConfigConvertor {

  List<IAppPurchaseProduct> configToListIAppPurchaseProduct(
      List<ProductConfigV2> productConfigList);

  IAppPurchaseProduct entityToIAppPurchaseProduct(ProductConfig productConfig);

  PayPlatformProductPackage entityToPayPlatformProductPackage(
      ProductConfigPackage productConfigPackage);

  List<PayPlatformProductPackage> entityToPayPlatformProductPackage(
      List<ProductConfigPackage> packages);

  IAppPurchaseProduct productV2ToIAppPurchaseProduct(ProductConfigV2 productConfig);

  List<ProductConfigDTO> toProductConfigDTO(List<ProductConfig> productConfig);

  List<ProductConfigPackageDTO> toProductConfigPackageDTO(
      List<ProductConfigPackage> productConfigPackages);
}
