package com.goafanti.user.service;

import com.goafanti.app.bo.UserBasicInfo;
import com.goafanti.common.bo.OutUser;
import com.goafanti.common.bo.userDaysBo;
import com.goafanti.common.model.User;
import com.goafanti.core.mybatis.page.Pagination;
import com.goafanti.customer.bo.LockingReleaseBo;
import com.goafanti.user.bo.*;

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

public interface UserService {

	User selectByPrimaryKey(String userId);

	String selectNumberByPrimaryKey(String userId);

	int updateByPrimaryKeySelective(User u);

	User insert(User user);

	User selectByMobieAndType(String mobile, Integer type);

	User insertRegister(User user, String unitName, String contacts);

	UserPageHomeBo selectUserPageHomeBoByUserId(String userId);

	UserDownLoadBo selectUserDownLoadBoByUserId(String userId);

	Pagination<OrgListBo> selectUserByAid(Integer number, String mobile, Integer auditStatus, String auditName,
			String email, String adminId, String startCreateTime, String endCreateTime, Integer type, Integer pNo,
			Integer pSize);

	List<OrgUnitNames> selectDemandUnitNames();

	List<UserNames> selectDemandUserNames();

	Map<String, String> selectAchievementUserOwner(String name);

	List<OrgUnitNames> selectAchievementOrgOwner(String name);

	String findUserNameByNameAndMobile(String name, String mobile);

	String findOrgNameByNameAndMobile(String name, String mobile);

	UserPartnerDetailBo findUserPartnerDetail(String uid);

	Object findOrgPartnerDetail(String uid);

	Pagination<StarListBo> listStar(Integer number, String engagedField, String username, String professionalTitle,
			String workUnit, Integer pNo, Integer pSize);

	Pagination<StarAndExpertListBo> listStarAndExpert(Integer number, String engagedField, String username,
			String professionalTitle, String workUnit, Integer pNo, Integer pSize);

	List<UserPartnerDetailBo> findUserPartner();

	UserBasicInfo selectBaseInfo();
	
	User selectByNumber(String easemobName);
	
	List<User> selectUserByRoleName(String roleName1, String roleName2);


	/**
	 * 
	 * @param newCList
	 * @param type 0回收 1释放
	 */
	void pushReleaseUserChannel(List<userDaysBo> newCList, Integer type);

	List<OutUser> getuser();




	List<LockingReleaseBo> selectSignReleaseUser(String id);
}
