package com.yhy.module.core.dal.mysql.calcbaserate;

import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.yhy.module.core.dal.dataobject.calcbaserate.CalcBaseRateItemDO;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;

/**
 * 基数费率项 Mapper
 *
 * @author yhy
 */
@Mapper
public interface CalcBaseRateItemMapper extends BaseMapperX<CalcBaseRateItemDO> {

    /**
     * 根据目录ID查询所有费率项
     */
    default List<CalcBaseRateItemDO> selectListByCalcBaseRateDirectoryId(Long calcBaseRateDirectoryId) {
        return selectList(new LambdaQueryWrapper<CalcBaseRateItemDO>()
                .eq(CalcBaseRateItemDO::getCalcBaseRateDirectoryId, calcBaseRateDirectoryId)
                .orderByAsc(CalcBaseRateItemDO::getSortOrder));
    }

    /**
     * 批量更新排序值：将 sortOrder >= threshold 的记录全部 +1
     */
    default void shiftSortOrder(Long calcBaseRateDirectoryId, Integer threshold) {
        update(CalcBaseRateItemDO.builder().build(),
                new com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper<CalcBaseRateItemDO>()
                        .eq(CalcBaseRateItemDO::getCalcBaseRateDirectoryId, calcBaseRateDirectoryId)
                        .ge(CalcBaseRateItemDO::getSortOrder, threshold)
                        .setSql("sort_order = sort_order + 1"));
    }
}
