package com.ai.da.service;

import com.ai.da.mapper.primary.entity.DesignItem;
import com.ai.da.model.dto.DesignSingleDTO;
import com.ai.da.model.dto.DesignSingleIncludeLayersDTO;
import com.ai.da.model.vo.*;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.extension.service.IService;

import java.io.IOException;
import java.util.List;
import java.util.Map;

/**
 * 服务类
 *
 * @author yanglei
 * @since 2022-09-11
 */
public interface DesignItemService extends IService<DesignItem> {

    Long saveOne(DesignItem designItem);

    int deleteByCollectionId(Long collectionId);

    List<DesignItem> getByDesignId(Long designId);

    void updateLikeStatus(Long designItemId, Byte hasLike);

    void updateDesignHighUrl(Long designItemId, String highUrl, String timeZone);

    /**
     * 切换系统elemnt
     *
     * @param id
     * @param type
     */
    GetNextSysElementVO getNextSysElement(Long id, String type, String operateType);

    /**
     * 单个design
     *
     * @param designSingleDTO
     */
    DesignCollectionItemVO designSingle(DesignSingleDTO designSingleDTO);

    /**
     * print打点
     *
     * @param designSingleDTO
     */
    String printDot(DesignSingleDTO designSingleDTO);

    DesignSingleVO designSingleIncludeLayers(DesignSingleIncludeLayersDTO designSingleIncludeLayersDTO);

    Map<String, List<String>> setPriorityAndUndividedLayer(JSONArray layers);

    Map<String, String> setTypeAndUndividedLayer(JSONArray layers);

    ComposeLayersVO editLayersPositionAndScale(EditLayersPositionAndScaleVO positionAndScaleVO) throws IOException;

    List<DesignItem> selectDesignIdById(List<Long> designItemIdList);

    Long getCountByUserAndTime(String startTime, String endTime, List<Long> accountIds);

    void convertHistoryMaskWithoutGradient();

    void updateMaskUrl();
}
