package com.palmnest.dao.estateserve;

import java.util.List;

import com.palmnest.application.bean.Page;
import com.palmnest.application.dto.output.WxUserDto;
import com.palmnest.dao.GenericDao;
import com.palmnest.model.estateserve.WxPublicnoOrgRelation;
import com.palmnest.model.estateserve.WxUser;

/**
 * 微信用户DAO
 *
 * @author xlguo
 */
public interface ScWxuserDao extends GenericDao<WxUser, Integer> {

	/**
	 * 获取微信用户信息
	 *
	 * @param openId 微信openId
	 */
	public WxUser getScWxuserByOpenId(String openId);

	/**
	 * 获取微信用户信息
	 *
	 * @param userId 用户ID
	 * @return
	 */
	public WxUser getScWxuserByUserId(int userId);

	/**
	 * 获取微信用户信息
	 *
	 * @param userId 用户ID
	 * @return
	 */
	public WxUser getScWxuserByWxUserId(Integer wxUserId);

	/**
	 * 获取微信用户集合信息
	 *
	 * @param organizationId 项目ID
	 * @return
	 */
	public List<WxUser> getWxUserListByOrgId(int organizationId);

	/**
	 * 会员信息分页查询
	 *
	 * @param pageNo   当前页数
	 * @param pageSize 每页数据条数
	 * @param strSQL   查询的SQL
	 * @return
	 */
	public Page getMemberPage(int pageNo, int pageSize, String strSQL);


	/**
	 * 会员信息分页查询
	 *
	 * @param pageNo   当前页数
	 * @param pageSize 每页数据条数
	 * @param strSQL   查询的SQL
	 * @return
	 */
	public Page getUserPage(int pageNo, int pageSize, String strSQL);

	/**
	 * 获取注册过的微信用户信息
	 *
	 * @return
	 */
	public List<WxUser> getResisterWxUserList();

	/**
	 * 分页查询微信用户信息
	 *
	 * @param pageNo         页码
	 * @param pageSize       每页条数
	 * @param isBinding      绑定状态
	 * @param nickName       昵称
	 * @param organizationId 项目ID或项目ID集合
	 * @return
	 */
	public Page getWxUserList(int pageNo, int pageSize, String nickName,
							  String accountType, String isBinding, String organizationId);

	/**
	 * 更新微信用户的绑定状态-解绑
	 *
	 * @param wxUserId
	 */
	public void updateBindWxuser(Integer... wxUserId);

	WxUser getScWxuserByPhone(String phone);

	/**
	 * 根据微信developId获取微信所属项目
	 *
	 * @param developId
	 * @return
	 */
	public List<WxPublicnoOrgRelation> getWxOrgRelation(String developId, String orgName);

	List<WxUser> getWxUserByPermId(Integer permId, Integer virId,String rank);
	
	/**
	 * 根据项目获取公众号，然后再拿公众号下面所有的粉丝
	 * @param orgId
	 * @return
	 */
	List<WxUserDto> getWxUserByDevelopId(String developId);
}
