package com.cpop.mall.business.service;

import com.cpop.mall.business.bo.ModifyUserPasswordBo;
import com.cpop.mall.business.bo.StaffBo;
import com.cpop.mall.business.bo.StaffPageBo;
import com.cpop.mall.business.vo.StaffInfoVo;
import com.cpop.mall.business.vo.StaffPageVo;
import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.service.IService;
import com.cpop.mall.business.entity.Staff;

/**
 * 员工表 服务层。
 *
 * @author DB
 * @since 2023-10-19
 */
public interface StaffService extends IService<Staff> {

    /**
     * @descriptions 查询员工分页列表
     * @author DB
     * @date 2023/10/20 11:12
     * @param bo 请求参数
     * @return: com.mybatisflex.core.paginate.Page<com.cpop.mall.business.vo.StaffPageVo>
     */
    Page<StaffPageVo> getStaffPageList(StaffPageBo bo);

    /**
     * @descriptions 新增员工
     * @author DB
     * @date 2023/10/20 11:24
     * @param bo 请求参数
     * @return: void
     */
    void insertStaff(StaffBo bo);

    /**
     * @descriptions 修改员工
     * @author DB
     * @date 2023/10/20 11:36
     * @param bo 请求参数
     * @return: void
     */
    void updateStaff(StaffBo bo);

    /**
     * @descriptions 删除员工
     * @author DB
     * @date 2023/10/20 11:44
     * @param id 主键
     * @return: void
     */
    void removeStaffById(String id);

    /**
     * @descriptions 用户名是否存在
     * @author DB
     * @date 2023/10/20 11:55
     * @param username 用户名
     * @param id 主键
     * @return: void
     */
    void isAccountExist(String username, String id);

    /**
     * @descriptions 获取员工信息
     * @author DB
     * @date 2023/10/20 12:00
     * @param id 主键
     * @return: com.cpop.mall.business.vo.StaffInfoVo
     */
    StaffInfoVo getStaffInfo(String id);

    /**
     * @descriptions 修改系统用户密码
     * @author DB
     * @date 2023/10/20 12:04
     * @param bo 请求体
     * @return: void
     */
    void modifyUserPassword(ModifyUserPasswordBo bo);
}
