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

import com.red.circle.common.business.core.enums.SysOriginPlatformEnum;
import com.red.circle.other.inner.model.dto.user.WealthAndCharmExpLevelDTO;
import java.math.BigDecimal;
import java.util.List;

/**
 * 用户等级，服务.
 *
 * @author pengliang on 2023/6/3
 */
public interface UserLevelClientService {

  /**
   * 获取消费等级信息.
   *
   * @param userId 用户id
   * @return ignore
   */
  WealthAndCharmExpLevelDTO getUserLevelExp(SysOriginPlatformEnum sysOrigin, Long userId);

  /**
   * 批量获取获取消费等级信息.
   *
   * @param userIds 用户ids
   * @return ignore
   */
  List<WealthAndCharmExpLevelDTO> getUsersLevelExp(SysOriginPlatformEnum sysOrigin, List<Long> userIds);

  /**
   * 累计财富经验.
   *
   * @param userId   用户id
   * @param quantity 数量
   */
  void incrWealthExp(Long userId, BigDecimal quantity);

  /**
   * 获取用财富经验.
   *
   * @param userId 用户id
   * @return 金币
   */
  BigDecimal getWealthExp(Long userId);

  /**
   * 累计用户魅力经验.
   *
   * @param userId   用户id
   * @param quantity 数量
   */
  void incrCharmExp(Long userId, BigDecimal quantity);

  /**
   * 获取用户魅力经验.
   *
   * @param userId 用户id
   * @return 金币
   */
  BigDecimal getCharmExp(Long userId);

}
