//这段代码主要实现了一个简单的获取菜单列表的路由功能，先引入必要的模块，然后定义了一个基于 GET //请求获取菜单列表的路由，在路由处理函数中调用了菜单服务模块的方法来获取菜单数据，并根据操作结
//果向客户端返回合适的响应信息，最后导出路由器对象供主应用使用。
// 引入Express框架的核心模块，Express是Node.js中常用的Web应用框架，通过它可以创建服务器、定义路由以及处理HTTP请求等诸多功能，
// 这里引入它是后续创建路由等操作的基础
var express = require('express');

// 创建一个Express路由器实例，在Express框架里，路由器（Router）用于将一组相关的路由进行集中管理，方便实现模块化的路由配置，
// 使得代码结构更加清晰，便于对不同路径和请求方法的请求进行分别处理，比如将所有和菜单相关的路由放在这里统一管理
var router = express.Router();

// 引入Node.js的path模块，该模块提供了一系列用于处理文件路径相关操作的实用方法，例如拼接路径、解析路径、获取文件扩展名等，
// 在这里主要是用于拼接出准确的模块引入路径，确保能正确引入其他自定义模块
var path = require("path");

// 获取自定义的验证模块，通过path.join方法将当前工作目录（process.cwd()）和相对路径（"/modules/authorization"）拼接起来，
// 以此来准确指定验证模块所在的位置，然后使用require函数进行引入。这个验证模块通常承担着验证用户权限等相关操作的职责，
// 目的是保证后续执行的各种操作都是在合法且符合相应权限要求的情况下进行，避免出现越权等安全问题
var authorization = require(path.join(process.cwd(), "/modules/authorization"));

// 通过验证模块获取名为"MenuService"的菜单服务模块，同样借助path.join方法拼接当前工作目录和服务模块所在的相对路径（"/services/MenuService"），
// 从而准确引入该模块。这个菜单服务模块大概率封装了与菜单相关的各种业务逻辑，比如获取菜单数据（像从数据库中查询菜单信息等操作）、
// 对菜单进行增删改等操作的功能，方便在后续的路由处理中调用相应方法来实现具体的菜单相关业务需求
var menuService = require(path.join(process.cwd(), "/services/MenuService"));

// 定义一个处理GET请求的路由，路径为根路径 "/"，意味着当客户端向服务器发送GET请求到根路径时，将会进入这个路由对应的处理逻辑，
// 此路由的功能是用于获取菜单列表，通常会从数据库或者其他数据存储中查询并获取相应的菜单数据，然后返回给客户端展示
router.get("/",
    // 路由处理函数，在这个函数中调用了menuService的getLeftMenus方法来获取左侧菜单列表。这里传入的参数req.userInfo可能是一个包含了当前用户相关信息的对象，
    // 例如用户的角色、权限等信息，菜单服务模块（MenuService）内部的getLeftMenus方法会根据这些用户信息来生成对应的菜单列表，
    // 比如不同角色的用户看到的菜单选项可能是不一样的，通过这种方式实现菜单的权限控制和个性化展示
    function (req, res, next) {
        menuService.getLeftMenus(req.userInfo, function (err, result) {
            // 如果获取菜单列表的操作出现错误（err不为null），也就是在执行getLeftMenus方法过程中，比如数据库查询出错、权限验证不通过等情况发生时，
            // 则使用res.sendResult方法返回一个带有错误信息的响应，状态码为400，表示请求出现错误，具体的错误信息由err传递过来，这样客户端就能知晓请求失败的原因
            if (err) return res.sendResult(null, 400, err);
            // 如果获取菜单列表成功，也就是getLeftMenus方法顺利执行并获取到了相应的菜单列表数据，那么就使用res.sendResult方法返回成功的响应，
            // 将获取到的菜单列表数据（result）传递回去，状态码为200，表示请求成功，同时附带一个提示信息"获取菜单列表成功"，告知客户端操作已顺利完成
            res.sendResult(result, 200, "获取菜单列表成功");
        });
    }
);

// 将配置好的路由器对象导出，以便在主应用中可以引入并挂载到对应的路径上，只有挂载之后，这些定义好的路由才能正常工作，
// 进而响应客户端发送过来的相应请求，实现整个Web应用的菜单相关功能交互
module.exports = router;