项目中的层级模块到底如何做接口

项目中的层级模块到底如何做接口

层级模块

1、新建层级表

☞ 这里注意将Node之中的蛇形命名法转为=>驼峰命名法

☞ 搭建一个sql表格来存储公共信息

plain 复制代码
DROP TABLE IF EXISTS `sys_dept`;
CREATE TABLE `sys_dept` (
  `dept_id` bigint(0) NOT NULL AUTO_INCREMENT COMMENT '部门id',
  `parent_id` bigint(0) NULL DEFAULT 0 COMMENT '父部门id',
  `ancestors` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT '' COMMENT '祖级列表',
  `dept_name` varchar(30) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT '' COMMENT '部门名称',
  `order_num` int(0) NULL DEFAULT 0 COMMENT '显示顺序',
  `leader` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL COMMENT '负责人',
  `phone` varchar(11) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL COMMENT '联系电话',
  `email` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL COMMENT '邮箱',
  `status` char(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT '0' COMMENT '部门状态(0正常 1停用)',
  `del_flag` char(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)',
  `create_by` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT '' COMMENT '创建者',
  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT '' COMMENT '更新者',
  `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`dept_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 109 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_bin COMMENT = '部门表' ROW_FORMAT = Dynamic;

2、搭建引入文件

☞ 新建 server => api => deptRoutes.js

plain 复制代码
console.log('noticeRoutes.js--公告模块');

☞ app.js之中引入

plain 复制代码
//引入层级路由
const deptRoutes = require('./server/api/deptRoutes');

// 公告中心路由
app.use('/system/dept', deptRoutes);

3、查询接口

plain 复制代码
const express = require('express');
const router = express.Router();
const connectionPool = require('../db'); // 引入数据库连接池模块
const {addCondition,addDateRangeCondition,addPagination,convertKeysToSnakeCase,convertToCamelCase} = require('../methods.js'); // 引入封装方法
const {listApi,getApi,addApi,updateApi,delApi,changeStatusApi} = require('../apimethods.js'); // 引入封装方法

// 数据库表
const tableName = 'sys_dept';

// 查询列表
router.get('/',(req, res) => {
    let query = `SELECT * FROM ${tableName}`;
    let sqltotal = `SELECT COUNT(*) AS total FROM sys_dept`
    const { dept_name } = convertKeysToSnakeCase(req.query);
    listApi(query,sqltotal,req,res,{dept_name});
});

测试一下 欧克

4、新增接口

plain 复制代码
const express = require('express');
const router = express.Router();
const connectionPool = require('../db'); // 引入数据库连接池模块
const {addCondition,addDateRangeCondition,addPagination,convertKeysToSnakeCase,convertToCamelCase} = require('../methods.js'); // 引入封装方法
const {listApi,getApi,addApi,updateApi,delApi,changeStatusApi} = require('../apimethods.js'); // 引入封装方法

// 数据库表
const tableName = 'sys_dept';


// 新增 POST
router.post('/', (req, res) => {
    const insertSql = `INSERT INTO ${tableName} SET ?`;
    const { dept_name,email,order_num,leader,parent_id,phone,status} = convertKeysToSnakeCase(req.body);
    const postData = {dept_name,email,order_num,leader,parent_id,phone,status,update_time:new Date()};
    addApi(insertSql,res,postData);
});
 

测试一下 欧克

5、详情接口

plain 复制代码
// 获取详情 
router.get('/:dept_id', (req, res) => {
    // console.log(req.query,'req.query');
    const { dept_id } = req.params;
    const values = [dept_id];
    let querySql = 'SELECT * FROM sys_dept WHERE dept_id = ?';
    getApi(querySql,values,res);
});

测试一下 欧克

6、更新接口

plain 复制代码
// 更新
router.put('/', (req, res) => {
    const {dept_name,email,order_num,leader,parent_id,phone,status,dept_id} = convertKeysToSnakeCase(req.body);
    const updatevalues = {dept_name,email,order_num,leader,parent_id,phone,status,dept_id,update_time:new Date()};
    let updateSql=`UPDATE ${tableName} SET ? WHERE dept_id = ?`;
    updateApi(updateSql,[updatevalues, dept_id],res);
});

测试一下 欧克

7、删除接口

plain 复制代码
// 删除数据 DELETE请求处理程序  
router.delete('/:id', (req, res) => {
    // const {id} = req.body; // 从请求体中获取数据
    const id = req.params.id;
    const delsql = `DELETE FROM ${tableName} WHERE dept_id = ?`;
    delApi(delsql,[id],res);
});

测试一下,增删改查没问题,欧克!👌

到这里我们层级的正常功能就完成了,接下来就可以进行优化了

相关推荐
雨枪幻。39 分钟前
spring boot开发:一些基础知识
开发语言·前端·javascript
lecepin1 小时前
AI Coding 资讯 2025.8.27
前端·ai编程
TimelessHaze2 小时前
拆解字节面试题:async/await 到底是什么?底层实现 + 最佳实践全解析
前端·javascript·trae
执键行天涯2 小时前
从双重检查锁定的设计意图、锁的作用、第一次检查提升性能的原理三个角度,详细拆解单例模式的逻辑
java·前端·github
青青子衿越2 小时前
微信小程序web-view嵌套H5,小程序与H5通信
前端·微信小程序·小程序
OpenTiny社区2 小时前
TinyEngine 2.8版本正式发布:AI能力、区块管理、Docker部署一键强化,迈向智能时代!
前端·vue.js·低代码
回家路上绕了弯2 小时前
ClickHouse 深度解析:从核心特性到实战应用,解锁 OLAP 领域新势能
数据库·后端
qfZYG3 小时前
Trae 编辑器在 Python 环境缺少 Pylance,怎么解决
前端·vue.js·编辑器
bug爱好者3 小时前
Vue3 基于Element Plus 的el-input,封装一个数字输入框组件
前端·javascript
xiaok3 小时前
本地用VScode的Live Server监听5500访问页面,ubuntu上不需要在配置5500
后端