系统管理
域名白名单
白名单域名正则
^(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
})
}
日志管理
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
})
}