import request from '@/utils/request'
import { AxiosPromise } from 'axios'

// ==================== 系统配置管理 ====================

/**
 * 查询参数配置列表
 * @param query 查询参数
 * @returns Promise
 */
export function listConfig(query: any): AxiosPromise<any> {
  return request({
    url: '/system/config/list',
    method: 'get',
    params: query
  })
}

/**
 * 查询参数配置详细
 * @param configId 参数配置ID
 * @returns Promise
 */
export function getConfig(configId: string | number): AxiosPromise<any> {
  return request({
    url: '/system/config/' + configId,
    method: 'get'
  })
}

/**
 * 根据参数键名查询参数值
 * @param configKey 参数键名
 * @returns Promise
 */
export function getConfigKey(configKey: string): AxiosPromise<any> {
  return request({
    url: '/system/config/configKey/' + configKey,
    method: 'get'
  })
}

/**
 * 新增参数配置
 * @param data 参数配置信息
 * @returns Promise
 */
export function addConfig(data: any): AxiosPromise<any> {
  return request({
    url: '/system/config',
    method: 'post',
    data: data
  })
}

/**
 * 修改参数配置
 * @param data 参数配置信息
 * @returns Promise
 */
export function updateConfig(data: any): AxiosPromise<any> {
  return request({
    url: '/system/config',
    method: 'put',
    data: data
  })
}

/**
 * 根据参数键名修改参数配置
 * @param data 参数配置信息
 * @returns Promise
 */
export function updateConfigByKey(data: any): AxiosPromise<any> {
  return request({
    url: '/system/config/updateByKey',
    method: 'put',
    data: data
  })
}

/**
 * 删除参数配置
 * @param configIds 参数配置ID串
 * @returns Promise
 */
export function delConfig(configIds: string | Array<string | number>): AxiosPromise<any> {
  return request({
    url: '/system/config/' + configIds,
    method: 'delete'
  })
}

/**
 * 刷新参数缓存
 * @returns Promise
 */
export function refreshCache(): AxiosPromise<any> {
  return request({
    url: '/system/config/refreshCache',
    method: 'delete'
  })
}

/**
 * 导出参数配置
 * @param query 查询参数
 * @returns Promise
 */
export function exportConfig(query: any): AxiosPromise<any> {
  return request({
    url: '/system/config/export',
    method: 'post',
    data: query
  })
}

// ==================== 用户管理 ====================

/**
 * 查询用户列表
 * @param query 查询参数
 * @returns Promise
 */
export function listUser(query: any): AxiosPromise<any> {
  return request({
    url: '/system/user/list',
    method: 'get',
    params: query
  })
}

/**
 * 查询用户详细
 * @param userId 用户ID
 * @returns Promise
 */
export function getUser(userId: string | number): AxiosPromise<any> {
  return request({
    url: '/system/user/' + userId,
    method: 'get'
  })
}

/**
 * 新增用户
 * @param data 用户信息
 * @returns Promise
 */
export function addUser(data: any): AxiosPromise<any> {
  return request({
    url: '/system/user',
    method: 'post',
    data: data
  })
}

/**
 * 修改用户
 * @param data 用户信息
 * @returns Promise
 */
export function updateUser(data: any): AxiosPromise<any> {
  return request({
    url: '/system/user',
    method: 'put',
    data: data
  })
}

/**
 * 删除用户
 * @param userIds 用户ID串
 * @returns Promise
 */
export function delUser(userIds: string | Array<string | number>): AxiosPromise<any> {
  return request({
    url: '/system/user/' + userIds,
    method: 'delete'
  })
}

/**
 * 用户密码重置
 * @param data 用户信息
 * @returns Promise
 */
export function resetUserPwd(data: any): AxiosPromise<any> {
  return request({
    url: '/system/user/resetPwd',
    method: 'put',
    data: data
  })
}

/**
 * 用户状态修改
 * @param data 用户信息
 * @returns Promise
 */
export function changeUserStatus(data: any): AxiosPromise<any> {
  return request({
    url: '/system/user/changeStatus',
    method: 'put',
    data: data
  })
}

/**
 * 查询用户个人信息
 * @returns Promise
 */
export function getUserProfile(): AxiosPromise<any> {
  return request({
    url: '/system/user/getInfo',
    method: 'get'
  })
}

/**
 * 修改用户个人信息
 * @param data 用户信息
 * @returns Promise
 */
