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

import javax.validation.*;
import cn.newfeifan.mall.module.distri.controller.admin.dailyawardrecords.vo.*;
import cn.newfeifan.mall.module.distri.dal.dataobject.dailyawardrecords.DailyAwardRecordsDO;
import cn.newfeifan.mall.framework.common.pojo.PageResult;

/**
 * 每日用户获得合赢奖记录 Service 接口
 *
 * @author 非繁人
 */
public interface DailyAwardRecordsService {

    /**
     * 创建每日用户获得合赢奖记录
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createDailyAwardRecords(@Valid DailyAwardRecordsSaveReqVO createReqVO);

    /**
     * 更新每日用户获得合赢奖记录
     *
     * @param updateReqVO 更新信息
     */
    void updateDailyAwardRecords(@Valid DailyAwardRecordsSaveReqVO updateReqVO);

    /**
     * 删除每日用户获得合赢奖记录
     *
     * @param id 编号
     */
    void deleteDailyAwardRecords(Long id);

    /**
     * 获得每日用户获得合赢奖记录
     *
     * @param id 编号
     * @return 每日用户获得合赢奖记录
     */
    DailyAwardRecordsDO getDailyAwardRecords(Long id);

    /**
     * 获得每日用户获得合赢奖记录分页
     *
     * @param pageReqVO 分页查询
     * @return 每日用户获得合赢奖记录分页
     */
    PageResult<DailyAwardRecordsDO> getDailyAwardRecordsPage(DailyAwardRecordsPageReqVO pageReqVO);

    /**
     * 添加每日用户获得合赢奖记录
     *
     * @param userId                 用户编号
     * @param generateUserId         来源用户
     * @param amount                 获得的合赢奖
     * @param logId                  日志编号
     * @param accumulatedQuotaAmount 超出的合赢奖
     */
    void addDailyAwardRecords(Long userId, Long generateUserId, Long amount, Long logId, Long accumulatedQuotaAmount);

    /**
     * 获取七天前的合赢奖记录，将他转换成可用积分
     */
    void transitionBonus();
}