/**
 * @filename:CustomerUserService 2024年04月01日
 * @project trade-client V1.0 Copyright(c) 2024 wanglang Co. Ltd. All right reserved.
 */
package com.trade.client.enterprise.customer.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.trade.client.enterprise.customer.domain.CustomerUser;
import com.trade.client.enterprise.customer.domain.model.RegisterMo;

/**
 * @Description: 客户服务层
 * @version: V1.0
 * @author: wanglang
 * @date : 2024年04月01日
 */
public interface CustomerUserService extends IService<CustomerUser> {

    /**
     * 注册
     * 
     * @param registerMo 客户注册信息
     * @return true/false
     */
    boolean register(RegisterMo registerMo);

    /**
     * 更换密码/主要用于忘记密码
     *
     * @param phoneNumber 手机号码
     * @param password 密码
     * @param code 验证码
     * @return true/false
     */
    boolean updatePassword(String phoneNumber, String password, String code);

    /**
     * 修改密码
     *
     * @param oldPassword 旧密码
     * @param newPassword 新密码
     * @return true/false
     */
    boolean modifyPassword(String oldPassword, String newPassword);

    /**
     * 修改手机号
     * 
     * @param code 旧手机验证码
     * @param newPhoneNumber 新手机号码
     * @param newCode 新手机验证码
     * @return true/false
     */
    boolean modifyPhoneNumber(String code, String newPhoneNumber, String newCode);

    /**
     * 新增邮箱-邮箱地址 绑定
     * 
     * @param email 邮箱
     * @param code 邮箱验证码
     * @param phoneCode 手机号验证码
     * @return true/false
     */
    boolean bindingEmail(String email, String code, String phoneCode);

    /**
     * 修改邮箱
     *
     * @param email 新邮箱
     * @param code 新邮箱验证码
     * @param emailCode 旧邮箱验证码
     * @return:boolean
     */
    boolean modifyEmail(String email, String code, String emailCode);

    /**
     * 绑定小图用户id
     * 
     * @param userId
     * @param xtUserId
     * @return
     */
    boolean bindXtUserId(Long userId, String xtUserId);

    /**
     * 重置密码
     *
     * @param userId 用户ID
     * @param resetPassword 重置密码
     * @param confirmPassword 确认密码
     * @return:boolean
     */
    boolean resetPassword(Long userId, String resetPassword, String confirmPassword);

    /**
     * 检查用户是否存在
     * 
     * @param phoneNumber 手机号
     * @param nickname 昵称
     * @return true/false
     */
    boolean checkExistence(String phoneNumber, String nickname);

    /**
     * 根据手机号或昵称/会员名称查询
     *
     * @param userName 手机号或昵称
     * @return customerUser
     */
    CustomerUser findByPhoneOrName(String userName);

    /**
     * 获取客户信息
     * 
     * @return 客户信息
     */
    CustomerUser getCustomerUser();

    /**
     * 获取客户信息
     * 
     * @return 客户信息
     */
    CustomerUser getCustomerUserInfo();
}
