import { defHttp } from '@jdlinker/func';
import { Modal } from 'ant-design-vue';

enum Api {
  list = '/sys/tenant/list',
  save = '/sys/tenant/add',
  edit = '/sys/tenant/edit',
  get = '/sys/tenant/queryById',
  delete = '/sys/tenant/delete',
  deleteBatch = '/sys/tenant/deleteBatch',
  getCurrentUserTenants = '/sys/tenant/getCurrentUserTenant',
  queryTreeListForTenant = '/sys/tenant/queryTreeList',
  queryTenantPermission = '/sys/tenant/queryTenantPermission',
  saveTenantPermission = '/sys/tenant/saveTenantPermission',
  queryDataRule = '/sys/role/datarule',
  resetPassword = '/sys/tenant/resetPassword',
}

/**
 * 查询租户列表
 * @param params
 */
export const getTenantList = (params) => {
  return defHttp.get({ url: Api.list, params });
};

/**
 * 保存或者更新租户
 * @param params
 * @param isUpdate
 */
export const saveOrUpdateTenant = (params, isUpdate) => {
  let url = isUpdate ? Api.edit : Api.save;
  return defHttp.post({ url: url, params });
};

/**
 * 查询租户详情
 * @param params
 */
export const getTenantById = (params) => {
  return defHttp.get({ url: Api.get, params });
};

/**
 * 删除租户
 * @param params
 * @param handleSuccess
 */
export const deleteTenant = (params, handleSuccess) => {
  return defHttp.delete({ url: Api.delete, data: params }, { joinParamsToUrl: true }).then(() => {
    handleSuccess();
  });
};

/**
 * 批量删除租户
 * @param params
 * @param handleSuccess
 */
export const batchDeleteTenant = (params, handleSuccess) => {
  Modal.confirm({
    title: '确认删除',
    content: '是否删除选中数据',
    okText: '确认',
    cancelText: '取消',
    onOk: () => {
      return defHttp.delete({ url: Api.deleteBatch, data: params }, { joinParamsToUrl: true }).then(() => {
        handleSuccess();
      });
    },
  });
};

/**
 * 获取登录用户部门信息
 */
export const getUserTenants = (params?) => defHttp.get({ url: Api.getCurrentUserTenants, params });

/**
 * 根据租户查询树信息
 */
export const queryTreeListForTenant = () => defHttp.get({ url: Api.queryTreeListForTenant });
/**
 * 查询租户权限
 */
export const queryTenantPermission = (params) => defHttp.get({ url: Api.queryTenantPermission, params });
/**
 * 保存租户权限
 */
export const saveTenantPermission = (params) => defHttp.post({ url: Api.saveTenantPermission, params });
/**
 * 查询租户数据规则
 */
export const queryDataRule = (params) => defHttp.get({ url: `${Api.queryDataRule}/${params.functionId}/${params.roleId}` }, { isTransformResponse: false });
/**
 * 保存租户数据规则
 */
export const saveDataRule = (params) => defHttp.post({ url: Api.queryDataRule, params });
/**
 * 重置租户管理员账号密码
 */
export const resetPassword = (params) => defHttp.post({ url: Api.resetPassword, params });
