package com.huatek.busi.service.log;

import com.github.pagehelper.PageInfo;
import com.huatek.busi.dto.OpChangeLogEntityDto;
import com.huatek.busi.vo.OpChangeLogEntityVo;
import com.huatek.torch.sql.beans.Pojo;

/**
 * 记录变更操作日志Service接口
 * 
 * @author anker_cheng
 * @date 2019/07/11
 */
public interface OpChangeLogService {

    /**
     * 日志分页查询
     * 
     * @param opChangeLogEntityDto
     *            OpChangeLogEntityDto
     * @return OpChangeLogEntityVo
     */
    PageInfo<OpChangeLogEntityVo> findOpChangeLogPage(OpChangeLogEntityDto opChangeLogEntityDto);

    /**
     * 保存新增日志
     * 
     * @param <T>
     *            具体的持久化对象
     * @param token
     *            token
     * @param mainEntity
     *            对象
     */
    <T extends Pojo> void saveOpLog(String token, T mainEntity);

    /**
     * 保存更新日志
     * 
     * @param <T>
     *            具体的持久化对象
     * @param token
     *            token
     * @param newEntity
     *            新的对象
     * @param oldEntity
     *            旧的对象
     */
    <T extends Pojo> void saveOpLog(String token, T newEntity, T oldEntity);
}
