package com.ai.da.service;

import com.ai.da.mapper.primary.entity.Design;
import com.ai.da.model.dto.*;
import com.ai.da.model.vo.CollectionSketchVO;
import com.ai.da.model.vo.DesignCollectionVO;
import com.ai.da.model.vo.DesignItemDetailVO;
import com.ai.da.model.vo.DesignLikeVO;
import com.ai.da.python.vo.DesignPythonObjects;
import com.baomidou.mybatisplus.extension.service.IService;

import java.math.BigDecimal;
import java.util.List;

/**
 * 服务类
 *
 * @author yanglei
 * @since 2022-09-11
 */
public interface DesignService extends IService<Design> {
    /**
     * design
     *
     * @param designDTO
     * @return
     */
    DesignCollectionVO designCollection(DesignCollectionDTO designDTO);

    /**
     * redesign
     *
     * @param reDesignDTO
     * @return
     */
    DesignCollectionVO reDesignCollection(ReDesignCollectionDTO reDesignDTO);

    /**
     * redesign
     *
     * @param designId
     * @return
     */
    DesignCollectionVO designItemList(Long designId);

    /**
     * @return
     */
    BigDecimal countDesignProcess();

    /**
     * like
     *
     * @param designLikeDTO
     * @return
     */
    DesignLikeVO like(DesignLikeDTO designLikeDTO);

    /**
     * dislike
     *
     * @param disDesignLikeDTO
     * @return
     */
    Boolean dislike(DisDesignLikeDTO disDesignLikeDTO);

    /**
     * generateHighDesign
     *
     * @param generateHighDesignDTO
     * @return
     */
    String generateHighDesign(GenerateHighDesignDTO generateHighDesignDTO);

    /**
     * deleteHighDesign
     *
     * @param generateHighDesignDTO
     * @return
     */
    Boolean deleteHighDesign(GenerateHighDesignDTO generateHighDesignDTO);

    /**
     * detail
     *
     * @param designItemId
     * @return
     */
    DesignItemDetailVO detail(Long designPythonOutfitId, Long designItemId);

    Integer designProcess(String processId);

    void relationImageId(DesignPythonObjects objects);

    List<CollectionSketchVO> sketchesBoundingBox(SketchesBoundingBoxDTO sketchesBoundingBoxDTO);

    List<String> getModel(List<Long> designItemIdList);
}
