import { defHttp } from '/@/utils/http/axios';
import { setParams } from '/@/utils/index';

enum Api {
  LogQueryPage = '/sys/log/query/page',
  LogDetail = '/sys/log/detail',
  LogAdd = '/sys/log/add',
  LogEdit = '/sys/log/edit',
  LogRemove = '/sys/log/removeByIds',
  LogExport = '/sys/log/export/operation',
  LogLoginExport = '/sys/log/export/login',
}

/**
 *
 * @author lf
 * @date  2023/04/18 14:22
 * @description: 根据条件查询系统日志列表,权限 - sys:log:query
 * @method: POST
 * @param:
 *       {String}  opName  like   操作名称
 *       {String}  type  eq   操作日志类型
 *       {Boolean}  responseType  eq   响应类型
 *       {Date}  updateTime     更新时间
 * @return:
 *       {String}  opName  操作名称
 *       {String}  userIp  用户IP
 *       {String}  loginLocation  用户地址
 *       {String}  javaClass  类名称
 *       {String}  javaMethod  方法名称
 *       {String}  type  操作日志类型
 *       {Date}  opTime  操作时间
 *       {Integer}  duration  执行时长
 *       {String}  opUser  操作用户
 *       {String}  requestArgs  请求参数
 *       {Boolean}  responseType  响应类型
 *       {String}  userAgent  浏览器UserAgent
 *       {String}  resultJson  响应结果
 */

export const LogQueryPage = (params?: object) => {
  return defHttp.post({ url: Api.LogQueryPage, params: setParams(params) });
};
/**
 *
 * @author lf
 * @date  2023/04/18 14:22
 * @description: 根据id查询系统日志详细信息,权限 - sys:log:query
 * @method: GET
 * @param:  id 系统日志主键id
 * @return:
 *       {String}  opName  操作名称
 *       {String}  userIp  用户IP
 *       {String}  loginLocation  用户地址
 *       {String}  javaClass  类名称
 *       {String}  javaMethod  方法名称
 *       {String}  type  操作日志类型
 *       {Date}  opTime  操作时间
 *       {Integer}  duration  执行时长
 *       {String}  opUser  操作用户
 *       {String}  requestArgs  请求参数
 *       {Boolean}  responseType  响应类型
 *       {String}  userAgent  浏览器UserAgent
 *       {String}  resultJson  响应结果
 */
export const LogDetail = (id: string) => {
  return defHttp.get({ url: Api.LogDetail + '/' + id });
};

/**
 *
 * @author lf
 * @date  2023/04/18 14:22
 * @description: 添加系统日志,权限 - sys:log:add
 * @method: POST
 * @param:
 *       {String}  opName  操作名称
 *       {String}  userIp  用户IP
 *       {String}  loginLocation  用户地址
 *       {String}  javaClass  类名称
 *       {String}  javaMethod  方法名称
 *       {String}  type  操作日志类型
 *       {Date}  opTime  操作时间
 *       {Integer}  duration  执行时长
 *       {String}  opUser  操作用户
 *       {String}  requestArgs  请求参数
 *       {Boolean}  responseType  响应类型
 *       {String}  userAgent  浏览器UserAgent
 *       {String}  resultJson  响应结果
 * @return:
 *       0 添加失败
 *       1 添加成功
 */
export const LogAdd = (params?: object) => {
  return defHttp.post({ url: Api.LogAdd, params: params });
};

/**
 *
 * @author lf
 * @date  2023/04/18 14:22
 * @description: 通过主键id编辑系统日志,权限 - sys:log:edit
 * @method: POST
 * @param:
 *       {String}  opName  操作名称
 *       {String}  userIp  用户IP
 *       {String}  loginLocation  用户地址
 *       {String}  javaClass  类名称
 *       {String}  javaMethod  方法名称
 *       {String}  type  操作日志类型
 *       {Date}  opTime  操作时间
 *       {Integer}  duration  执行时长
 *       {String}  opUser  操作用户
 *       {String}  requestArgs  请求参数
 *       {Boolean}  responseType  响应类型
 *       {String}  userAgent  浏览器UserAgent
 *       {String}  resultJson  响应结果
 * @return:
 *       0 编辑失败
 *       1 编辑成功
 */
export const LogEdit = (params?: object) => {
  return defHttp.post({ url: Api.LogEdit, params: params });
};

/**
 * @description: 删除,权限 - sys:log:remove
 * @method: POST
 */
export const LogRemove = (params: Array<string | number>) => {
  return defHttp.post({ url: Api.LogRemove, params: params });
};

/**
 * @description: 导出,权限 - sys:log:export
 * @method: POST
 */
export const LogExport = (params: Array<string | number>) => {
  return defHttp.post({ url: Api.LogExport, params: params });
};

/**
 * @description: 导出登录/等出,权限 - sys:log:export:login
 * @method: POST
 */
export const LogLoginExport = (params: Array<string | number>) => {
  return defHttp.post({ url: Api.LogLoginExport, params: params });
};