export function updateUserProfile(data: any): AxiosPromise<any> {
  return request({
    url: '/system/user/profile',
    method: 'put',
    data: data
  })
}

/**
 * 用户头像上传
 * @param data 头像文件
 * @returns Promise
 */
export function uploadAvatar(data: any): AxiosPromise<any> {
  return request({
    url: '/system/user/profile/avatar',
    method: 'post',
    data: data
  })
}

/**
 * 查询授权角色
 * @param userId 用户ID
 * @returns Promise
 */
export function getAuthRole(userId: string | number): AxiosPromise<any> {
  return request({
    url: '/system/user/authRole/' + userId,
    method: 'get'
  })
}

/**
 * 保存授权角色
 * @param data 用户和角色关联信息
 * @returns Promise
 */
export function updateAuthRole(data: any): AxiosPromise<any> {
  return request({
    url: '/system/user/authRole',
    method: 'put',
    params: data
  })
}

/**
 * 查询部门下拉树列表
 * @param query 查询参数
 * @returns Promise
 */
export function deptTree(query: any): AxiosPromise<any> {
  return request({
    url: '/system/user/deptTree',
    method: 'get',
    params: query
  })
}

/**
 * 查询部门用户列表
 * @param deptId 部门ID
 * @returns Promise
 */
export function listByDept(deptId: string | number): AxiosPromise<any> {
  return request({
    url: '/system/user/list/dept/' + deptId,
    method: 'get'
  })
}

/**
 * 导出用户
 * @param query 查询参数
 * @returns Promise
 */
export function exportUser(query: any): AxiosPromise<any> {
  return request({
    url: '/system/user/export',
    method: 'post',
    data: query
  })
}

/**
 * 导入用户数据
 * @param data 导入文件
 * @returns Promise
 */
export function importTemplate(): AxiosPromise<any> {
  return request({
    url: '/system/user/importTemplate',
    method: 'post'
  })
}

/**
 * 下载用户导入模板
 * @returns Promise
 */
export function importData(data: any): AxiosPromise<any> {
  return request({
    url: '/system/user/importData',
    method: 'post',
    data: data
  })
}

// ==================== 角色管理 ====================

/**
 * 查询角色列表
 * @param query 查询参数
 * @returns Promise
 */
export function listRole(query: any): AxiosPromise<any> {
  return request({
    url: '/system/role/list',
    method: 'get',
    params: query
  })
}

/**
 * 查询角色详细
 * @param roleId 角色ID
 * @returns Promise
 */
export function getRole(roleId: string | number): AxiosPromise<any> {
  return request({
    url: '/system/role/' + roleId,
    method: 'get'
  })
}

/**
 * 新增角色
 * @param data 角色信息
 * @returns Promise
 */
export function addRole(data: any): AxiosPromise<any> {
  return request({
    url: '/system/role',
    method: 'post',
    data: data
  })
}

/**
 * 修改角色
 * @param data 角色信息
 * @returns Promise
 */
export function updateRole(data: any): AxiosPromise<any> {
  return request({
    url: '/system/role',
    method: 'put',
    data: data
  })
}

/**
 * 角色权限修改
 * @param data 角色信息
 * @returns Promise
 */
export function dataScope(data: any): AxiosPromise<any> {
  return request({
    url: '/system/role/dataScope',
    method: 'put',
    data: data
  })
}

/**
 * 角色状态修改
 * @param data 角色信息
 * @returns Promise
 */
export function changeRoleStatus(data: any): AxiosPromise<any> {
  return request({
    url: '/system/role/changeStatus',
    method: 'put',
    data: data
  })
}

/**
 * 删除角色
 * @param roleIds 角色ID串
 * @returns Promise
 */
export function delRole(roleIds: string | Array<string | number>): AxiosPromise<any> {
  return request({
    url: '/system/role/' + roleIds,
    method: 'delete'
  })
}

/**
 * 查询角色已授权用户列表
 * @param query 查询参数
 * @returns Promise
 */
export function allocatedList(query: any): AxiosPromise<any> {
  return request({
    url: '/system/role/authUser/allocatedList',
    method: 'get',
    params: query
  })
}

/**
 * 查询角色未授权用户列表
 * @param query 查询参数
 * @returns Promise
 */
export function unallocatedList(query: any): AxiosPromise<any> {
  return request({
    url: '/system/role/authUser/unallocatedList',
    method: 'get',
    params: query
  })
}

