package com.gxwebsoft.auto.service;

import com.gxwebsoft.auto.dto.QrLoginBindPhoneRequest;
import com.gxwebsoft.auto.dto.QrLoginConfirmRequest;
import com.gxwebsoft.auto.dto.QrLoginGenerateResponse;
import com.gxwebsoft.auto.dto.QrLoginStatusResponse;
import com.gxwebsoft.auto.dto.WechatScanRequest;
import com.gxwebsoft.auto.dto.WechatScanResponse;

/**
 * 扫码登录服务接口
 *
 * @author 科技小王子
 * @since 2025-08-31
 */
public interface QrLoginService {

    /**
     * 生成扫码登录token
     *
     * @return QrLoginGenerateResponse
     */
    QrLoginGenerateResponse generateQrLoginToken(Integer tenantId);

    /**
     * 检查扫码登录状态
     *
     * @param token 扫码登录token
     * @return QrLoginStatusResponse
     */
    QrLoginStatusResponse checkQrLoginStatus(String token);

    /**
     * 确认扫码登录
     *
     * @param request 确认请求
     * @return QrLoginStatusResponse
     */
    QrLoginStatusResponse confirmQrLogin(QrLoginConfirmRequest request);

    /**
     * 扫码操作(更新状态为已扫码)
     *
     * @param token 扫码登录token
     * @return boolean
     */
    boolean scanQrCode(String token);

    /**
     * 关注后绑定手机号并完成登录
     *
     * @param request 绑定手机号请求
     * @return QrLoginStatusResponse
     */
    QrLoginStatusResponse bindPhone(QrLoginBindPhoneRequest request);

    /**
     * 微信扫码登录确认（H5页面调用）
     *
     * @param request 微信扫码登录请求
     * @return WechatScanResponse
     */
    WechatScanResponse wechatScanConfirm(WechatScanRequest request);

}
