Skip to content

系统管理

域名白名单

白名单域名正则

^(https?)://(([a-z0-9]+([\\-\\.]{1}[a-z0-9]+)*\\.[a-z]{2,6})|((25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)(\\.(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)){3}))(:\\d{1,5})?$

ts
/**
 * 获取白名单列表
 * @param params
 * @param params.current 当前页
 * @param params.size 每页条数
 */
function crossDomainList(params: { current: string; size: string }) {
  return request({
    url: '/admin/tx/crossdomain/conf/list',
    method: 'get',
    params
  })
}
/**
 * 新建白名单
 * @param data
 * @param data.domain 域名
 * @param data.remarks 备注
 *  */
function addCrossDomain(data: { domain?: string; remarks?: string }) {
  return request({
    url: '/admin/tx/crossdomain/conf',
    method: 'post',
    data
  })
}
/**
 * 编辑白名单
 * @param data
 * @param data.id 白名单id
 * @param data.domain 域名
 * @param data.remarks 备注
 *  */
function updateCrossDomain(data: {
  id: string
  domain?: string
  remarks?: string
}) {
  return request({
    url: '/admin/tx/crossdomain/conf',
    method: 'put',
    data
  })
}
/**
 * 删除白名单
 * @param id 白名单id
 */
function deleteCrossDomain(id: string) {
  return request({
    url: '/admin/tx/crossdomain/conf/delete',
    method: 'get',
    params: {
      id
    }
  })
}

项目默认角色设置

项目角色接口加上 categorize:2;参考:角色管理

菜单管理

菜单列表

菜单列表

新增/更新菜单(按钮权限)

ts
type MenuType = '0' | '1' // 0-菜单 1-按钮
type SwitchType = '0' | '1' // 0-否 1-是

interface BaseMenuForm {
  /** 菜单ID */
  menuId: string

  /** 菜单名称(必填) */
  name: string

  /** 上级菜单ID(必填),更目录为-1 */
  parentId: string

  /** 排序(必填) */
  sortOrder: number

  /** 菜单类型(必填): '0'-菜单, '1'-按钮 */
  menuType: MenuType
}

interface MenuTypeForm extends BaseMenuForm {
  menuType: '0'
  /** 路由路径(菜单必填) */
  path: string

  /** 图标(菜单必填) */
  icon: string

  /** 组件路径(当param为1时必填) */
  component?: string

  /** 是否支持路径参数 */
  param: SwitchType

  /** 是否缓存 */
  keepAlive: SwitchType

  /** 是否显示 */
  visible: SwitchType

  /** 外链时是否内嵌(path以http开头时生效) */
  embedded: SwitchType

  /** 按钮类型下无需此字段 */
  permission?: never
}

interface ButtonTypeForm extends BaseMenuForm {
  menuType: '1'
  /** 权限标识(按钮必填) */
  permission: string

  /** 菜单类型下的字段在按钮类型中无需传递 */
  path?: never
  icon?: never
  component?: never
  param?: never
  keepAlive?: never
  visible?: never
  embedded?: never
}

type MenuFormType = MenuTypeForm | ButtonTypeForm
/**新建菜单 */
function addMenu(data: MenuFormType) {
  return request({
    url: '/admin/menu',
    method: 'post',
    data: data
  })
}
/**更新菜单 */
function updateMenu(data: MenuFormType) {
  return request({
    url: '/admin/menu',
    method: 'put',
    data: data
  })
}
/**删除菜单 */
function deleteMenu(id: string) => {
	return request({
		url: '/admin/menu/' + id,
		method: 'delete',
	});
};

权限验证

用户权限

获取用户信息

ts
//用户所有权限-来自用户信息
const auth = CONSTANTS.USER_INFO.authBtnList

项目用户权限

ts
const { data } = await getRoleByProjectIdAndUserId({ projectId, userId })
//项目权限数组
const authBtnList = data?.sysRoleMenus.reduce((acc: any, v: any) => {
  if (v.permission && acc.indexOf(v.permission) === -1) {
    acc.push(v.permission)
  }
  return acc
}, [])
function getRoleByProjectIdAndUserId(params: {
  projectId: string
  userId: string
}) {
  return request({
    url: '/admin/tx/project/user/getRoleByProjectIdAndUserId',
    method: 'get',
    params
  })
}

许可授权

ts
function getLicenseInfo() {
  return request({
    url: '/admin/tx/license/info',
    method: 'get'
  })
}
/**
 * 许可信息返回值
 * 永久许可:isValid && !isTrailProduct
 */
type Res = {
  datetime: string //服务器当前时间
  expire: string //许可过期时间
  isValid: boolean //是否有效
  isTrailProduct: boolean
}

上传许可

ts
const formData = new FormData()
formData.append('license', file)
fetch('/admin/tx/license/upload', {
  method: 'post',
  body: formData
})

