package com.palmnest.service.estateserve;

import com.palmnest.application.bean.Page;
import com.palmnest.application.dto.output.WxUserDto;
import com.palmnest.model.estateserve.WxPublicnoOrgRelation;
import com.palmnest.model.estateserve.WxUser;
import com.palmnest.service.GenericManager;

import org.springframework.stereotype.Component;

import java.util.List;

@Component
public interface ScWxuserManager extends GenericManager<WxUser, Integer> {

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

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

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

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

	/**
	 * 查询会员信息集合
	 *
	 * @param pageNo         页码
	 * @param keyWord        关键字
	 * @param organizationId 项目ID
	 * @param virtualId      虚拟架构ID
	 * @param beginTime      开始时间
	 * @param endTime        结束时
	 * @return
	 */
	public Page getMemberPage(int pageNo, String keyWord,
							  String organizationId, String virtualId, String beginTime,
							  String endTime, String organizationIdStr, String status);

	/**
	 * 查询会员信息集合
	 *
	 * @param pageNo         页码
	 * @param keyWord        关键字
	 * @param organizationId 项目ID
	 * @param virtualId      虚拟架构ID
	 * @param beginTime      开始时间
	 * @param endTime        结束时
	 * @return
	 */
	public Page getUserPage(int pageNo, String keyWord,
							String organizationId, String virtualId, String beginTime,
							String endTime, String organizationIdStr, String status);

	/**
	 * 分页查询微信用户信息
	 *
	 * @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(final Integer... wxUserId);

	/**
	 * 保存微信粉丝信息
	 *
	 * @param openId
	 * @param developId
	 */
	public void saveWxUser(String openId, String developId);

	/**
	 * 更新微信用户所有资料
	 */
	public void updateAllWxUserInfo();

	/**
	 * 分页查询未选项目用户集合
	 *
	 * @param pageNo
	 * @param keyWord
	 * @param beginTime
	 * @param endTime
	 * @param status
	 * @return
	 */
	public Page getUnselectdUserPage(int pageNo, String keyWord, String beginTime, String endTime, String status);

	WxUser getScWxuserByPhone(String phone);

	/**
	 * 根据微信developId获取微信所属项目
	 *
	 * @param developId
	 * @return
	 */
	public List<WxPublicnoOrgRelation> getWxOrgRelation(String developId, String orgName);
//	/**
//	 * 根据openId,查找相对应公众号的orgId
//	 * @param openId
//	 * @return
//	 */
//	public String getOrgByOpenId(String openId);

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

