package com.iamberry.wechat.service.mapper;

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

import com.iamberry.wechat.core.entity.PaperBean;
import com.iamberry.wechat.core.entity.drp.ApplyPlaceLogs;
import com.iamberry.wechat.core.entity.drp.ApplyUserInfo;
import com.iamberry.wechat.core.entity.drp.PlaceInfo;


/**
 * 
 * @author 欧阳明
 * @description sql接口映射类
 * @date: 2016-4-18
 */
public interface PlaceInfoMapper {
	
	/**
	 * 根据代理ID，获取此ID对应的顶级代理商ID
	 * @param id 参数
	 * @return
	 */
	public PlaceInfo selectPlaceInfobyId(Integer id);

	/**
	 * 根据code，获取代理信息（ID）
	 * @param code
	 * @return
	 */
	public PlaceInfo selectOnePlaceInfoByCode(String code);
	
	/**
	 * 修改代理商的openid
	 * @param info
	 * @return
	 */
	public Integer updateOpenidById(PlaceInfo info);
   /**
    * 根据id获取单个商户信息(状态是使用中的)
    * @param id
    * @return
    */
	public PlaceInfo getOnePlaceInfo(int id);
	//通过openid查询对象
	public PlaceInfo getOnePlaceInfo2(String openid);
	//通过激活码获取对象
	public PlaceInfo getOnePlaceInfoByInitcode(PlaceInfo placeInfo);
	/**
	 * 获取所有使用中的商户  
	 * 支持模糊条件查询：name userName roleId tel userNickname placePid
	 * 				supperId parentName
	 * 根据 place_create_date降序	分页
	 */
	public List<PlaceInfo> selectAll(PlaceInfo placeInfo);
	//插入数据
	public int insert(PlaceInfo PlaceInfo);
	//更新数据
	public int update(PlaceInfo PlaceInfo);
	//批量更新数据
	public int batchUpdate(List<PlaceInfo> PlaceInfos);
	//删除数据
	public int delete(PlaceInfo PlaceInfo);
    //获取信息结果集总数
	public int getAllCount(PlaceInfo PlaceInfo);
	//获取父类数据
	public List<PlaceInfo> selectAllByParent(PlaceInfo placeInfo);
	 //获取父类信息结果集总数
	public int getAllByParentCount(PlaceInfo PlaceInfo);
	
	/**
	 * 插入单个对象并返回对象
	 * @param placeInfo
	 * @return
	 */
	public int insertObj(PlaceInfo placeInfo);
	/**
	 * 根据 PLACE_NAME 查询状态是使用中的商户总数(判断是否有重复的分销商命名)
	 * @param placeInfo
	 * @return
	 */
	public int testNameExist(PlaceInfo placeInfo);
	/**
	 * 根据用户openid，获取对应的代理商信息
	 */
	public Integer selectPlaceIdByOpenId(String openId);
	/**
	 * 获取分销商的下一级分销合作用户
	 * @param placeInfo
	 * @return
	 */
	public List<String> getUnderling(PlaceInfo placeInfo);
	
	/**
	 * 预生成分销商生成excel表格
	 * @param map
	 * @return
	 */
	public List<PlaceInfo> getPlaceInfosForDownLoad(Map map);
	
	/**
	 * 根据条件获取placeId
	 * @param placeInfo
	 * @return
	 */
	public List<PlaceInfo> getPlaceId(PlaceInfo placeInfo);
	
	/**
	 * 获取某一页的代理商申请修改信息记录
	 * @param bean
	 * @return
	 */
	public List<ApplyPlaceLogs> selectApplyPlaceLogs(PaperBean bean);
	
	/**
	 * 获取待处理的申请记录总条数
	 * @return
	 */
	public int getCount();
	
	/**
	 * 根据applyID更新信息
	 * @param applyID
	 * @return
	 */
	public int updateApplyStatus(ApplyPlaceLogs logs);
	
	/**
	 * 获取某一个用户的最近申请记录
	 * @param placeID
	 * @return
	 */
	public ApplyPlaceLogs selectApplyLogsByPlaceID(Integer placeID);
	
	/**
	 * 根据openid获取某一个用户的最近申请记录
	 * @param placeID
	 * @return
	 */
	public ApplyPlaceLogs selectApplyLogsByOpenID(String openID);
	
	/**
	 * 根据id，获取申请记录
	 * @param applyID
	 * @return
	 */
	public ApplyPlaceLogs selectApplyLogsByID(Integer applyID);
	
	/**
	 * 更新信息
	 * @param info
	 * @return
	 */
	public int updatePlaceInfo(PlaceInfo info);
	
	/**
	 * 根据placeID，获取信息完善的状态
	 * @param placeID
	 * @return
	 */
	public int selectPlaceInfoStatusByPlaceId(Integer placeID);
	
	/**
	 * 添加申请记录
	 * @param applyPlaceLogs
	 * @return
	 */
	public int insertApplyLogs(ApplyPlaceLogs applyPlaceLogs);
	
	/**
	 * 根据openid获取一个正在使用的商户的信息
	 * 2016年10月10日
	 * @param openid
	 * @return
	 */
	public PlaceInfo selectPlaceInfoDetailByOpenId(String openid);
	
	/**
	 * 添加申请代理信息
	 * @param info
	 * @return
	 */
	public Integer addApplyAgent(ApplyUserInfo applyUserInfo);
	
	/**
	 * 查询申请记录信息
	 * @param info
	 * @return
	 */
	public List<ApplyUserInfo> getApplyAgentList(ApplyUserInfo applyUserInfo);
	
	/**
	 * 查询申请记录信息条数
	 * @param info
	 * @return
	 */
	public Integer getApplyAgentCount(ApplyUserInfo applyUserInfo);
	
	/**
	 * 查询是否已存在申请代理信息
	 * @param info
	 * @return
	 */
	public Integer selectApplyAgentByTel(String userTel);
	
	/**
	 * 通过placepids查询商户信息
	 * @param placePids
	 * @return
	 */
	public PlaceInfo selectPlaceByPlacePids(Integer placePids);
}
