package cn.newfeifan.mall.module.distri.service.integral;

import java.util.*;
import javax.validation.*;
import cn.newfeifan.mall.module.distri.controller.admin.integral.vo.*;
import cn.newfeifan.mall.module.distri.dal.dataobject.integral.IntegralDO;
import cn.newfeifan.mall.framework.common.pojo.PageResult;
import cn.newfeifan.mall.framework.common.pojo.PageParam;

/**
 * 推荐用户积分 Service 接口
 *
 * @author 非繁人
 */
public interface IntegralService {

    /**
     * 创建推荐用户积分
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createIntegral(@Valid IntegralSaveReqVO createReqVO);

    /**
     * 更新推荐用户积分
     *
     * @param updateReqVO 更新信息
     */
    void updateIntegral(@Valid IntegralSaveReqVO updateReqVO);

    /**
     * 删除推荐用户积分
     *
     * @param id 编号
     */
    void deleteIntegral(Long id);

    /**
     * 获得推荐用户积分
     *
     * @param id 编号
     * @return 推荐用户积分
     */
    IntegralDO getIntegral(Long id);

    /**
     * 获得推荐用户积分分页
     *
     * @param pageReqVO 分页查询
     * @return 推荐用户积分分页
     */
    PageResult<IntegralDO> getIntegralPage(IntegralPageReqVO pageReqVO);

    /**
     * 根据用户ID查询是否有钱包
     * @param descendant
     * @return
     */
    IntegralDO selectByUser(Long descendant);


    void saveBatch(List<IntegralSaveReqVO> integralSaveReqVOS);

    /**
     * 批量修改以用户积分
     * @param integralSaveReqVOS
     */
    void updateBatch(List<IntegralSaveReqVO> integralSaveReqVOS);


    /**
     * 查询当前用户的父亲的积分信息
     * @param userId
     * @return
     */
    IntegralDO selectUserParent(Long userId);


}