package com.zsElectric.boot.business.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zsElectric.boot.business.model.entity.UserInfo;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zsElectric.boot.business.model.query.UserInfoQuery;
import com.zsElectric.boot.business.model.vo.UserInfoVO;
import com.zsElectric.boot.business.model.vo.applet.AppUserInfoVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 个人用户信息Mapper接口
 *
 * @author zsElectric
 * @since 2025-12-12 10:27
 */
@Mapper
public interface UserInfoMapper extends BaseMapper<UserInfo> {

    /**
     * 获取个人用户信息分页数据
     *
     * @param page 分页对象
     * @param queryParams 查询参数
     * @return {@link Page<UserInfoVO>} 个人用户信息分页列表
     */
    Page<UserInfoVO> getUserInfoPage(Page<UserInfoVO> page, UserInfoQuery queryParams);

    AppUserInfoVO getAppletUserInfo(@Param("userId") Long userId);

    /**
     * 查询在订单或账户中存在但UserInfo表中不存在的用户信息（用于恢复物理删除的数据）
     *
     * @return 需要恢复的用户信息列表
     */
    List<UserInfo> selectMissingUserInfoFromOrderAndAccount();

    /**
     * 插入恢复的用户信息（指定ID）
     *
     * @param userInfo 用户信息
     * @return 插入的记录数
     */
    int insertUserInfoWithId(UserInfo userInfo);
}
