package com.ruoyi.hezhi.service;

import com.alibaba.fastjson2.JSONObject;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.hezhi.domain.TbStudent;
import com.ruoyi.hezhi.domain.dto.ImportStudentDTO;
import com.ruoyi.hezhi.domain.dto.MemberUserLoginDTO;
import com.ruoyi.hezhi.domain.dto.StudentDTO;

import java.util.List;

/**
 * 学员Service接口
 *
 * @author ruoyi
 * @date 2024-10-21
 */
public interface ITbStudentService
{
    /**
     * 查询学员
     *
     * @param studentId 学员主键
     * @return 学员
     */
    public TbStudent selectTbStudentByStudentId(Long studentId);

    /**
     * 查询学员列表
     *
     * @param tbStudent 学员
     * @return 学员集合
     */
    public List<TbStudent> selectTbStudentList(TbStudent tbStudent);

    public String importUser(List<ImportStudentDTO> list);

    /**
     * 新增学员
     *
     * @param tbStudent 学员
     * @return 结果
     */
    public int insertTbStudent(TbStudent tbStudent);

    /**
     * 修改学员
     *
     * @param tbStudent 学员
     * @return 结果
     */
    public int updateTbStudent(TbStudent tbStudent);

    /**
     * 批量删除学员
     *
     * @param studentIds 需要删除的学员主键集合
     * @return 结果
     */
    public int deleteTbStudentByStudentIds(Long[] studentIds);

    /**
     * 删除学员信息
     *
     * @param studentId 学员主键
     * @return 结果
     */
    public int deleteTbStudentByStudentId(Long studentId);

    /**
     * 学员认证
     *
     * @param studentDTO
     * @return ok
     */
    public AjaxResult authenticationStudent(StudentDTO studentDTO);

    /**
     * 扫码登陆轮询
     * @param studentDTO 参数
     * @return 结果
     */
    public AjaxResult userCodeLogin(StudentDTO studentDTO);

    /**
     * 手机号登录
     *
     * @param studentDTO 参数
     * @return 结果
     */
    public AjaxResult userPhoneLogin(StudentDTO studentDTO);

    /**
     * 身份证号码登录
     *
     * @param studentDTO 参数
     * @return 结果
     */
    public AjaxResult userIdentityCardLogin(StudentDTO studentDTO);

    /**
     * 找回密码
     *
     * @param studentDTO 参数
     * @return 结果
     */
    public AjaxResult userRetrievePassword(StudentDTO studentDTO);

    /**
     * 查询学员
     *
     * @param openId openId
     * @return 学员
     */
    public TbStudent selectTbStudentByGzhOpenId(String openId);

    /**
     * 用户修改个人资料
     *
     * @param studentDTO
     * @return ok
     */
    public AjaxResult updateMemberInfo(StudentDTO studentDTO);

    /**
     * 小程序授权登录
     * @param memberUserLoginDTO 登陆token
     * @return JSONObject
     */
    JSONObject memberUserLogin(MemberUserLoginDTO memberUserLoginDTO);
    JSONObject giveScore(Long higherUserId);

    /**
     * 小程序注册
     * @param memberUserLoginDTO 登陆token
     * @return JSONObject
     */
    JSONObject memberUserRegister(MemberUserLoginDTO memberUserLoginDTO);

    int editPassword(TbStudent tbStudent);

    String createQrCode(String memberUserId);
}
