package com.red.circle.order.infra.database.rds.service.order;

import com.red.circle.common.business.core.enums.SysOriginPlatformEnum;
import com.red.circle.framework.mybatis.service.BaseService;
import com.red.circle.order.infra.database.rds.entity.order.OrderPurchaseHistory;
import java.math.BigDecimal;
import java.util.List;
import java.util.Set;

/**
 * <p>
 * 购买记录 服务类
 * </p>
 *
 * @author pengliang
 * @since 2020-03-20
 */
public interface OrderPurchaseHistoryService extends BaseService<OrderPurchaseHistory> {

  /**
   * 是否存在订单.
   *
   * @param orderId 订单id
   * @return ture/false
   */
  boolean existOrder(String orderId);

  /**
   * 是否存在订单.
   *
   * @return ture/false
   */
  boolean existById(String id);

  /**
   * 获取订单信息.
   *
   * @param orderId 订单id
   * @return 订单信息
   */
  OrderPurchaseHistory getOrder(String orderId);

  /**
   * 获取用户id
   *
   * @param orderId 初始订单id
   * @return 用户id
   */
  Long getUserIdByOrderId(String orderId);


  /**
   * 今日内购总额(生产订单).
   */
  BigDecimal purchaseTodayTotal();

  /**
   * 今日内购总额.
   *
   * @param sysOrigin 来源系统
   */
  BigDecimal purchaseTodayTotalBySysOrigin(SysOriginPlatformEnum sysOrigin);

  /**
   * 今日内购.
   */
  List<OrderPurchaseHistory> purchaseTodayBySysOrigin(String sysOrigin, Set<Long> userIds);

  /**
   * 根据用户ID查询购买总额
   *
   * @param userId 用户ID
   * @return 总额
   */
  BigDecimal getPurchaseTotalByUserId(Long userId);

}
