package com.iamberry.wechat.face.qrcode;

import com.iamberry.wechat.core.entity.qrcode.Qrcode;
import com.iamberry.wechat.core.entity.qrcode.QrcodeResult;

/**
 * @author 何秀刚
 * Class Description: 二维码service接口
 * Create Date:2016年4月18日
 * Update Date:2016年4月18日
 */
public interface QrcodeService {

	/**
	 * 根据二维码ID获取二维码实体类信息
	 * @param id
	 * @return
	 */
	public Qrcode selectQrcodeByQrcodeId(Integer id);

	/**
	 * 根据用户openid，修改二维码状态，不一定有
	 * @param openid
	 * @return
	 */
	public Integer updateQRcodeStatusByUserOpenid(String openid);

	/**
	 * 叠加某一个二维码的扫描次数和通过此二维码关注人数
	 * @param qrcode
	 * @return
	 */
	public Integer updateQRcodeScannNumAndSubNum(Qrcode qrcode);
	
	/**
	 * 为某个用户申请二维码
	 * @param openid 用户标识-openid
	 * @param applyUserType 申请人类型1:表示微代理二维码;2:线下代理二维码
	 * @return
	 */
	public QrcodeResult applyQrcodeUrl(String openid, Integer applyUserType);
	
	/**
	 * 为某一个代理商申请二维码,当前代理商ID必须为：导购、厂商、医生护士的角色
	 * @param placeId
	 * @return
	 */
	public QrcodeResult applyPlaceQrcodeUrl(Integer placeId);

	/**
	 * 修改二维码状态为已用，当前二维码必须空余
	 * @param qrcode
	 * @return
	 */
	public Integer updateQRcodeUserAndStatusById(Qrcode qrcode);

	/**
	 * 根据使用的ID，获取当前使用人的二维码（status:使用中）
	 * @param replaceUserOpenid
	 * @return
	 */
	public String selectQrcodeUrlByReplaceUser(Object replaceUserOpenid);
	
	/**
	 * 为某个用户绑定关系
	 * @param nowUserOpenId 当前用户openid
	 * @param parent 父类ID，如果type=1,此ID为openid(字符串)，如果为2,此为代理商ID(数值)
	 * @param type type = 1 ： 属于微代理；type=2:属于代理商
	 * @return true ： 绑定成功， false：绑定失败
	 */
	public boolean bulidUser(String nowUserOpenId, Object parent, Integer type);
}
