package com.goafanti.admin.service;

import com.goafanti.admin.bo.*;
import com.goafanti.common.bo.Result;
import com.goafanti.common.model.Admin;
import com.goafanti.core.mybatis.page.Pagination;

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

public interface AdminService {

	List<Admin> selectAllAdmin();

	Admin selectByMobile(String username);

	Admin selectByPrimaryKey(String key);

	Pagination<AdminListBo> listAdmin(Integer province, Integer number, String mobile, String name, String roleName,Integer seniorStaff,
									  Integer pNo, Integer pSize);

	int insert(Admin ad);

	int updateByPrimaryKeySelective(Admin ad, List<String> roleIds);

	int updateByPrimaryKey(Admin a);

	AdminDetail selectAdminDetail(String id);

	List<Admin> selectCognizanceConsultant();

	List<Admin> selectPatentAuthor();

	List<Admin> selectPatentPrincipal();

	List<Admin> selectCopyrightConsultant();

	List<Admin> selectCognizancePrincipal();

	List<Admin> selectCopyrightPrincipal();

	List<Admin> selectTechprojectConsultant();

	List<Admin> selectTechprojectPrincipal();

	List<String> selectRoleByPrimaryKey(String aid);

	List<String> listAuditor();

	Map<String, String> selectAccoutManager();

	Map<String, String> selectTechnician();

	Map<String, String> selectSalesman();

	Map<String, String> selectContractManager();

	Map<String, String> selectTechBroder();

	int insertNewAdmin(Admin ad);

	Map<String, String> listAdminSelect();

	List<Admin> listAdminByName(String name,Integer satus);

	List<AdminListBo> selectDepartmentStaff(String departmentId,String name);

	int updateLockAdmin();

	List<Admin> getListDefaultPassword(String id);

	List<Admin> getAdminRoleList(String roleName);

	int addFrequentContacts(String id);

	Pagination<AdminListBo>  frequentContactsList(String deps, String name, String roleName, Integer pageSize, Integer pageNo);

	int deleteFrequentContacts(String id);

	Pagination<AdminCustomerBo> selectAdminCustomerStatistics(String depId, String startTime, String endTime, Integer pageSize, Integer pageNo);

	Pagination<AdminCustomerDetailBo> selectAdminCustomerList(String aid, String startTime, String endTime, Integer type, Integer pageSize, Integer pageNo);

	int updatePrivateBusinessTransfer(String inputId, String uid, String pid);

	DepCountBo selectAllUser(String depId, String startTime, String endTime, String aName);


    Object pushStatistics() ;

	Result selectAllUserExport(String depId, String startTime, String endTime, String aName);
}
