/**
* 文件：OperLogService.java
* 版本：1.0.0
* 日期：
* Copyright &reg; 
* All right reserved.
*/

package com.mortals.xhx.base.system.oper.service;


import com.mortals.framework.model.BaseEntity;
import com.mortals.framework.service.ICRUDService;
import com.mortals.framework.service.IUser;
import com.mortals.xhx.base.system.oper.model.OperLogEntity;
import com.mortals.xhx.common.code.OperTypeEnum;

import javax.servlet.http.HttpServletRequest;

/**
 * <p>Title: 操作日志</p>
 * <p>Description: OperLogService service接口 </p>
 * <p>Copyright: Copyright &reg;  </p>
 * <p>Company: </p>
 * @author 
 * @version 1.0.0
 */

public interface OperLogService extends ICRUDService<OperLogEntity,Long> {

    /**
     * 保存新增数据的日志信息
     * @param request 发送请求信息
     * @param user 当前登录用户
     * @param result 新增后的返回数据
     */
    void saveCreateOperLog(HttpServletRequest request, IUser user, String result);

    /**
     * 保存更新数据日志信息
     * @param request 发送请求信息
     * @param user 当前登录用户
     * @param oldEntity 原始数据
     * @param newEntity 新数据
     */
    void saveUpdateOperLog(HttpServletRequest request, IUser user, BaseEntity oldEntity, BaseEntity newEntity);

    /**
     * 保存删除操作日志信息
     * @param request 发送请求信息
     * @param user 当前登录用户
     * @param result 新增后的返回数据
     * @param id 删除的数据id
     */
    void saveDeleteOperLog(HttpServletRequest request, IUser user, String result, String id);

    /**
     * 保存新增信息操作日志，内容直接取content字段，如果存在id会加上id信息
     * @param request 发送请求信息
     * @param user 当前登录用户
     * @param content 需要记录的日志信息
     * @param id 数据的id值
     */
    void saveOperLog(HttpServletRequest request, IUser user, String content, String id);

    /**
     *
     * @param request 发送请求信息
     * @param user 当前登录用户
     * @param oldEntity 原始数据
     * @param newEntity 新数据
     * @param operType 日志类型
     * @param content 需要记录的日志信息
     * @param id 数据的id值
     */
    void insertOperLog(HttpServletRequest request, IUser user, BaseEntity oldEntity, BaseEntity newEntity, OperTypeEnum operType, String content, String id);

    void insertOperLog(String ip, String requestUrl, Long userId, String userName, String loginName, String content);
	
}