package com.gyjiot.iot.wechat;

import com.gyjiot.common.core.domain.AjaxResult;
import com.gyjiot.common.wechat.WeChatLoginBody;
import com.gyjiot.common.wechat.WeChatLoginResult;
import com.gyjiot.iot.wechat.vo.WxBindReqVO;
import com.gyjiot.iot.wechat.vo.WxCancelBindReqVO;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 微信相关服务类
 * @author gyj.iot
 * @date 2023-07-31 11:34
 */
public interface WeChatService {

    /**
     * 移动应用微信登录
     * @param weChatLoginBody 微信登录参数
     * @return String
     */
    WeChatLoginResult mobileLogin(WeChatLoginBody weChatLoginBody);

    /**
     * 小程序微信登录
     * @param weChatLoginBody 微信登录参数
     * @return 登录结果
     */
    WeChatLoginResult miniLogin(WeChatLoginBody weChatLoginBody);

    /**
     * 取消所有相关微信绑定
     * @param wxCancelBindReqVO 微信解绑传参类型
     * @return 结果
     */
    AjaxResult cancelBind(WxCancelBindReqVO wxCancelBindReqVO);

    /**
     * 小程序、移动应用微信绑定
     * @param wxBindReqVO 微信绑定传参类型
     * @return 结果
     */
    AjaxResult bind(WxBindReqVO wxBindReqVO);

    /**
     * 网站应用获取微信绑定二维码信息
     * @return 二维码信息
     */
    AjaxResult getWxBindQr(HttpServletRequest httpServletRequest);

    /**
     * 网站应用内微信扫码绑定回调接口
     * @param code 用户凭证
     * @param state 时间戳
     * @param httpServletRequest 请求信息
     * @param httpServletResponse 响应信息
     */
    String wxBindCallback(String code, String state, String wxBindId, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse);

    /**
     * 网站应用获取微信绑定结果信息
     * @param wxBindMsgId 微信绑定结果信息id
     * @return msg
     */
    AjaxResult getWxBindMsg(String wxBindMsgId);
}
