You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
vue-shop-admin-work/dao/ManagerDAO.js

199 lines
9.2 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

var path = require("path");
// 引入自定义的 DAO 模块,可能包含了对数据库操作的封装
daoModule = require("./DAO");
// 引入位于 modules/database 目录下的数据库模块,使用 path.join 拼接当前工作目录和相对路径
databaseModule = require(path.join(process.cwd(), "modules/database"));
/**
* 创建管理员
*
* @param {[type]} obj 管理员信息,包含创建管理员所需的信息,如用户名、密码等,具体结构取决于数据库表的设计
* @param {Function} cb 回调函数,用于处理创建操作的结果
* 当创建操作完成时调用此函数,若出现错误,第一个参数将包含错误信息,若成功,第一个参数为 null
*/
module.exports.create = function (obj, cb) {
// 调用 daoModule 的 create 方法,创建 ManagerModel 类型的对象,传入管理员信息和回调函数
daoModule.create("ManagerModel", obj, cb);
}
/**
* 获取管理员列表
*
* @param {[type]} conditions 查询条件,用于筛选管理员列表,具体内容根据业务需求而定
* @param {Function} cb 回调函数,用于处理查询结果
* 当查询操作完成时调用此函数,若出现错误,第一个参数将包含错误信息,若成功,第一个参数为 null第二个参数为查询到的管理员列表
*/
module.exports.list = function (conditions, cb) {
// 调用 daoModule 的 list 方法,查询 ManagerModel 类型的对象,传入查询条件和自定义的回调函数
daoModule.list("ManagerModel", conditions, function (err, models) {
if (err) return cb(err, null);
cb(null, models);
});
}
/**
* 通过查询条件获取管理员对象
*
* @param {[type]} conditions 条件,用于筛选单个管理员,具体内容根据业务需求而定
* @param {Function} cb 回调函数,用于处理查询结果
* 当查询操作完成时调用此函数,若出现错误,第一个参数将包含错误信息,若成功,第一个参数为 null第二个参数为查询到的管理员对象
*/
module.exports.findOne = function (conditions, cb) {
// 调用 daoModule 的 findOne 方法,根据条件查询 ManagerModel 类型的对象,传入条件和回调函数
daoModule.findOne("ManagerModel", conditions, cb);
}
/**
* 通过关键词查询用户
*
* @param {[type]} key 关键词,用于筛选用户,可能是用户名的一部分等
* @param {[type]} offset 分页偏移量,用于分页查询,从第几行开始查询
* @param {[type]} limit 分页限制,每页显示的数量
* @param {Function} cb 回调函数,用于处理查询结果
* 当查询操作完成时调用此函数,若出现错误,第一个参数将包含错误信息,若成功,第一个参数为 null第二个参数为查询到的管理员列表
*/
module.exports.findByKey = function (key, offset, limit, cb) {
// 从数据库模块中获取数据库对象
db = databaseModule.getDatabase();
// 定义基本的 SQL 查询语句,使用 LEFT JOIN 连接 sp_manager 和 sp_role 表
sql = "SELECT * FROM sp_manager as mgr LEFT JOIN sp_role as role ON mgr.role_id = role.role_id";
// 根据是否有关键词进行不同的 SQL 拼接和查询操作
if (key) {
// 拼接 LIKE 子句,进行模糊查询,并添加 LIMIT 子句进行分页
sql += " WHERE mg_name LIKE? LIMIT?,?";
database.driver.execQuery(
sql
, ["%" + key + "%", offset, limit], function (err, managers) {
if (err) return cb("查询执行出错");
cb(null, managers);
});
} else {
// 仅添加 LIMIT 子句进行分页
sql += " LIMIT?,? ";
database.driver.execQuery(sql, [offset, limit], function (err, managers) {
if (err) return cb("查询执行出错");
cb(null, managers);
});
}
}
/**
* 判断是否存在管理员
*
* @param {[type]} username 用户名,用于判断该用户名对应的管理员是否存在
* @param {Function} cb 回调函数,用于处理查询结果
* 当查询操作完成时调用此函数,若出现错误,第一个参数将包含错误信息,若成功,第一个参数为 null第二个参数为布尔值表示是否存在
*/
module.exports.exists = function (username, cb) {
// 从数据库模块中获取数据库对象
var db = databaseModule.getDatabase();
// 获取 ManagerModel 模型
var Model = db.models.ManagerModel;
// 调用 Model 的 exists 方法,传入用户名作为条件,查询是否存在
Model.exists({"mg_name": username}, function (err, isExists) {
if (err) return cb("查询失败");
cb(null, isExists);
});
}
/**
* 模糊查询用户数量
*
* @param {[type]} key 关键词,用于模糊查询用户数量,可能是用户名的一部分等
* @param {Function} cb 回调函数,用于处理查询结果
* 当查询操作完成时调用此函数,若出现错误,第一个参数将包含错误信息,若成功,第一个参数为 null第二个参数为查询到的用户数量
*/
module.exports.countByKey = function (key, cb) {
// 从数据库模块中获取数据库对象
db = databaseModule.getDatabase();
// 定义基本的 SQL 查询语句,统计 sp_manager 表中的记录数
sql = "SELECT count(*) as count FROM sp_manager";
// 根据是否有关键词进行不同的 SQL 拼接和查询操作
if (key) {
// 拼接 LIKE 子句,进行模糊查询
sql += " WHERE mg_name LIKE?";
database.driver.execQuery(
sql
, ["%" + key + "%"], function (err, result) {
if (err) return cb("查询执行出错");
// 从查询结果中获取数量
cb(null, result[0]["count"]);
});
} else {
database.driver.execQuery(sql, function (err, result) {
if (err) return cb("查询执行出错");
// 从查询结果中获取数量
cb(null, result[0]["count"]);
});
}
}
/**
* 通过 ID 获取管理员对象数据
*
* @param {[type]} id 管理员主键 ID用于唯一标识管理员
* @param {Function} cb 回调函数,用于处理查询结果
* 当查询操作完成时调用此函数,若出现错误,第一个参数将包含错误信息,若成功,第一个参数为 null第二个参数为查询到的管理员对象
*/
module.exports.show = function (id, cb) {
// 调用 daoModule 的 show 方法,根据 ID 查询 ManagerModel 类型的对象,传入 ID 和回调函数
daoModule.show("ManagerModel", id, cb);
}
/**
* 更新管理员信息
*
* @param {[type]} obj 管理员对象,包含更新后的管理员信息,具体结构取决于数据库表的设计
* @param {Function} cb 回调函数,用于处理更新操作的结果
* 当更新操作完成时调用此函数,若出现错误,第一个参数将包含错误信息,若成功,第一个参数为 null
*/
module.exports.update = function (obj, cb) {
// 调用 daoModule 的 update 方法,更新 ManagerModel 类型的对象,传入对象的 mg_id 作为主键和对象信息及回调函数
daoModule.update("ManagerModel", obj.mg_id, obj, cb);
}
/**
* 删除管理员对象数据
*
* @param {[type]} id 主键 ID用于唯一标识要删除的管理员
* @param {Function} cb 回调函数,用于处理删除操作的结果
* 当删除操作完成时调用此函数,若出现错误,第一个参数将包含错误信息,若成功,第一个参数为 null
*/
module.exports.destroy = function (id, cb) {
// 调用 daoModule 的 destroy 方法,根据 ID 删除 ManagerModel 类型的对象,传入 ID 和自定义的回调函数
daoModule.destroy("ManagerModel", id, function (err) {
if (err) return cb(err);
return cb(null);
});
}
/**
* 保存管理员信息
*
* @param {[type]} obj 管理员对象,包含管理员信息,具体结构取决于数据库表的设计
* @param {Function} cb 回调函数,用于处理保存操作的结果
* 当保存操作完成时调用此函数,根据管理员对象是否有 mg_id 决定是创建新的管理员还是更新现有管理员
*/
module.exports.save = function (obj, cb) {
// 调用 daoModule 的 show 方法,根据管理员对象的 mg_id 进行查询
daoModule.show(obj.mg_id, function (err, oldObj) {
if (err) {
// 若查询出错,可能是不存在该管理员,调用 create 方法创建新的管理员
daoModule.create("ManagerModel", obj, cb);
} else {
// 若查询成功,调用 update 方法更新现有管理员
daoModule.update("ManagerModel", obj.mg_id, obj, cb);
}
})
}
/**
* 获取管理员数量
*
* @param {Function} cb 回调函数,用于处理查询结果
* 当查询操作完成时调用此函数,若出现错误,第一个参数将包含错误信息,若成功,第一个参数为 null第二个参数为管理员数量
*/
module.exports.count = function (cb) {
// 调用 daoModule 进行查询,传入 ManagerModel 类型和回调函数,但这里可能存在错误,因为调用方式不完整,应该是调用 daoModule 的某个方法
daoModule("ManagerModel", cb);
}