package shop.alien.store.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import shop.alien.entity.store.StoreStaffTitle;

/**
 * 员工标题服务接口
 *
 * @author system
 * @since 2025-01-XX
 */
public interface StoreStaffTitleService extends IService<StoreStaffTitle> {

    /**
     * 分页查询员工标题列表
     * <p>
     * 根据店铺ID查询员工标题列表，支持分页
     * 只返回未删除的记录
     * </p>
     *
     * @param page    分页页数，必须大于0
     * @param size    分页条数，必须大于0且不超过100
     * @param storeId 店铺ID，可选
     * @return 员工标题列表分页结果
     */
    IPage<StoreStaffTitle> queryStaffTitleList(Integer page, Integer size, Integer storeId);

    /**
     * 新增员工标题
     * <p>
     * 新增员工标题，自动计算员工数量
     * </p>
     *
     * @param storeStaffTitle 员工标题信息
     * @return 新增结果，成功返回1，失败返回0
     */
    Integer addStaffTitle(StoreStaffTitle storeStaffTitle);

    /**
     * 更新员工标题
     * <p>
     * 更新员工标题信息，自动重新计算员工数量
     * </p>
     *
     * @param storeStaffTitle 员工标题信息
     * @return 更新结果，成功返回1，失败返回0
     */
    Integer updateStaffTitle(StoreStaffTitle storeStaffTitle);

    /**
     * 删除员工标题（逻辑删除）
     * <p>
     * 根据ID逻辑删除员工标题
     * </p>
     *
     * @param id 员工标题ID，必须大于0
     * @return 删除结果，成功返回1，失败返回0
     */
    Integer deleteStaffTitle(Integer id);

    /**
     * 查询员工标题详情
     * <p>
     * 根据门店ID查询员工标题详细信息（一个门店只能有一个标题）
     * </p>
     *
     * @param storeId 门店ID，必须大于0
     * @return 员工标题详情，如果不存在则返回null
     */
    StoreStaffTitle getStaffTitleDetail(Integer storeId);
}

