package com.seer.teach.mp.admin.service;

import com.seer.teach.common.PageListBean;
import com.seer.teach.mp.admin.controller.req.AgentEmployeeSaveReq;
import com.seer.teach.mp.admin.controller.resp.AgentEmployeeRelationResp;
import com.seer.teach.mp.admin.controller.req.AgentEmployeeRelationQueryReq;
import com.seer.teach.mp.admin.controller.req.AgentEmployeeRelationReq;

import java.util.List;

/**
 * <p>
 * 管理端代理商员工关系服务类
 * </p>
 *
 * @author Lingma
 * @since 2025-12-30
 */
public interface IAdminAgentEmployeeRelationService {

    /**
     * 分页查询代理商员工关联列表（管理端）
     *
     * @param query 查询条件
     * @return 代理商员工关联分页列表
     */
    PageListBean<AgentEmployeeRelationResp> pageList(AgentEmployeeRelationQueryReq query);

    /**
     * 更新代理商员工关联（管理端）
     *
     * @param request 关联请求对象
     * @return 操作是否成功
     */
    boolean saveOrUpdateRelation(AgentEmployeeRelationReq request);

    /**
     * 删除代理商员工关联（管理端）
     *
     * @param id 关联ID
     * @return 操作是否成功
     */
    boolean deleteRelation(Integer id);

    /**
     * 根据ID获取详情（管理端）
     *
     * @param id 关联ID
     * @return 关联详情
     */
    AgentEmployeeRelationResp getById(Integer id);

    /**
     * 根据代理商ID获取员工列表（管理端）
     *
     * @param agentId 代理商ID
     * @return 员工关联列表
     */
    List<AgentEmployeeRelationResp> getEmployeeRelationsByAgentId(Integer agentId);

    /**
     * 新增代理商员工关联（管理端）
     * @param request 新增代理商员工关联请求对象
     * @return 新增是否成功
     */
    boolean save(AgentEmployeeSaveReq request);
}