基础框架:后端:koa+mongodb;前端:vue3+Element Plus
系统核心功能:权限管理、token验权、token续期、Rsa加密登录账户信息、功能即服务(FaaS)、接口权限控制、接口级别限流、动态表单等。
if (key.indexOf('Get') > -1) {
return 'get'
}
if (key.indexOf('Create') > -1) {
return 'post'
}
if (key.indexOf('Update') > -1) {
return 'put'
}
if (key.indexOf('Remove') > -1) {
return 'delete'
}
首先在模型管理内部添加模型
module.exports = async () => {
modelSchemas.formSchema = mongoose.model('form', mongoose.Schema({
id: Number,
"state": {
type: Number,
default: 1
},
"name": String,
"code": String,
"config": mongoose.Schema.Types.Mixed,
"createTime": {
type: Date,
default: Date.now()
},
updateTime: {
type: Date,
default: Date.now()
},
updateByUser:Number,
createTime: {
type: Date,
default: Date.now()
},
createByUser:Number,
remark: String
}, {
autoCreate: true
}), 'form')
}
在faas函数模块添加具体函数
module.exports = async () => {
await ApiAuth({
userInfo: ctx.state.userInfo,
code: ["faas:form:list"]
})
const {
name,
state = 1
} = ctx.request.query
const {
page,
skipIndex
} = Tools.pager(ctx.request.query)
const params = {}
if (name) params.name = new RegExp(`${name}`, 'ig')
params.state = parseInt(state);
const query = modelSchemas.formSchema.find(params)
const list = await query.sort({
id: -1
}).skip(skipIndex).limit(page.pageSize)
const total = await modelSchemas.formSchema.countDocuments(params);
return Tools.success({
data: {
page: {
...page,
total
},
list
}
})
}
核心逻辑:ApiAuth函数 如果列表中不存在权限字段 然后进行抛错 通过GlobalException中间件进行捕获处理
module.exports = async () => {
await ApiAuth({
userInfo: ctx.state.userInfo,
code: ["faas:form:list"]
})
const {
name,
state = 1
} = ctx.request.query
const {
page,
skipIndex
} = Tools.pager(ctx.request.query)
const params = {}
if (name) params.name = new RegExp(`${name}`, 'ig')
params.state = parseInt(state);
const query = modelSchemas.formSchema.find(params)
const list = await query.sort({
id: -1
}).skip(skipIndex).limit(page.pageSize)
const total = await modelSchemas.formSchema.countDocuments(params);
return Tools.success({
data: {
page: {
...page,
total
},
list
}
})
}
数据库基础数据 查看db文件夹
"Get|list" Get "Get:id"
Update "Update:id"
Create
Remove "Remove:ids"
| 代表拼接后端字符串
: 代表拼接后端动态路由
例如:
"Get|list:id"
path:list/:id
method:get
yarn dev : 单线程线程运行模式 yarn cluster : 多线程运行模式(默认本地电脑cpu线程数/2) (具体查看cluster.js)