package com.fs.company.service;

import com.fs.common.core.domain.R;
import com.fs.company.domain.CompanyUser;
import com.fs.company.vo.CompanyUserOptionRespVO;
import com.fs.company.vo.CompanyUserProductVO;
import com.fs.doctor.domain.DoctorCompanyUser;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;


import java.util.List;
import java.util.Map;

/**
 * 管理员信息Service接口
 *
 * @author fs
 * @date 2021-05-25
 */
public interface ICompanyUserService {
    /**
     * 查询管理员信息
     *
     * @param userId 管理员信息ID
     * @return 管理员信息
     */
    public CompanyUser selectCompanyUserById(Long userId);

    /**
     * 查询理员信息列表
     *
     * @param companyUser 理员信息
     * @return 理员信息集合
     */
    public List<CompanyUser> selectCompanyUserList(CompanyUser companyUser);

    /**
     * 新增理员信息
     *
     * @param companyUser 理员信息
     * @return 结果
     */
    public int insertCompanyUser(CompanyUser companyUser);

    /**
     * 修改管理员信息
     *
     * @param companyUser 管理员信息
     * @return 结果
     */
    public int updateCompanyUser(CompanyUser companyUser);


    /**
     * 批量删除理员信息
     *
     * @param userIds 需要删除的管理员信息ID
     * @return 结果
     */
    public int deleteCompanyUserByIds(Long[] userIds);

    /**
     * 删除管理员信息信息
     *
     * @param userId 管理员信息ID
     * @return 结果
     */
    public int deleteCompanyUserById(Long userId);

    CompanyUser selectUserByUserName(String account);

    String selectUserRoleGroup(String username);

    String selectUserPostGroup(String username);

    int updateUserAvatar(String username, String avatar);

    int resetUserPwd(String userName, String encryptPassword);

    int updateUserProfile(CompanyUser user);

    int checkUserName(String userName);

    public int insertUser(CompanyUser user);
    public int updateUser(CompanyUser user);


    int resetUserPwdByUserId(Long userId, String encryptPassword);


    String checkUserNameUnique(String userName);

    Integer selectCompanyUserCountByCompanyId(Long companyId);

    List<CompanyUserOptionRespVO> getUserOptionVOList(String companyNickName, Long companyId );

    List<CompanyUserProductVO> getCompanyUserProductList(Long id);

    /**
     * 查询公司客服列表
     * @param companyId 公司ID
     * @return List<CompanyUser>
     */
    List<CompanyUser> queryAllCompanyUser(Long companyId);
    /**
     * 根据手机号查询用户
     *
     * @param phonenumber 手机号
     * @return 用户信息
     */
    CompanyUser selectUserByPhone(String phonenumber);


}
