/*
 * @Author: wfl
 * @LastEditors: wfl
 * @description:
 * @updateInfo:
 * @Date: 2022-07-29 11:45:13
 * @LastEditTime: 2022-08-23 16:53:03
 */
import { defHttp } from '@/mainApp/utils/http/axios';
import { ErrorMessageMode } from '@t/axios';
import { LoginParams } from './model/userModel';

enum Api {
  Login = '/auth/sign?authenticationType=USERNAME_PASSWORD',
  GetAuthInfo = '/server/user/grant/current',
  Logout = '/auth/sign/out',
  GetUserInfo = '/server/user/current',
  GetPermCode = '/getPermCode',
  GetAllUser = '/server/user/all',
  GetSpotList = '/server/post/all',
  GetRoleList = '/server/role/all',
  GetDeptLsit = '/server/dept/all',
  addUsre = '/server/user',
  queryUser = '/server/user/page',
  updateUser = '/server/user',
  delUser = '/server/user',
  getUserDetail = '/server/user',
  passwordReset = '/server/user/password/reset',
  updatePassword = '/server/user/password/modify',
  lockUser = '/server/user/lock',
  unlockUser = '/server/user/unlock',
}

/**
 * @description: user login api
 */
export function loginApi(params: LoginParams, mode: ErrorMessageMode = 'modal') {
  return defHttp.post(
    {
      url: Api.Login,
      params,
      headers: {
        'X-PASSWORD-ENCRYPT': 'encrypt',
      },
    },
    {
      errorMessageMode: mode,
    },
  );
}

export function userAuthApi() {
  return defHttp.post({
    url: Api.GetAuthInfo,
  });
}

/**
 * @description: getUserInfo
 */
export function getUserInfo() {
  return defHttp.get({ url: Api.GetUserInfo }, { errorMessageMode: 'none' });
}

export function getPermCode() {
  return defHttp.get({ url: Api.GetPermCode });
}

export function doLogout() {
  return defHttp.post({
    url: Api.Logout,
    headers: {
      'menu-id': 'global',
      'X-PASSWORD-ENCRYPT': 'encrypt',
    },
  });
}

// 全量获取用户基本信息列表
export function getAllUser() {
  return defHttp.get({ url: Api.GetAllUser });
}

//  getUserspot
export function userSpotApi() {
  return defHttp.get({
    url: Api.GetSpotList,
  });
}
//  getUserrole
export function userRoleApi() {
  return defHttp.get({
    url: Api.GetRoleList,
  });
}
//  getUserDept
export function userDeptApi() {
  return defHttp.get({
    url: Api.GetDeptLsit,
  });
}
//addUser
export function addUsreApi(params) {
  return defHttp.post({
    url: Api.addUsre,
    params,
  });
}
//queryUser
export function queryUsreApi(params) {
  return defHttp.post({
    url: Api.queryUser,
    params,
  });
}
//updateUser
export function updateUsreApi(params) {
  return defHttp.put({
    url: Api.updateUser,
    params,
  });
}
//删除用户
export function delUsreApi(id) {
  return defHttp.delete({
    url: `${Api.delUser}?userId=${id}`,
  });
}
//重置密码
export function resetPasswordApi(id) {
  return defHttp.put({ url: `${Api.passwordReset}?userId=${id}` });
}
//获取用户详情
export function usreInfoApi(id) {
  return defHttp.get({ url: `${Api.getUserDetail}?userId=${id}` });
}
//根据用户名锁定用户
export function lockUserApi(name: string) {
  return defHttp.put({ url: `${Api.lockUser}?username=${name}` });
}
//根据用户名解锁用户
export function unlockUserApi(name: string) {
  return defHttp.put({ url: `${Api.unlockUser}?username=${name}` });
}

export function updatePassword(params) {
  return defHttp.put({
    url: `${Api.updatePassword}`,
    params,
    headers: {
      'X-PASSWORD-ENCRYPT': 'encrypt',
    },
  });
}
