package com.ruoyi.system.mapper;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.system.domain.InfoUser;
import com.ruoyi.system.domain.PosOrder;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

/**
 * 用户信息Mapper接口
 *
 * @author ruoyi
 * @date 2023-06-25
 */
public interface InfoUserMapper  extends BaseMapper<InfoUser>
{
   public int getUserSum(@Param("userType") String userType, @Param("startDate") String startDate,@Param("endDate") String endDate);  //反回结果
    /**
     * 查询用户信息
     *
     * @param userId 用户信息主键
     * @return 用户信息
     */
    public InfoUser selectInfoUserByUserId(Long userId);

    /** 按标准化手机号查询有效普通用户，最多返回两条以识别重复账号。 */
    public List<Long> selectOrdinaryUserIdsByNormalizedPhone(@Param("normalizedPhone") String normalizedPhone);

    /**
     * 查询用户信息列表
     *
     * @param infoUser 用户信息
     * @return 用户信息集合
     */
    public List<InfoUser> selectInfoUserList(InfoUser infoUser);

    /**
     * 新增用户信息
     *
     * @param infoUser 用户信息
     * @return 结果
     */
    public int insertInfoUser(InfoUser infoUser);

    /**
     * 修改用户信息
     *
     * @param infoUser 用户信息
     * @return 结果
     */
    public int updateInfoUser(InfoUser infoUser);

    /**
     * 删除用户信息
     *
     * @param userId 用户信息主键
     * @return 结果
     */
    public int deleteInfoUserByUserId(Long userId);

    /**
     * 批量删除用户信息
     *
     * @param userIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteInfoUserByUserIds(Long[] userIds);

    /**
     * 根据用户类型查询用户数量，可选条件created_at
     * @param userType 用户类型
     * @param createdAt 创建时间（可选）
     * @return 结果
     */
    public int countUsersByUserTypeAndCreatedAt(@Param("userType") int userType, @Param("createdAt") Date createdAt);

    /**
     * 根据摊位ID查询摊位主列表
     */
    public List<InfoUser> selectStallOwnersByStoreId(Long storeId);

    /**
     * 查询已审核通过的夜市列表，按距离排序
     */
    public List<InfoUser> selectNightMarketListByDistance(@Param("longitude") BigDecimal longitude, @Param("latitude") BigDecimal latitude);
}