/**
 * 取消用户授权角色
 * @param data 用户和角色关联信息
 * @returns Promise
 */
export function authUserCancel(data: any): AxiosPromise<any> {
  return request({
    url: '/system/role/authUser/cancel',
    method: 'put',
    data: data
  })
}

/**
 * 批量取消用户授权角色
 * @param data 用户和角色关联信息
 * @returns Promise
 */
export function authUserCancelAll(data: any): AxiosPromise<any> {
  return request({
    url: '/system/role/authUser/cancelAll',
    method: 'put',
    params: data
  })
}

/**
 * 批量选择用户授权角色
 * @param data 用户和角色关联信息
 * @returns Promise
 */
export function authUserSelectAll(data: any): AxiosPromise<any> {
  return request({
    url: '/system/role/authUser/selectAll',
    method: 'put',
    params: data
  })
}

/**
 * 获取对应角色部门树列表
 * @param roleId 角色ID
 * @returns Promise
 */
export function roleDeptTreeselect(roleId: string | number): AxiosPromise<any> {
  return request({
    url: '/system/role/deptTree/' + roleId,
    method: 'get'
  })
}

/**
 * 导出角色
 * @param query 查询参数
 * @returns Promise
 */
export function exportRole(query: any): AxiosPromise<any> {
  return request({
    url: '/system/role/export',
    method: 'post',
    data: query
  })
}

// ==================== 部门管理 ====================

/**
 * 查询部门列表
 * @param query 查询参数
 * @returns Promise
 */
export function listDept(query: any): AxiosPromise<any> {
  return request({
    url: '/system/dept/list',
    method: 'get',
    params: query
  })
}

/**
 * 查询部门列表（排除节点）
 * @param deptId 部门ID
 * @returns Promise
 */
export function listDeptExcludeChild(deptId: string | number): AxiosPromise<any> {
  return request({
    url: '/system/dept/list/exclude/' + deptId,
    method: 'get'
  })
}

/**
 * 查询部门详细
 * @param deptId 部门ID
 * @returns Promise
 */
export function getDept(deptId: string | number): AxiosPromise<any> {
  return request({
    url: '/system/dept/' + deptId,
    method: 'get'
  })
}

/**
 * 新增部门
 * @param data 部门信息
 * @returns Promise
 */
export function addDept(data: any): AxiosPromise<any> {
  return request({
    url: '/system/dept',
    method: 'post',
    data: data
  })
}

/**
 * 修改部门
 * @param data 部门信息
 * @returns Promise
 */
export function updateDept(data: any): AxiosPromise<any> {
  return request({
    url: '/system/dept',
    method: 'put',
    data: data
  })
}

/**
 * 删除部门
 * @param deptId 部门ID
 * @returns Promise
 */
export function delDept(deptId: string | number): AxiosPromise<any> {
  return request({
    url: '/system/dept/' + deptId,
    method: 'delete'
  })
}

// ==================== 菜单管理 ====================

/**
 * 查询菜单列表
 * @param query 查询参数
 * @returns Promise
 */
export function listMenu(query: any): AxiosPromise<any> {
  return request({
    url: '/system/menu/list',
    method: 'get',
    params: query
  })
}

/**
 * 查询菜单详细
 * @param menuId 菜单ID
 * @returns Promise
 */
export function getMenu(menuId: string | number): AxiosPromise<any> {
  return request({
    url: '/system/menu/' + menuId,
    method: 'get'
  })
}

/**
 * 查询菜单下拉树列表
 * @param query 查询参数
 * @returns Promise
 */
export function treeselect(query: any): AxiosPromise<any> {
  return request({
    url: '/system/menu/treeselect',
    method: 'get',
    params: query
  })
}

/**
 * 根据角色查询菜单下拉树列表
 * @param roleId 角色ID
 * @returns Promise
 */
export function roleMenuTreeselect(roleId: string | number): AxiosPromise<any> {
  return request({
    url: '/system/menu/roleMenuTreeselect/' + roleId,
    method: 'get'
  })
}

/**
 * 新增菜单
 * @param data 菜单信息
 * @returns Promise
 */
export function addMenu(data: any): AxiosPromise<any> {
  return request({
    url: '/system/menu',
    method: 'post',
    data: data
  })
}

/**
 * 修改菜单
 * @param data 菜单信息
 * @returns Promise
 */
