package com.ruoyi.system.operLog.service;

import java.math.BigDecimal;
import java.util.List;

import com.ruoyi.bst.device.domain.DeviceVO;
import com.ruoyi.common.enums.LogBizType;
import com.ruoyi.system.operLog.domain.OperLog;
import com.ruoyi.system.operLog.domain.OperLogQuery;
import com.ruoyi.system.operLog.domain.OperLogVO;

/**
 * 操作日志 服务层
 *
 * @author ruoyi
 */
public interface OperLogService
{
    /**
     * 新增操作日志
     *
     * @param operLog 操作日志对象
     */
    public void insertOperlog(OperLog operLog);

    /**
     * 查询系统操作日志集合
     *
     * @param query 操作日志对象
     * @return 操作日志集合
     */
    public List<OperLogVO> selectOperLogList(OperLogQuery query);

    /**
     * 批量删除系统操作日志
     *
     * @param operIds 需要删除的操作日志ID
     * @return 结果
     */
    public int deleteOperLogByIds(Long[] operIds);

    /**
     * 查询操作日志详细
     *
     * @param operId 操作ID
     * @return 操作日志对象
     */
    public OperLogVO selectOperLogById(Long operId);

    /**
     * 清空操作日志
     */
    public void cleanOperLog();

    /**
     * 批量插入操作日志
     * @param list 操作日志列表
     * @return 插入的条数
     */
    public int batchInsert(List<OperLog> list);
    
    /**
     * 记录系统操作日志
     * @param title 日志标题
     * @param success 是否成功
     * @param bizType 业务类型
     * @param bizId 业务ID
     * @param device 设备
     */
    public void operSysLog(String title, boolean success, LogBizType bizType, Long bizId, DeviceVO device);

    /**
     * 记录系统操作日志
     * @param title 日志标题
     * @param success 是否成功
     * @param bizType 业务类型
     * @param bizId 业务ID
     * @param deviceId 设备ID
     * @param longitude 经度
     * @param latitude 纬度
     */
    public void operSysLog(String title, boolean success, LogBizType bizType, Long bizId, Long deviceId, BigDecimal longitude, BigDecimal latitude);

    /**
     * 暂存操作日志
     * @param operLog 操作日志对象
     */
    public void tempInsert(OperLog operLog);
}
