package com.iamberry.wechat.face.giftCard;

import java.util.List;

import com.iamberry.wechat.core.entity.CommonDto;
import com.iamberry.wechat.core.entity.ResultMsg;
import com.iamberry.wechat.core.entity.giftCard.AgentInfo;
import com.iamberry.wechat.core.entity.giftCard.AgentMachine;
import com.iamberry.wechat.core.entity.giftCard.AgentPayLogs;
import com.iamberry.wechat.core.entity.giftCard.GiftCardPayCode;
import com.iamberry.wechat.core.entity.member.Member;

/**
 * 付费代理商	service
 * @author muzx
 * create date : 2017年2月16日
 */
public interface AgentService {
	/**
	 * 查询被推荐人
	 * @param agentInfo
	 * @return
	 */
	public List<AgentInfo> beRefereesList(AgentInfo agentInfo);
	
	/**
	 * 获取当前用户未支付订单(可根据支付状态)
	 * 2017年2月16日
	 * @author muzx
	 * @param openId
	 * @return
	 */
	public AgentPayLogs selectPayLogByOpenid(AgentPayLogs agentPayLogs);
	
	/**
	 * 根据ID查询支付记录
	 * 2017年2月16日
	 * @author muzx
	 * @param id
	 * @return
	 */
	public AgentPayLogs selectPayLogById(Integer id);
	
	/**
	 * 修改支付状态、微信支付订单号、微信支付时间
	 * 2017年2月17日
	 * @author muzx
	 * @return
	 */
	public boolean updatePayLogsById(AgentPayLogs payLogs);
	
	
	/**
	 * 根据openId 修改付费代理推荐人openid
	 * 2017年3月2日
	 * @author muzx
	 * @param agentInfo
	 * @return
	 */
	boolean updateAgentInfoByOpenId(AgentInfo agentInfo);

	/**
	 * 根据openid查询当前付费代理信息
	 * @param openId
	 * @return
	 */
	public AgentInfo selectAgentByOpenId(String openId);
	
	/**
	 * 获取当前用户未支付订单
	 * 2017年2月16日
	 * @author LJK
	 * @param openId
	 * @return
	 */
	public List<AgentPayLogs> selectPayLogHasByOpenid(String openId);
	
	/**
	 * 查询所有付费代理商信息
	 * @return
	 */
	public List<AgentInfo> selectAgentList();
	 /**
     * 1.添加付费代理信息<没有则添加,有则不变>
     * 2.添加支付记录
     * 3.添加付费代理赠送机器信息
     * 2017年3月2日
     * @author muzx
     * @return  AOID_支付记录id
     *          格式如：AOID_15_23
     */
    String insertAgentInfoAndAgentPayLogAndAgentMachine(CommonDto commonDto,  Member member, AgentMachine agentMachine);
    
	/**
     * 1. 修改付费代理支付记录状态为已支付
     * 2. 修改付费代理商的推荐人
     * 3. 修改抵扣密码的使用状态和使用人
     * @param payId    支付记录id
     * @param openId   当前用户openid
     * @param payCode  使用的支付码信息
     * @return         推荐人赠送记录id
     */
    public String updatePayLogStatusAndReferrerAndPayCodeStatus(String payId, String openId, GiftCardPayCode payCode);
    /**
     * 1. 修改付费代理支付记录状态为已支付
     * 2. 修改抵扣密码的使用状态和使用人
     * @param payId    支付记录id
     * @param openId   当前用户openid
     * @param payCode  使用的支付码信息
     * @return        
     */
    public String updatePayLogStatus(String payId, String openId, GiftCardPayCode payCode);
    
    /**
     * 万元小代理/百台代理 续费
     * @time 2017年4月1日
     * @author muzx
     * @param openId
     * @param agentMachine
     * @param agentNickname
     * @param agentTel
     * @param payPassword
     * @return
     * @throws Exception
     */
    public ResultMsg toPayAgain(AgentMachine agentMachine, String agentNickname, String agentTel, String payPassword) throws Exception;
}
