package com.red.circle.other.app.inner.service.user.user;

import com.red.circle.framework.dto.PageResult;
import com.red.circle.other.inner.model.cmd.user.UserCheckInLogQryCmd;
import com.red.circle.other.inner.model.dto.user.ActiveUserCountryCodeDTO;
import com.red.circle.other.inner.model.dto.user.UserCheckInLogDTO;
import com.red.circle.other.inner.model.dto.user.UserExpandDTO;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * 用户扩展信息.
 *
 * @author pengliang on 2023/10/13
 */
public interface UserExpandClientService {

  /**
   * 是否购买过内购.
   *
   * @param userId 用户id
   * @return true 存在，false 不存在
   */
  boolean checkPurchasing(Long userId);

  /**
   * 修改购买状态=true.
   *
   * @param userId 用户id
   */
  void updatePurchasingToTrue(Long userId);

  /**
   * 最新两小时在线用户分布国家.
   *
   * @param lastActiveTime ignore
   * @return list
   */
  List<ActiveUserCountryCodeDTO> findLatestActiveUserCountryCode(LocalDateTime lastActiveTime);

  /**
   * 查询用户拓展信息映射
   */
  Map<Long, UserExpandDTO> mapUserExpand(Set<Long> userIds);

  /**
   * 获取用户签到日志
   */
  PageResult<UserCheckInLogDTO> getCheckInLog(UserCheckInLogQryCmd query);

  /**
   * 获取用户拓展信息
   */
  UserExpandDTO getById(Long userId);
}
