package com.cf.imes.module.system.service.systemconfig.factory.service;

import com.cf.imes.module.system.controller.admin.systemconfig.vo.*;
import com.cf.imes.module.system.dal.dataobject.systemconfig.SystemConfigDO;

import java.util.List;

/**
 * 系统配置服务处理器抽象类
 *
 * @author Gqr
 * @since 2024/11/8 16:45
 */
public abstract class AbstractSystemConfigServiceHandler {

    /**
     * 分页查询系统配置
     *
     * @param pageReqVO
     * @return
     */
    public abstract List<SystemConfigDO> selectList(ConfigPageReqVO pageReqVO);

    /**
     * 校验配置的合法性
     * 校验异常抛出ServiceException
     *
     * @param setting
     */
    public abstract void checkValid(String setting);

    /**
     * 系统配置入库前操作
     *
     * @param reqVO
     */
    public abstract void beforeSaveConfig(ConfigSaveReqVO reqVO);

    /**
     * 系统配置入库后操作
     *
     * @param systemConfigDO
     * @param reqVO
     */
    public abstract void afterSaveConfig(SystemConfigDO systemConfigDO, ConfigSaveReqVO reqVO);


    /**
     * 删除系统配置操作
     *
     * @param reqVO
     */
    public abstract void deleteConfig(ConfigDeleteReqVO reqVO);


    /**
     * 修改系统配置状态操作
     *
     * @param reqVO
     */
    public abstract void updateConfigStatus(ConfigUpdateStatusReqVO reqVO);


    /**
     * 修改系统配置排序操作
     *
     * @param reqVO
     */
    public abstract void updateConfigSort(List<ConfigUpdateSortReqVO> reqVO);


    /**
     * 根据 ID 查询对应的系统配置信息
     *
     * @param id
     */
    public abstract SystemConfigDO getSystemConfig(Long id);


    /**
     * 修改系统配置操作
     *
     * @param reqVO
     */
    public abstract void modifySystemConfig(ConfigSaveReqVO reqVO);

}