export function updateMenu(data: any): AxiosPromise<any> {
  return request({
    url: '/system/menu',
    method: 'put',
    data: data
  })
}

/**
 * 删除菜单
 * @param menuId 菜单ID
 * @returns Promise
 */
export function delMenu(menuId: string | number): AxiosPromise<any> {
  return request({
    url: '/system/menu/' + menuId,
    method: 'delete'
  })
}

/**
 * 获取路由信息
 * @returns Promise
 */
export function getRouters(): AxiosPromise<any> {
  return request({
    url: '/system/menu/getRouters',
    method: 'get'
  })
}

// ==================== 岗位管理 ====================

/**
 * 查询岗位列表
 * @param query 查询参数
 * @returns Promise
 */
export function listPost(query: any): AxiosPromise<any> {
  return request({
    url: '/system/post/list',
    method: 'get',
    params: query
  })
}

/**
 * 查询岗位详细
 * @param postId 岗位ID
 * @returns Promise
 */
export function getPost(postId: string | number): AxiosPromise<any> {
  return request({
    url: '/system/post/' + postId,
    method: 'get'
  })
}

/**
 * 新增岗位
 * @param data 岗位信息
 * @returns Promise
 */
export function addPost(data: any): AxiosPromise<any> {
  return request({
    url: '/system/post',
    method: 'post',
    data: data
  })
}

/**
 * 修改岗位
 * @param data 岗位信息
 * @returns Promise
 */
export function updatePost(data: any): AxiosPromise<any> {
  return request({
    url: '/system/post',
    method: 'put',
    data: data
  })
}

/**
 * 删除岗位
 * @param postIds 岗位ID串
 * @returns Promise
 */
export function delPost(postIds: string | Array<string | number>): AxiosPromise<any> {
  return request({
    url: '/system/post/' + postIds,
    method: 'delete'
  })
}

/**
 * 导出岗位
 * @param query 查询参数
 * @returns Promise
 */
export function exportPost(query: any): AxiosPromise<any> {
  return request({
    url: '/system/post/export',
    method: 'post',
    data: query
  })
}

// ==================== 字典管理 ====================

/**
 * 查询字典类型列表
 * @param query 查询参数
 * @returns Promise
 */
export function listDictType(query: any): AxiosPromise<any> {
  return request({
    url: '/system/dict/type/list',
    method: 'get',
    params: query
  })
}

/**
 * 查询字典类型详细
 * @param dictId 字典类型ID
 * @returns Promise
 */
export function getDictType(dictId: string | number): AxiosPromise<any> {
  return request({
    url: '/system/dict/type/' + dictId,
    method: 'get'
  })
}

/**
 * 新增字典类型
 * @param data 字典类型信息
 * @returns Promise
 */
export function addDictType(data: any): AxiosPromise<any> {
  return request({
    url: '/system/dict/type',
    method: 'post',
    data: data
  })
}

/**
 * 修改字典类型
 * @param data 字典类型信息
 * @returns Promise
 */
export function updateDictType(data: any): AxiosPromise<any> {
  return request({
    url: '/system/dict/type',
    method: 'put',
    data: data
  })
}

/**
 * 删除字典类型
 * @param dictIds 字典类型ID串
 * @returns Promise
 */
export function delDictType(dictIds: string | Array<string | number>): AxiosPromise<any> {
  return request({
    url: '/system/dict/type/' + dictIds,
    method: 'delete'
  })
}

/**
 * 刷新字典缓存
 * @returns Promise
 */
export function refreshDictCache(): AxiosPromise<any> {
  return request({
    url: '/system/dict/type/refreshCache',
    method: 'delete'
  })
}

/**
 * 导出字典类型
 * @param query 查询参数
 * @returns Promise
 */
export function exportDictType(query: any): AxiosPromise<any> {
  return request({
    url: '/system/dict/type/export',
    method: 'post',
    data: query
  })
}

/**
 * 查询字典数据列表
 * @param query 查询参数
 * @returns Promise
 */
export function listDictData(query: any): AxiosPromise<any> {
  return request({
    url: '/system/dict/data/list',
    method: 'get',
    params: query
  })
}

/**
 * 查询字典数据详细
 * @param dictCode 字典数据ID
 * @returns Promise
 */
