168 lines
3.9 KiB
JavaScript
Raw Normal View History

2026-07-27 11:28:33 +08:00
const common = require("../../common.js"); // 引入根目录common.js
let db = null;
exports.main = async (content, mongodb) => {
db = mongodb;
switch (content.type) {
case "getRoles":
return await exports.getRoles(content);
case "getRolesByRoleId":
return await exports.getRolesByRoleId(content);
case "addRole":
return await exports.addRole(content);
case "updateRole":
return await exports.updateRole(content);
case "deleteRole":
return await exports.deleteRole(content);
case "updateRolesCorpId":
return await exports.updateRolesCorpId(content);
case "checkRoleExistByIds":
return await exports.checkRoleExistByIds(content);
}
};
// 获取角色列表
exports.getRoles = async (context) => {
try {
const { corpId } = context;
const query = { corpId };
const list = [query];
if (context.showOptions) { // 如果需要显示选项
list.push({ projection: { _id: 1, roleName: 1 } });
}
const res = await db.collection("sys-role").find(...list).toArray();
return {
success: true,
message: "获取成功",
data: res,
};
} catch (error) {
return {
success: false,
message: error.message,
};
}
};
// 根据角色ID获取角色列表
exports.getRolesByRoleId = async (context) => {
try {
const { corpId, roleIds } = context;
const res = await db
.collection("sys-role")
.find({ corpId, _id: { $in: roleIds } })
.toArray();
return {
success: true,
message: "获取成功",
data: res,
};
} catch (error) {
return {
success: false,
message: error.message,
};
}
};
// 新增角色
exports.addRole = async (context) => {
try {
const { params } = context;
params._id = common.generateRandomString(24); // 生成随机字符串作为_id
const res = await db.collection("sys-role").insertOne(params);
return {
success: true,
message: "新增成功",
data: res,
};
} catch (error) {
return {
success: false,
message: error.message,
};
}
};
// 更新角色
exports.updateRole = async (context) => {
try {
const { id, params } = context;
const res = await db
.collection("sys-role")
.updateOne({ _id: id }, { $set: params });
return {
success: true,
message: "更新成功",
data: res,
};
} catch (error) {
return {
success: false,
message: error.message,
};
}
};
// 删除角色
exports.deleteRole = async (context) => {
try {
const { id } = context;
const res = await db.collection("sys-role").deleteOne({ _id: id });
return {
success: true,
message: "删除成功",
data: res,
};
} catch (error) {
return {
success: false,
message: error.message,
};
}
};
exports.updateRolesCorpId = async ({ corpId, openCorpId }) => {
try {
let role = await db
.collection("sys-role")
.findOne({ corpId, roleId: "admin" });
if (role) {
await db
.collection("sys-role")
.updateOne({ _id: role._id }, { $set: { corpId: openCorpId } });
return {
success: true,
message: "更新成功",
};
} else {
return {
success: false,
message: "未找到管理员角色",
};
}
} catch (error) {
return {
success: false,
message: error.message,
};
}
};
// 检查角色是否存在
exports.checkRoleExistByIds = async (ctx) => {
const { roleId, ids, corpId } = ctx;
if (!roleId || !Array.isArray(ids) || ids.length === 0 || !corpId)
return { success: false, message: "参数错误" };
try {
const count = await db
.collection("sys-role")
.find({ corpId, roleId, _id: { $in: ids } })
.count();
return { success: true, message: "查询成功", exist: count > 0, count };
} catch (error) {
return { success: false, message: error.message };
}
};