1、创建model文件夹,并且在文件夹内创建resModel.js
class BaseModel {
constructor(msg, data) {
if (data) {
this.data = data
}
if (msg) {
this.msg = msg
}
}
}
// 成功
class SuccessModel extends BaseModel {
constructor(msg, data) {
super(msg, data)
this.code = 200
//console.log(this) // 打印日志
}
}
// 错误
class ErrorModel extends BaseModel {
constructor(msg, data) {
super(msg, data)
this.code = 400
//console.log(this) // 打印日志
}
}
// token 认证失败
class LoginFailure extends BaseModel {
constructor(msg, data) {
super(msg, data)
this.code = 401
//console.log(this) // 打印日志
}
}
// 自定义code,方便特殊情况下返回特殊code,不能和上面已建的code重复
class CustomModel extends BaseModel {
constructor(code, msg, data) {
super(msg, data)
this.code = code
console.log(this) // 打印日志
}
}
module.exports = {
SuccessModel,
ErrorModel,
LoginFailure,
CustomModel
}
2、创建utils文件夹,在里面创建common.js
const UT = {
jsonToTree(data,key = 'pid') {
// 初始化结果数组,并判断输入数据的格式
const result = []
if (!Array.isArray(data)) {
return result
}
// 使用map,将当前对象的id与当前对象对应存储起来
const map = {}
data.forEach(item => {
map[item.id] = item
item.children = []
})
data.forEach(item => {
const parent = map[item[key]]
if (parent) {
(parent.children || (parent.children = [])).push(item)
} else {
result.push(item)
}
})
return result
},
arrayToObject(arr) {
const obj = {};
arr.forEach((item) => {
obj[item.ename] = item.value;
});
return obj;
},
findTopLevelIds(arr,id) {
const topLevelIds = [];
const parentIds = new Set();
for (const item of arr) {
if (!parentIds.has(item.id)) {
topLevelIds.push(item.id);
}
if (item.pid) {
parentIds.add(item.pid);
}
}
return topLevelIds.filter(item=>item == id);
},
position(arr, id){
let topLevelIds = [];
const node = arr.filter(item=>item.id == id)
topLevelIds.push(node[0])
const parent = arr.filter(item=>item.id == node[0].pid)
// console.log('arr',node,parent)
topLevelIds.push(parent[0])
if(parent[0].pid != 0){
getPid(arr,parent[0].pid)
}
function getPid(NewArr,NewId){
const Newparent = NewArr.filter(item=>item.id == NewId)
if(Newparent[0].pid != 0){
topLevelIds.push(Newparent[0])
return getPid(NewArr,Newparent[0].pid)
}
const res = NewArr.filter(item=>item.id == NewId)
topLevelIds.push(res[0])
return res
}
return topLevelIds.reverse()
},
groupBy(array, key) {
return array.reduce((result, currentItem) => {
// 使用 key 函数获取分组的键
const groupKey = key(currentItem);
// 确保 result 对象中有对应键的数组
if (!result[groupKey]) {
result[groupKey] = [];
}
// 将当前项添加到对应分组的数组中
result[groupKey].push(currentItem);
return result;
}, {});
}
}
module.exports = UT
3、创建路由文件夹routes
在路由文件夹下面创建
admin.js(对应后台路由)
index.js(对应前端网站路由)
common.js(通用方法如上传文件等)
const router = require('koa-router')()
// 这里后面再更新
module.exports = router