package com.boco.nbd.wios.log.service;


import com.boco.nbd.framework.persistence.IBaseDaoService;
import com.boco.nbd.wios.log.entity.po.*;
import com.boco.nbd.wios.log.entity.qo.SysLogQO;
import org.springframework.dao.DataAccessException;

import java.util.List;

/**
 * ISysLogService
 * @Author: ZQY
 * @Date: 2022/10/17
 **/
public interface ISysLogService extends IBaseDaoService<SysLogPO, SysLogQO, String> {

    /** ###################登录日志分割线######################### */

    /**
     * 根据时间用户统计日志
     *
     * @param start
     * @param end
     * @return
     * @throws DataAccessException
     */
     List<UserLogCountInfoPO> getUsersLoginStat(String start, String end)
            throws DataAccessException;


    /**
     * 根据用户ID查询日志详细信息
     *
     * @param start
     * @param end
     * @param userId
     * @return
     * @throws DataAccessException
     */
     List<SysLogInfoPO> getUsersLoginDetails(String start, String end, String userId) throws DataAccessException;


    /**
     * 根据时间角色统计日志
     *
     * @param start
     * @param end
     * @return
     * @throws DataAccessException
     */
    List<RoleLogCountInfoPO> getRolesLoginStat(String start, String end)
            throws DataAccessException;



    /**
     * 根据角色查询日志
     *
     * @param start
     * @param end
     * @param roleName
     * @return
     * @throws DataAccessException
     */
    List<SysLogInfoPO> getRolesLoginDetails(String start, String end, String roleName)
            throws DataAccessException;



    /** ###################访问日志统计分割线######################### */
    /**
     * 根据时间用户访问统计日志
     *
     * @param start
     * @param end
     * @return
     * @throws DataAccessException
     */
    List<UserLogCountInfoPO> countByUserDate(String start, String end) throws DataAccessException;


    /**
     * 根据用户ID查询访问日志详细信息
     *
     * @param start
     * @param end
     * @param userId
     * @return
     * @throws DataAccessException
     */
     List<SysLogInfoPO> selectLogInfoByUserIdDate(String start, String end, String userId)
            throws DataAccessException;


    /**
     * 根据时间角色统计访问日志
     *
     * @param start
     * @param end
     * @return
     * @throws DataAccessException
     */
     List<RoleLogCountInfoPO> countByRoleDate(String start, String end) throws DataAccessException;


    /**
     * 根据角色查询访问日志
     *
     * @param start
     * @param end
     * @param roleName
     * @return
     * @throws DataAccessException
     */
     List<SysLogInfoPO> selectByRoleDate(String start, String end, String roleName)
            throws DataAccessException;



    /** ###################模块访问日志统计分割线######################### */
    /**
     * 根据时间模块统计日志
     *
     * @param start
     * @param end
     * @return
     * @throws DataAccessException
     */
     List<ModuleLogCountInfoPO> countByModuleDate(String start, String end)
            throws DataAccessException;


    /**
     * 根据模块ID查询日志详细信息
     *
     * @param start
     * @param end
     * @param moduleId
     * @return
     * @throws DataAccessException
     */
     List<SysLogInfoPO> selectLogInfoByModuleIdDate(String start, String end, String moduleId)
            throws DataAccessException;
}