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