package com.engine.salary.service;

import com.engine.salary.entity.push.dto.PushRecordDTO;
import com.engine.salary.entity.push.dto.PushRecordDetailDTO;
import com.engine.salary.entity.push.dto.PushSettingDTO;
import com.engine.salary.entity.push.dto.PushSettingItemDTO;
import com.engine.salary.entity.push.param.*;
import com.engine.salary.entity.push.po.PushSettingItemPO;
import com.engine.salary.entity.push.po.PushSettingPO;
import com.engine.salary.util.page.PageInfo;

import java.util.List;

public interface PushService {

    /**
     * 推送任务列表
     *
     * @param param
     * @return
     */
    PageInfo<PushSettingDTO> settingList(PushSettingQueryParam param);


    /**
     * 保存推送配置
     *
     * @param param
     */
    PushSettingPO save(PushSettingSaveParam param);

    /**
     * 删除推送配置
     *
     * @param id
     */
    void delete(Long id);

    /**
     * 推送明细列表
     *
     * @param param
     * @return
     */
    PageInfo<PushSettingItemDTO> itemList(PushSettingItemQueryParam param);

    /**
     * 保存明细配置
     *
     * @param param
     */
    PushSettingItemPO saveItem(PushSettingItemSaveParam param);

    /**
     * 删除明细配置
     *
     * @param id
     */
    void deleteItem(Long id);

    void createPushRecord(Long salaryAcctRecordId);

    void withdrawPushRecord(Long salaryAcctRecordId);

    void push(Long id);

    void withdraw(Long id);

    void removeRecords(List<Long> records);

    PageInfo<PushRecordDTO> recordList(RecordListQueryParam param);

    PageInfo<PushRecordDetailDTO> recordDetailList(RecordDetailListQueryParam param);

}
