168 lines
3.9 KiB
JavaScript
168 lines
3.9 KiB
JavaScript
|
|
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 };
|
||
|
|
}
|
||
|
|
};
|