// 引入Express框架的核心模块，通过它可以创建路由等功能
var express = require('express');
// 创建一个Express路由器实例，用于定义一组相关的路由，方便在应用中进行模块化的路由管理
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请求的路由，路径为根路径 "/"，用于获取菜单列表
router.get("/",
    // 路由处理函数，在这个函数中调用了menuService的getLeftMenus方法来获取左侧菜单列表
    // 传入的参数req.userInfo可能是包含了当前用户相关信息的对象，例如用户的角色、权限等信息，以便菜单服务模块根据用户信息来生成对应的菜单列表
    function (req, res, next) {
        menuService.getLeftMenus(req.userInfo, function (err, result) {
            // 如果获取菜单列表的操作出现错误（err不为null），则使用res.sendResult方法返回一个带有错误信息的响应，状态码为400，表示请求出现错误，错误信息具体由err传递过来
            if (err) return res.sendResult(null, 400, err);
            // 如果获取菜单列表成功，则使用res.sendResult方法返回成功的响应，将获取到的菜单列表数据（result）传递回去，状态码为200，表示请求成功，同时附带一个提示信息"获取菜单列表成功"
            res.sendResult(result, 200, "获取菜单列表成功");
        });
    }
);

// 将配置好的路由器对象导出，以便在主应用中可以引入并挂载到对应的路径上，从而使得这些定义的路由能够正常工作并响应客户端的请求
module.exports = router;