package com.eitc.patient.service;

import com.aliyuncs.exceptions.ClientException;
import com.baomidou.mybatisplus.extension.service.IService;
import com.eitc.common.core.domain.AjaxResult;
import com.eitc.patient.domain.AppUser;
import com.eitc.patient.vo.AppUserPatientVO;
import org.springframework.stereotype.Service;

import java.util.Map;

/**
 * IAppUserService
 *
 * @author mtx
 * @date: 2024/06/11 17:37
 */
@Service
public interface IAppUserService extends IService<AppUser> {

    /**
     * @param phoneNumber 手机号
     * @return 成功
     * @author mtx
     * @date: 2024/6/12 11:20
     */
    AjaxResult sendCaptchaCode(String phoneNumber) throws ClientException;

    /**
     * 登录
     *
     * @param map 参数
     * @return 成功
     */
    AjaxResult login(Map<String, String> map);

    /**
     * 设置密码
     *
     * @param map 参数
     * @return 返回结果
     * @author mtx
     * @date: 2024/6/13 9:26
     */
    AjaxResult setPassword(Map<String, String> map);

    /**
     * 修改手机号
     *
     * @param map 参数
     * @return 返回结果
     * @author mtx
     * @date: 2024/6/13 9:29
     */
    AjaxResult updatePhoneNumber(Map<String, String> map);

    /**
     * 锁定用户&解锁用户
     *
     * @param map id type 类型（1锁定用户，0解锁用户）
     * @return 返回结果
     * @author mtx
     * @date: 2024/6/13 10:27
     */
    AjaxResult locking(Map<String, String> map);

    /**
     * 回复删除数据
     *
     * @param id id
     * @author mtx
     * @date: 2024/6/13 10:33
     */
    void revert(String id);

    /**
     * 添加就诊人
     * @param vo 信息
     * @author mtx
     * @date: 2024/6/14 11:23
     */
    void add(AppUserPatientVO vo);

    /**
     * 编辑就诊人
     * @param vo 信息
     * @author mtx
     * @date: 2024/6/14 11:23
     */
    void edit(AppUserPatientVO vo);

    /**
     * 注册 参数
     * @param map
     * @return 返回结果
     * @author mtx
     * @date: 2024/6/19 18:39
     */
    boolean register(Map<String, String> map);

    /**
     * APP切换诊所时同步数据
     * @return 返回结果
     * @author mtx
     * @date: 2024/6/20 8:53
     */
    AjaxResult synchronizeData(AppUser beforeAppUser);

    /**
     * 验证短信验证码时候正确
     *
     * @param phoneNumber 手机号
     * @param captchaCode 录入的验证码
     */
    void checkCaptchaCode(String phoneNumber, String captchaCode);

    /**
     * 退出登录
     */
    void logout();
}
