koacms(三)统一封装返回结果、创建工具文件夹,路由文件夹

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值