站点设置

前端显示站点信息

ts
type siteInfo = {
  fullName: string
  simpleName: string
  subtitle: string
  faviconPath: string
  logo: string
  icp: string
  organizer: string
}
const {
  data
}: {
  data: siteInfo
} = await getSiteSettings()
export function getSiteSettings() {
  return request({
    url: '/admin/tenant/info/1',
    method: 'get'
  })
}
export function uploadSysFile(FormData: any) {
  return request({
    url: '/admin/sys-file/upload',
    method: 'post',
    headers: {
      'Content-Type': 'multipart/form-data'
    },
    data: FormData
  })
}
export function updateSiteSettings(info: any) {
  return request({
    url: '/admin/tenant',
    method: 'put',
    data: info
  })
}

日志管理

getDicts;

logType:getDicts('log_type')

ts
/** 系统日志类型定义 */
export interface LogType {
  id: string // 日志ID
  logType: string // 日志类型
  title: string // 日志标题
  createTime: string // 创建时间
  createBy: string // 创建者ID
  createName: string // 创建者名称
  requestUri: string // 请求URI
  remoteAddr: string // 远程地址
  method: string // 请求方法
  serviceId: string // 服务ID
  time: number // 请求耗时(ms)
  userAgent: string // 用户代理
  params?: string // 请求参数
  exception?: string // 异常信息
  content?: string // 记录内容
}
function getLog(params: {
  logType: 0 | 9 //0正常日志 9异常日志
  createBy: string //操作人
  remoteAddr?: string //请求ip地址
}) {
  return request({
    url: '/admin/log/page',
    method: 'get',
    params
  })
}

密钥管理

密钥列表

ts
function getSecretKey(query: {
  current: number
  size: number
  type?: string //getDicts('client_type')
  name?: string
}) {
  return request({
    url: '/admin/client/page',
    method: 'get',
    params: query
  })
}
type resData = {
  type: string // 类型
  name: string // 应用名称
  describe: string // 描述
  clientId: string // clientId
  clientSecret: string // clientSecret
  createBy: string // 创建者
  createTime: string // 创建时间
  isSystem: number // 系统标识(1表示系统内置)
}

新增/更新/删除密钥

ts
type secretAddType = {
  type: string // 类型,从getDicts('client_type')获取
  name: string // 应用名称
  describe?: string // 描述
  scope: 'server'
  authorizedGrantTypes: ['password']
  accessTokenValidity: 43200
  refreshTokenValidity: 2592001
  autoapprove: 'true'
  onlineQuantity: '1'
  captchaFlag: '0'
  encFlag: '0'
}
/**新增密钥 */
function addSecretKey(obj: secretAddType) {
  return request({
    url: '/admin/client',
    method: 'post',
    data: obj
  })
}
/**更新密钥 */
function updateSecretKey(obj: secretAddType & { id: string }) {
  return request({
    url: '/admin/client',
    method: 'put',
    data: obj
  })
}
/**删除密钥 */
function delSecretKey(ids: string[]) {
  return request({
    url: '/admin/client',
    method: 'delete',
    data: ids
  })
}

参数管理

参数列表

ts
function getParams(query: {
  systemFlag: 0
  publicName?: string //名称
  current: number
  size: number
}) {
  return request({
    url: '/admin/param/page',
    method: 'get',
    params: query
  })
}
type resData = {
  publicName: string // 参数名称
  publicKey: string // 参数键名
  publicValue: string // 参数值
  status: string // 状态_getDicts('status_type')
  createTime: string // 创建时间
  systemFlag: string //getDicts('dict_type')
}

更新参数

ts
function updateParams(obj: {
  /** 参数ID */
  publicId: string
  /** 参数名称 */
  publicName: string
  /** 参数键名 */
  publicKey: string
  /** 参数值 */
  publicValue: string
  /** 状态(0:正常 1:停用) */
  status: '0' | '1'
  /** 校验码 */
  validateCode: string | null
  /** 参数类型 */
  publicType: string //getDicts('param_type')
  systemFlag: '0'
}) {
  return request({
    url: '/admin/param',
    method: 'put',
    data: obj
  })
}

令牌管理

令牌列表

ts
function getTokenList(query: {
  username?: string //用户名
  current: number
  size: number
}) {
  return request({
    url: '/admin/token/page',
    method: 'post',
    data: query
  })
}
type resData = {
  username: string //用户名
  clientId: string //客户端
  accessToken: string //访问令牌
  expiresAt: string //过期时间
}

删除(下线)令牌

ts
/**
 * 删除令牌
 * @param accessTokens 令牌数组
 */
function delToken(accessTokens: string[]) {
  return request({
    url: '/admin/token/delete',
    method: 'delete',
    data: accessTokens
  })
}

Released under the MIT License.