package org.dromara.system.service;

import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.system.domain.bo.SysEmployeeBo;
import org.dromara.system.domain.vo.SysEmployeeVo;

import java.util.Collection;

/**
 * 员工管理 Service接口
 *
 * @author Lion Li
 */
public interface ISysEmployeeService {

    /**
     * 查询员工
     */
    SysEmployeeVo queryById(Long id);

    /**
     * 查询员工详情（含授权客户完整信息列表）
     */
    SysEmployeeVo queryDetail(Long id);

    /**
     * 根据电话查询员工
     */
    SysEmployeeVo queryByPhone(String phone);

    /**
     * 根据微信UnionID查询员工
     */
    SysEmployeeVo queryByWechatUnionid(String wechatUnionid);

    /**
     * 根据微信OpenID查询员工
     */
    SysEmployeeVo queryByWechatOpenid(String wechatOpenid);

    /**
     * 分页查询员工列表
     */
    TableDataInfo<SysEmployeeVo> queryPageList(SysEmployeeBo bo, PageQuery pageQuery);

    /**
     * 新增员工
     */
    Boolean insertByBo(SysEmployeeBo bo);

    /**
     * 修改员工
     */
    Boolean updateByBo(SysEmployeeBo bo);

    /**
     * 校验授权客户是否已被其他员工占用
     */
    void checkAuthClientConflict(Long employeeId, String authClientFRowIDs);

    /**
     * 校验并批量删除员工信息
     */
    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);

    /**
     * 通过员工ID查询员工姓名
     */
    String selectNameById(Long employeeId);

    /**
     * 修改员工状态（启用/禁用）
     */
    Boolean changeStatus(Long id, String status);
}
