package com.goafanti.common.dao;

import com.goafanti.admin.bo.AdminContacts;
import com.goafanti.admin.bo.AdminCustomerBo;
import com.goafanti.admin.bo.AdminListBo;
import com.goafanti.common.bo.AdminNoticeBo;
import com.goafanti.common.model.Admin;
import com.goafanti.common.model.Department;
import com.goafanti.common.model.Role;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface AdminMapper {
    int deleteByPrimaryKey(String id);

    int insert(Admin record);

    int insertSelective(Admin record);

    Admin selectByPrimaryKey(String id);

    int updateByPrimaryKeySelective(Admin record);

    int updateByPrimaryKey(Admin record);
    Admin selectByMobile(String mobile);

    List<Role> selectRolesByPrimaryKey(String uid);

    List<Admin> selectCognizanceConsultant();

    List<Admin> selectCognizancePrincipal();

    List<Admin> selectPatentAuthor();

    List<Admin> selectPatentPrincipal();

    List<Admin> selectCopyrightConsultant();

    List<Admin> selectCopyrightPrincipal();

    List<Admin> selectTechprojectConsultant();

    List<Admin> selectTechprojectPrincipal();

    List<String> selectRoleByPrimaryKey(String uid);

    List<Admin> selectAccoutManager();

    List<Admin> selectTechnician();

    List<Admin> selectSalesman();

    List<Admin> selectContractManager();

    List<Admin> selectTechBroder();

    List<Admin> listAdminSelectBySuperAdmin();

    List<Admin> listAdminSelectByAreaAdmin(@Param("provinceList")List<Integer> provinceList, @Param("cityList")List<Integer> cityList);

    List<Admin> listAdminByName(@Param("name")String name,@Param("status")Integer status);


    int insertn(Admin record);

    String selectUserNoBySuperiorId(String superiorId);

    int selectCountBySuperiorId(String superiorId);

    String selectIdByUserNo(String userNo);

    Admin selectAllByid(@Param("id") String id);

    String selectNameByid(String id);

    List<Role> selectRolesByUid(String id);



    String selectStatusByMobile(@Param("mobile")String mobile);

    int deleteById(String id);

    List<Admin> selectIDNBySuperiorId(String superiorId);

    String selectUserNoById(String superiorId);

    int updateByUserNo(Admin record);

    List<String>selectIdBySuperiorId(String superiorId);

    /**
     * 查询下级人员
     * @param adminId
     * @return
     */
    List<AdminListBo> selectSubList(@Param("adminId")String adminId);

    /**
     * @return
     */
    Admin selectAdminByRoleId(@Param("roleId")String roleId);
    /**
     * 查询部门下的员工
     * @param departmentId
     * @param name
     * @return
     */
    List<AdminListBo> selectDepartmentStaff(String departmentId, String name);

    Admin selectAdminName(@Param("name")String name);

    List<Admin> selectAllAdmin(@Param("depId")String depId);

    int updateLockIds(@Param("lockIds")String lockIds);


    int getCountById(String id);
    AdminListBo getDeptNameByAid(String id);

    List<Admin> getAdminRoleNameList(String roleName);
    List<Admin> getAdminRoleNamesList(List<String> list);

    List<Admin> getAdminRoleTypesList(List<String> list);
    List<Admin> getAdminRoleTypeList(String roleType);

    int addAdminContacts(AdminContacts a);

    int deleteFrequentContacts(String id);

    List<String> getaidFrequentContacts(String id);

    /**
     * 获取属于某部门的角色
     * @param depId
     * @param roleType
     * @return
     */
    List<String> listNameByDepAndName(@Param("depId")String depId,@Param("roleType")String roleType);

    List<Admin> listAdminBydepIdAndRoleType(@Param("depId")String depId,@Param("roleType")String roleType);

    List<String> selectBySuperId(String aid);

    Admin selectFinanceAdminByOrderDep(String orderDep);

    Admin selectFinanceAdminByAid(String aid);

    String getPermission(String transferId);

    List<String> selectDepIdWithSpuerId(String superId);


    List<String> getAdminRoleListByAid(String id);

    Admin selectByOpeid(String openid);

    AdminNoticeBo selectMyAndSuperBySuperId(String id);

    List<String> getFinanceDep(String aid);

    List<String> getLowerFinanceDep(String aid);


    int selectByAmbIdCount(String id);

    List<Admin> selectAdminByRoleType(@Param("roleType") String roleType);

    List<AdminCustomerBo > selectByDeps(@Param("depIds") List<Department> depIds,@Param("seniorStaff") Integer seniorStaff);



    List<Integer> selectRoleTypeByid(String aid);
}
