package cn.pluss.platform.converter;

import cn.pluss.platform.dto.MerchantBaseInfoDTO;
import cn.pluss.platform.entity.MerchantBaseInfo;
import cn.pluss.platform.entity.MerchantStore;
import cn.pluss.platform.entity.UserApp;
import cn.pluss.platform.vo.MerchantBaseInfoVO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;

import java.util.List;

/**
 * @author DJH
 * 实体类属性转换类
 */
@Mapper
public interface MerchantBaseInfoConverter {
    MerchantBaseInfoConverter INSTANCE = Mappers.getMapper(MerchantBaseInfoConverter.class);

    /**
     * 实体类转DTO
     * @param entity
     * @return
     */
    MerchantBaseInfoDTO domain2dto(MerchantBaseInfo entity);

    /**
     * @param entity
     * @return
     */
    MerchantBaseInfoVO domain2VO(MerchantBaseInfo entity);

    /**
     * @param entity
     * @return
     */
    MerchantBaseInfo vo2domain(MerchantBaseInfoVO entity);

    /**
     * DTO转实体类
     * @param dto
     * @return
     */
    MerchantBaseInfo dto2Domain(MerchantBaseInfoDTO dto);

    /**
     * MerchantBaseInfo 转 MerchantStore
     * @param entity
     * @return
     */
    @Mappings({
            @Mapping(source = "alias", target = "storeName"),
            @Mapping(source = "alias", target = "merchantName")
    })
    MerchantStore baseInfo2StoreInfo(MerchantBaseInfo entity);

    /**
     * MerchantBaseInfo 属性映射到 UserApp中
     * @param entity
     * @return
     */
    UserApp baseInfo2UserApp(MerchantBaseInfo entity);

    /**
     * 实体类转DTO
     * @param entityList
     * @return
     */
    List<MerchantBaseInfoDTO> domain2dto(List<MerchantBaseInfo> entityList);
}
