package com.goafanti.common.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.goafanti.admin.bo.AdminListBo;
import com.goafanti.app.bo.AppAdminListBo;
import com.goafanti.common.model.Admin;
import com.goafanti.common.model.Role;
import com.goafanti.core.mybatis.page.Pagination;

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);

	List<Admin> selectAllAdmin();

	Admin selectByMobile(@Param("mobile")String mobile,@Param("roleName")String roleName);

	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);
	
	int insertn(Admin record);
	
	String selectUserNoBySuperiorId(String superiorId);
	
	int selectCountBySuperiorId(String superiorId);
	
	String selectIdByUserNo(String userNo);
	
	Admin selectAllByid(String id);
	
	String selectNameByid(String id);
	
	List<String>selectRolesByUid(String id);
	
	List<String>selectRolesIdByUid(String id);
	
	String selectStatusByMobile(String mobile);
	
	int deleteById(String id);

	Pagination<AppAdminListBo> consultantList();
	
	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);
	
	/**
	 * 查询订单变更信息通知人
	 * @param orderNo
	 * @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);
	
	Admin selectByUserName(String username);

}