export function getDictData(dictCode: string | number): AxiosPromise<any> {
  return request({
    url: '/system/dict/data/' + dictCode,
    method: 'get'
  })
}

/**
 * 新增字典数据
 * @param data 字典数据信息
 * @returns Promise
 */
export function addDictData(data: any): AxiosPromise<any> {
  return request({
    url: '/system/dict/data',
    method: 'post',
    data: data
  })
}

/**
 * 修改字典数据
 * @param data 字典数据信息
 * @returns Promise
 */
export function updateDictData(data: any): AxiosPromise<any> {
  return request({
    url: '/system/dict/data',
    method: 'put',
    data: data
  })
}

/**
 * 删除字典数据
 * @param dictCodes 字典数据ID串
 * @returns Promise
 */
export function delDictData(dictCodes: string | Array<string | number>): AxiosPromise<any> {
  return request({
    url: '/system/dict/data/' + dictCodes,
    method: 'delete'
  })
}

/**
 * 导出字典数据
 * @param query 查询参数
 * @returns Promise
 */
export function exportDictData(query: any): AxiosPromise<any> {
  return request({
    url: '/system/dict/data/export',
    method: 'post',
    data: query
  })
}

// ==================== 通知公告 ====================

/**
 * 查询通知公告列表
 * @param query 查询参数
 * @returns Promise
 */
export function listNotice(query: any): AxiosPromise<any> {
  return request({
    url: '/system/notice/list',
    method: 'get',
    params: query
  })
}

/**
 * 查询通知公告详细
 * @param noticeId 通知公告ID
 * @returns Promise
 */
export function getNotice(noticeId: string | number): AxiosPromise<any> {
  return request({
    url: '/system/notice/' + noticeId,
    method: 'get'
  })
}

/**
 * 新增通知公告
 * @param data 通知公告信息
 * @returns Promise
 */
export function addNotice(data: any): AxiosPromise<any> {
  return request({
    url: '/system/notice',
    method: 'post',
    data: data
  })
}

/**
 * 修改通知公告
 * @param data 通知公告信息
 * @returns Promise
 */
export function updateNotice(data: any): AxiosPromise<any> {
  return request({
    url: '/system/notice',
    method: 'put',
    data: data
  })
}

/**
 * 删除通知公告
 * @param noticeIds 通知公告ID串
 * @returns Promise
 */
export function delNotice(noticeIds: string | Array<string | number>): AxiosPromise<any> {
  return request({
    url: '/system/notice/' + noticeIds,
    method: 'delete'
  })
}

// ==================== 租户管理 ====================

/**
 * 查询租户列表
 * @param query 查询参数
 * @returns Promise
 */
export function listTenant(query: any): AxiosPromise<any> {
  return request({
    url: '/system/tenant/list',
    method: 'get',
    params: query
  })
}

/**
 * 查询租户详细
 * @param tenantId 租户ID
 * @returns Promise
 */
export function getTenant(tenantId: string | number): AxiosPromise<any> {
  return request({
    url: '/system/tenant/' + tenantId,
    method: 'get'
  })
}

/**
 * 新增租户
 * @param data 租户信息
 * @returns Promise
 */
export function addTenant(data: any): AxiosPromise<any> {
  return request({
    url: '/system/tenant',
    method: 'post',
    data: data
  })
}

/**
 * 修改租户
 * @param data 租户信息
 * @returns Promise
 */
export function updateTenant(data: any): AxiosPromise<any> {
  return request({
    url: '/system/tenant',
    method: 'put',
    data: data
  })
}

/**
 * 删除租户
 * @param tenantIds 租户ID串
 * @returns Promise
 */
export function delTenant(tenantIds: string | Array<string | number>): AxiosPromise<any> {
  return request({
    url: '/system/tenant/' + tenantIds,
    method: 'delete'
  })
}

/**
 * 租户状态修改
 * @param data 租户信息
 * @returns Promise
 */
export function changeTenantStatus(data: any): AxiosPromise<any> {
  return request({
    url: '/system/tenant/changeStatus',
    method: 'put',
    data: data
  })
}

/**
 * 导出租户
 * @param query 查询参数
 * @returns Promise
 */
export function exportTenant(query: any): AxiosPromise<any> {
  return request({
    url: '/system/tenant/export',
    method: 'post',
    data: query
  })
}

// ==================== 租户套餐管理 ====================

/**
 * 查询租户套餐列表
 * @param query 查询参数
 * @returns Promise
 */
