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

import java.util.*;
import javax.validation.*;

import cn.newfeifan.mall.module.distri.controller.app.ptprofitlog.vo.PtProfitLogPageReqVO;
import cn.newfeifan.mall.module.distri.controller.app.ptprofitlog.vo.PtProfitLogRespVO;
import cn.newfeifan.mall.module.distri.controller.app.ptprofitlog.vo.PtProfitLogSaveReqVO;
import cn.newfeifan.mall.module.distri.dal.dataobject.ptprofitlog.PtProfitLogDO;
import cn.newfeifan.mall.framework.common.pojo.PageResult;
import cn.newfeifan.mall.module.distri.enums.CaclEnum;

/**
 * 平台利润记录 Service 接口
 *
 * @author 非繁人
 */
public interface PtProfitLogService {

    /**
     * 创建平台利润记录
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createPtProfitLog(@Valid PtProfitLogSaveReqVO createReqVO);

    /**
     * 更新平台利润记录
     *
     * @param updateReqVO 更新信息
     */
    void updatePtProfitLog(@Valid PtProfitLogSaveReqVO updateReqVO);

    /**
     * 删除平台利润记录
     *
     * @param id 编号
     */
    void deletePtProfitLog(Long id);

    /**
     * 获得平台利润记录
     *
     * @param id 编号
     * @return 平台利润记录
     */
    PtProfitLogDO getPtProfitLog(Long id);

    /**
     * 获得平台利润记录分页
     *
     * @param pageReqVO 分页查询
     * @return 平台利润记录分页
     */
    PageResult<PtProfitLogRespVO> getPtProfitLogPage(PtProfitLogPageReqVO pageReqVO);

    void saveBatch(List<PtProfitLogSaveReqVO> ptProfitLogSaveReqVOS);

    //记录用户的积分变动日志
    void addMessage(Long generateUserId,//导致产生积分变动的用户ID
                    Long userId, //实际变动积分的用户ID
                    CaclEnum caclEnum, Long amount,
                    Long afterAmount, Long freezeAmount,
                    Long afterFreezeAmount, String percentTemplate,
                    Long tradeOrderId,
                    String OrderNum
                    );
    String getYesterdayLog(List<Long> sonsId);

    String getTotalLog(List<Long> sonsId);

    PageResult<PtProfitLogRespVO> getMaxAmountPage(PtProfitLogPageReqVO pageReqVO);
}