package com.ruoyi.logistics.mapper;

import java.util.List;
import java.util.Set;

import com.ruoyi.logistics.domain.BizAddressBook;
import org.apache.ibatis.annotations.Param;

/**
 * 地址簿管理Mapper接口
 *
 * @author RuiJing
 * @date 2026-01-29
 */
public interface BizAddressBookMapper {
    /**
     * 查询地址簿管理
     *
     * @param addressId 地址簿管理主键
     * @return 地址簿管理
     */
    public BizAddressBook selectBizAddressBookByAddressId(Long addressId);

    /**
     * 查询地址簿管理列表
     *
     * @param bizAddressBook 地址簿管理
     * @return 地址簿管理集合
     */
    public List<BizAddressBook> selectBizAddressBookList(BizAddressBook bizAddressBook);

    /**
     * 新增地址簿管理
     *
     * @param bizAddressBook 地址簿管理
     * @return 结果
     */
    public int insertBizAddressBook(BizAddressBook bizAddressBook);

    /**
     * 修改地址簿管理
     *
     * @param bizAddressBook 地址簿管理
     * @return 结果
     */
    public int updateBizAddressBook(BizAddressBook bizAddressBook);

    /**
     * 删除地址簿管理
     *
     * @param addressId 地址簿管理主键
     * @return 结果
     */
    public int deleteBizAddressBookByAddressId(Long addressId);

    /**
     * 批量删除地址簿管理
     *
     * @param addressIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteBizAddressBookByAddressIds(Long[] addressIds);

    /**
     * 更新用户默认收货地址
     *
     * @param userId
     * @return
     */
    public int updateBizAddressBookDefault(Long userId);

    /**
     * 获取登录用户默认地址
     *
     * @return
     */
    public BizAddressBook selectDefaultAddressBook(BizAddressBook bizAddressBook);

    /**
     * 根据条件查询 地址
     *
     * @param contactNameSet  联系人集合
     * @param contactPhoneSet 联系电话集合
     * @param provinceNameSet 省集合
     * @param cityNameSet     市集合
     * @param countyNameSet   区集合
     * @param addressSet      详细地址集合
     * @param defaultFlageSet 默认状态集合
     * @return
     */
    List<BizAddressBook> getBizAddressBookList(@Param("contactNameSet") Set<String> contactNameSet,
                                               @Param("contactPhoneSet") Set<String> contactPhoneSet,
                                               @Param("provinceNameSet") Set<String> provinceNameSet,
                                               @Param("cityNameSet") Set<String> cityNameSet,
                                               @Param("countyNameSet") Set<String> countyNameSet,
                                               @Param("addressSet") Set<String> addressSet,
                                               @Param("defaultFlageSet") Set<String> defaultFlageSet);

    /**
     * 批量插入
     *
     * @param distinctBizAddressBookList
     */
    void insertBatch(List<BizAddressBook> distinctBizAddressBookList);

}