export function listTenantPackage(query: any): AxiosPromise<any> {
  return request({
    url: '/system/tenant/package/list',
    method: 'get',
    params: query
  })
}

/**
 * 查询租户套餐详细
 * @param packageId 租户套餐ID
 * @returns Promise
 */
export function getTenantPackage(packageId: string | number): AxiosPromise<any> {
  return request({
    url: '/system/tenant/package/' + packageId,
    method: 'get'
  })
}

/**
 * 新增租户套餐
 * @param data 租户套餐信息
 * @returns Promise
 */
export function addTenantPackage(data: any): AxiosPromise<any> {
  return request({
    url: '/system/tenant/package',
    method: 'post',
    data: data
  })
}

/**
 * 修改租户套餐
 * @param data 租户套餐信息
 * @returns Promise
 */
export function updateTenantPackage(data: any): AxiosPromise<any> {
  return request({
    url: '/system/tenant/package',
    method: 'put',
    data: data
  })
}

/**
 * 删除租户套餐
 * @param packageIds 租户套餐ID串
 * @returns Promise
 */
export function delTenantPackage(packageIds: string | Array<string | number>): AxiosPromise<any> {
  return request({
    url: '/system/tenant/package/' + packageIds,
    method: 'delete'
  })
}

/**
 * 租户套餐状态修改
 * @param data 租户套餐信息
 * @returns Promise
 */
export function changeTenantPackageStatus(data: any): AxiosPromise<any> {
  return request({
    url: '/system/tenant/package/changeStatus',
    method: 'put',
    data: data
  })
}

/**
 * 导出租户套餐
 * @param query 查询参数
 * @returns Promise
 */
export function exportTenantPackage(query: any): AxiosPromise<any> {
  return request({
    url: '/system/tenant/package/export',
    method: 'post',
    data: query
  })
}

// ==================== 文件管理 ====================

/**
 * 查询OSS对象列表
 * @param query 查询参数
 * @returns Promise
 */
export function listOss(query: any): AxiosPromise<any> {
  return request({
    url: '/system/oss/list',
    method: 'get',
    params: query
  })
}

/**
 * 查询OSS对象基于id串
 * @param ossIds OSS对象ID串
 * @returns Promise
 */
export function listOssByIds(ossIds: string | Array<string | number>): AxiosPromise<any> {
  return request({
    url: '/system/oss/listByIds/' + ossIds,
    method: 'get'
  })
}

/**
 * 通过id串删除OSS对象
 * @param ossIds OSS对象ID串
 * @returns Promise
 */
export function delOss(ossIds: string | Array<string | number>): AxiosPromise<any> {
  return request({
    url: '/system/oss/' + ossIds,
    method: 'delete'
  })
}

/**
 * 上传OSS对象
 * @param data 文件信息
 * @returns Promise
 */
export function uploadOss(data: any): AxiosPromise<any> {
  return request({
    url: '/system/oss/upload',
    method: 'post',
    data: data
  })
}

/**
 * 下载OSS对象
 * @param ossId OSS对象ID
 * @returns Promise
 */
export function downloadOss(ossId: string | number): AxiosPromise<any> {
  return request({
    url: '/system/oss/download/' + ossId,
    method: 'get'
  })
}

/**
 * 查询OSS配置列表
 * @param query 查询参数
 * @returns Promise
 */
export function listOssConfig(query: any): AxiosPromise<any> {
  return request({
    url: '/system/oss/config/list',
    method: 'get',
    params: query
  })
}

/**
 * 查询OSS配置详细
 * @param ossConfigId OSS配置ID
 * @returns Promise
 */
export function getOssConfig(ossConfigId: string | number): AxiosPromise<any> {
  return request({
    url: '/system/oss/config/' + ossConfigId,
    method: 'get'
  })
}

/**
 * 新增OSS配置
 * @param data OSS配置信息
 * @returns Promise
 */
export function addOssConfig(data: any): AxiosPromise<any> {
  return request({
    url: '/system/oss/config',
    method: 'post',
    data: data
  })
}

/**
 * 修改OSS配置
 * @param data OSS配置信息
 * @returns Promise
 */
export function updateOssConfig(data: any): AxiosPromise<any> {
  return request({
    url: '/system/oss/config',
    method: 'put',
    data: data
  })
}

/**
 * 删除OSS配置
 * @param ossConfigIds OSS配置ID串
 * @returns Promise
 */
