package com.zanxiang.game.module.sdk.service;


import com.zanxiang.game.module.sdk.pojo.param.LoginMobileParam;
import com.zanxiang.game.module.sdk.pojo.param.LoginPasswordParam;
import com.zanxiang.game.module.sdk.pojo.param.LoginVxCodeParam;
import com.zanxiang.game.module.sdk.pojo.param.UserData;
import com.zanxiang.game.module.sdk.pojo.vo.UserLoginVO;
import com.zanxiang.module.util.pojo.ResultVO;
import jakarta.servlet.http.HttpServletRequest;

/**
 * @author : lingfeng
 * @time : 2022-06-22
 * @description :
 */
public interface IRegisterLoginService {

    /**
     * 微信小游戏code授权登录
     *
     * @param param    : 授权参数
     * @param userData : 用户信息
     * @param request  : 网络请求
     * @return {@link ResultVO}<{@link UserLoginVO}>
     */
    ResultVO<UserLoginVO> loginWxCode(LoginVxCodeParam param, UserData userData, HttpServletRequest request);

    /**
     * 登录密码
     * 用户名注册或者登录
     *
     * @param param    : 注册登录参数
     * @param userData : 用户信息
     * @return {@link ResultVO}<{@link UserLoginVO}>
     */
    ResultVO<UserLoginVO> loginPassword(LoginPasswordParam param, UserData userData);

    /**
     * 手机号登录
     *
     * @param param    : 手机号登录参数
     * @param userData : 用户信息
     * @return {@link ResultVO}<{@link UserLoginVO}>
     */
    ResultVO<UserLoginVO> loginMobile(LoginMobileParam param, UserData userData);

    /**
     * 登录退出
     *
     * @param userData : 返回用户信息
     * @return {@link Boolean}
     */
    Boolean loginOut(UserData userData);

    /**
     * 登录注销
     *
     * @param userData : 返回用户信息
     * @return {@link Boolean}
     */
    Boolean writeOff(UserData userData);
}
