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

enum Api {
  monitorJobQueryPage = '/quartz/job/query/page',
  monitorJobDetail = '/quartz/job/detail',
  monitorJobAdd = '/quartz/job/add',
  monitorJobEdit = '/quartz/job/edit',
  monitorJobRemove = '/quartz/job/removeByIds',
}

/**
 *
 * @author lf
 * @date  2023/05/05 17:12
 * @description: 根据条件查询定时任务调度表列表,权限 - quartz:job:query
 * @method: POST
 * @param:
 * @return:
 *       {String}  jobName  任务名称
 *       {String}  jobGroup  任务组名
 *       {String}  invokeTarget  调用目标字符串
 *       {String}  cronExpression  cron执行表达式
 *       {String}  misfirePolicy  计划执行错误策略（1立即执行 2执行一次 3放弃执行）
 *       {Boolean}  concurrent  是否并发执行（0允许 1禁止）
 *       {Boolean}  disable  状态（0正常 1暂停）
 *       {String}  remark  备注信息
 */

export const monitorJobQueryPage = (params?: object) => {
  return defHttp.post({ url: Api.monitorJobQueryPage, params: setParams(params) });
};
/**
 *
 * @author lf
 * @date  2023/05/05 17:12
 * @description: 根据id查询定时任务调度表详细信息,权限 - quartz:job:query
 * @method: GET
 * @param:  id 定时任务调度表主键id
 * @return:
 *       {String}  jobName  任务名称
 *       {String}  jobGroup  任务组名
 *       {String}  invokeTarget  调用目标字符串
 *       {String}  cronExpression  cron执行表达式
 *       {String}  misfirePolicy  计划执行错误策略（1立即执行 2执行一次 3放弃执行）
 *       {Boolean}  concurrent  是否并发执行（0允许 1禁止）
 *       {Boolean}  disable  状态（0正常 1暂停）
 *       {String}  remark  备注信息
 */
export const monitorJobDetail = (id: string) => {
  return defHttp.get({ url: Api.monitorJobDetail + '/' + id });
};

/**
 *
 * @author lf
 * @date  2023/05/05 17:12
 * @description: 添加定时任务调度表,权限 - quartz:job:add
 * @method: POST
 * @param:
 *       {String}  jobName  任务名称
 *       {String}  jobGroup  任务组名
 *       {String}  invokeTarget  调用目标字符串
 *       {String}  cronExpression  cron执行表达式
 *       {String}  misfirePolicy  计划执行错误策略（1立即执行 2执行一次 3放弃执行）
 *       {Boolean}  concurrent  是否并发执行（0允许 1禁止）
 *       {Boolean}  disable  状态（0正常 1暂停）
 *       {String}  remark  备注信息
 * @return:
 *       0 添加失败
 *       1 添加成功
 */
export const monitorJobAdd = (params?: object) => {
  return defHttp.post({ url: Api.monitorJobAdd, params: params });
};

/**
 *
 * @author lf
 * @date  2023/05/05 17:12
 * @description: 通过主键id编辑定时任务调度表,权限 - quartz:job:edit
 * @method: POST
 * @param:
 *       {String}  jobName  任务名称
 *       {String}  jobGroup  任务组名
 *       {String}  invokeTarget  调用目标字符串
 *       {String}  cronExpression  cron执行表达式
 *       {String}  misfirePolicy  计划执行错误策略（1立即执行 2执行一次 3放弃执行）
 *       {Boolean}  concurrent  是否并发执行（0允许 1禁止）
 *       {Boolean}  disable  状态（0正常 1暂停）
 *       {String}  remark  备注信息
 * @return:
 *       0 编辑失败
 *       1 编辑成功
 */
export const monitorJobEdit = (params?: object) => {
  return defHttp.post({ url: Api.monitorJobEdit, params: params });
};

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