export function delOssConfig(ossConfigIds: string | Array<string | number>): AxiosPromise<any> {
  return request({
    url: '/system/oss/config/' + ossConfigIds,
    method: 'delete'
  })
}

/**
 * OSS配置状态修改
 * @param data OSS配置信息
 * @returns Promise
 */
export function changeOssConfigStatus(data: any): AxiosPromise<any> {
  return request({
    url: '/system/oss/config/changeStatus',
    method: 'put',
    data: data
  })
}

/**
 * 刷新OSS配置缓存
 * @returns Promise
 */
export function refreshOssConfigCache(): AxiosPromise<any> {
  return request({
    url: '/system/oss/config/refreshCache',
    method: 'delete'
  })
}

// ==================== 客户端管理 ====================

/**
 * 查询客户端列表
 * @param query 查询参数
 * @returns Promise
 */
export function listClient(query: any): AxiosPromise<any> {
  return request({
    url: '/system/client/list',
    method: 'get',
    params: query
  })
}

/**
 * 查询客户端详细
 * @param clientId 客户端ID
 * @returns Promise
 */
export function getClient(clientId: string | number): AxiosPromise<any> {
  return request({
    url: '/system/client/' + clientId,
    method: 'get'
  })
}

/**
 * 新增客户端
 * @param data 客户端信息
 * @returns Promise
 */
export function addClient(data: any): AxiosPromise<any> {
  return request({
    url: '/system/client',
    method: 'post',
    data: data
  })
}

/**
 * 修改客户端
 * @param data 客户端信息
 * @returns Promise
 */
export function updateClient(data: any): AxiosPromise<any> {
  return request({
    url: '/system/client',
    method: 'put',
    data: data
  })
}

/**
 * 删除客户端
 * @param clientIds 客户端ID串
 * @returns Promise
 */
export function delClient(clientIds: string | Array<string | number>): AxiosPromise<any> {
  return request({
    url: '/system/client/' + clientIds,
    method: 'delete'
  })
}

/**
 * 客户端状态修改
 * @param data 客户端信息
 * @returns Promise
 */
export function changeClientStatus(data: any): AxiosPromise<any> {
  return request({
    url: '/system/client/changeStatus',
    method: 'put',
    data: data
  })
}

/**
 * 导出客户端
 * @param query 查询参数
 * @returns Promise
 */
export function exportClient(query: any): AxiosPromise<any> {
  return request({
    url: '/system/client/export',
    method: 'post',
    data: query
  })
}

// ==================== 第三方登录 ====================

/**
 * 查询第三方登录列表
 * @param query 查询参数
 * @returns Promise
 */
export function listSocial(query: any): AxiosPromise<any> {
  return request({
    url: '/system/social/list',
    method: 'get',
    params: query
  })
}

/**
 * 查询第三方登录详细
 * @param socialId 第三方登录ID
 * @returns Promise
 */
export function getSocial(socialId: string | number): AxiosPromise<any> {
  return request({
    url: '/system/social/' + socialId,
    method: 'get'
  })
}

/**
 * 新增第三方登录
 * @param data 第三方登录信息
 * @returns Promise
 */
export function addSocial(data: any): AxiosPromise<any> {
  return request({
    url: '/system/social',
    method: 'post',
    data: data
  })
}

/**
 * 修改第三方登录
 * @param data 第三方登录信息
 * @returns Promise
 */
export function updateSocial(data: any): AxiosPromise<any> {
  return request({
    url: '/system/social',
    method: 'put',
    data: data
  })
}

/**
 * 删除第三方登录
 * @param socialIds 第三方登录ID串
 * @returns Promise
 */
export function delSocial(socialIds: string | Array<string | number>): AxiosPromise<any> {
  return request({
    url: '/system/social/' + socialIds,
    method: 'delete'
  })
}

/**
 * 第三方登录状态修改
 * @param data 第三方登录信息
 * @returns Promise
 */
export function changeSocialStatus(data: any): AxiosPromise<any> {
  return request({
    url: '/system/social/changeStatus',
    method: 'put',
    data: data
  })
}

/**
 * 导出第三方登录
 * @param query 查询参数
 * @returns Promise
 */
export function exportSocial(query: any): AxiosPromise<any> {
  return request({
    url: '/system/social/export',
    method: 'post',
    data: query
  })
} 