package com.microservices.zone.detail.mapper;

import com.microservices.zone.detail.domain.ZoneSort;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * 特色专区排序Mapper接口
 *
 * @author otto
 * @date 2023-05-09
 */
@Mapper
public interface ZoneSortMapper {
    /**
     * 查询专区下最大序号
     *
     * @param zoneId
     * @return
     */
    Integer selectMaxSortByZoneId(@Param("zoneId") Long zoneId, @Param("table") String table);

    /**
     * 查询专区下总数量
     *
     * @param zoneId
     * @return
     */
    Integer selectCountByZoneId(@Param("zoneId") Long zoneId, @Param("table") String table);

    /**
     * 获取指定序号的数据
     *
     * @param data
     * @param order
     * @param isContainsSelf
     * @param isAsc
     * @return
     */
    ZoneSort selectDataByOrderAndZoneId(@Param("data") ZoneSort data, @Param("order") Integer order, @Param("isContainsSelf") boolean isContainsSelf, @Param("table") String table, @Param("isAsc") boolean isAsc);

    /**
     * 查询专区下最小排序值
     *
     * @param zoneId
     * @return
     */
    int selectMinSortByZoneId(@Param("zoneId") Long zoneId, @Param("table") String table);

    /**
     * 批量增加大于指定排序的排序值
     *
     * @param zoneId
     * @param setSort
     * @return
     */
    Integer batchUpdateSortIncreased(@Param("zoneId") Long zoneId, @Param("setSort") Integer setSort, @Param("table") String table);

    /**
     * 批量减少小于指定排序的排序值
     *
     * @param zoneId
     * @param setSort
     * @param table
     * @return
     */
    Integer batchUpdateSortDecrease(@Param("zoneId") Long zoneId, @Param("setSort") Integer setSort, @Param("table") String table);
}
