package com.skr.mdm.api.app.service;

import com.skr.mdm.bean.qo.StrategyUserQO;
import com.skr.mdm.bean.qo.app.*;
import com.skr.mdm.dto.LoginAdminDTO;
import com.skr.mdm.result.ResponseResult;

import java.util.List;

/**
 * @author nfq
 * @date 2022-12-02 15:59
 */
public interface MdmAppPushService {

    /**
     * 应用推送列表
     * @param appPushListQO
     * @param loginAdminDTO
     * @return
     */
    ResponseResult listAppPush(AppPushListQO appPushListQO, LoginAdminDTO loginAdminDTO);

    /**
     * 应用推送用户列表
     * @param strategyUserQO
     * @return
     */
    ResponseResult listAppPushUser(StrategyUserQO strategyUserQO);

    /**
     * 指定部门列表
     * @param strategyUserQO
     * @return
     */
    ResponseResult listAppDept(StrategyUserQO strategyUserQO);

    /**
     * 应用推送统计
     * @param appPushId 应用推送ID
     * @return
     */
    ResponseResult statisticsAppPush(Integer appPushId);

    /**
     * 应用推送添加
     * @param appPushAddQO
     * @param loginAdminDTO
     * @return
     */
    ResponseResult addAppPush(MdmAppPushAddQO appPushAddQO, LoginAdminDTO loginAdminDTO);

    /**
     * 应用推送删除
     * @param appPushIdList
     * @param loginAdminDTO
     * @return
     */
    ResponseResult deleteAppPush(List<Integer> appPushIdList, LoginAdminDTO loginAdminDTO);

    /**
     * 暂停/恢复应用推送
     * @param appPushId
     * @param isPause
     * @param loginAdminDTO
     * @return
     */
    ResponseResult pauseAppPush(Integer appPushId, Integer isPause, LoginAdminDTO loginAdminDTO);

    /**
     * 应用推送
     * @param mdmAppPushQO
     * @param loginAdminDTO
     * @return
     */
    ResponseResult pushApp(MdmAppPushQO mdmAppPushQO, LoginAdminDTO loginAdminDTO);

    /**
     * 重新推送
     * @param appRePushQO
     * @param loginAdminDTO
     * @return
     */
    ResponseResult repushApp(MdmAppRePushQO appRePushQO, LoginAdminDTO loginAdminDTO);

    /**
     * 强制推送
     * @param appRePushQO
     * @param loginAdminDTO
     * @return
     */
    ResponseResult forcePushApp(MdmAppRePushQO appRePushQO, LoginAdminDTO loginAdminDTO);

    /**
     * 作用人删除
     * @param appPushId
     * @param equipmentIdList
     * @param loginAdminDTO
     * @return
     */
    ResponseResult deleteAppUserUser(Integer appPushId, List<Integer> equipmentIdList, LoginAdminDTO loginAdminDTO);

    /**
     * 应用推送全局配置
     * @param appPushGlobalQO
     * @param loginAdminDTO
     * @return
     */
    ResponseResult configGlobal(MdmAppPushGlobalQO appPushGlobalQO, LoginAdminDTO loginAdminDTO);

}
