62 lines
1.9 KiB
JavaScript
62 lines
1.9 KiB
JavaScript
/**
|
||
* 系统租户 sys_tenant:表单下拉(平台租户可看全部启用租户,否则仅本租户)
|
||
*/
|
||
const baseModel = require("../../middleware/baseModel");
|
||
const { getAdminTenantContext } = require("../service/tenant_scope");
|
||
|
||
module.exports = {
|
||
"GET /sys_tenant/form_options": async (ctx) => {
|
||
const sys_tenant = baseModel.sys_tenant;
|
||
if (!sys_tenant) {
|
||
return ctx.fail("sys_tenant 模型未加载");
|
||
}
|
||
const { tenantId: user_tenant_id, userId } = await getAdminTenantContext(ctx);
|
||
const uid = userId != null && userId !== "" ? Number(userId) : null;
|
||
const has_user = Number.isFinite(uid) && uid > 0;
|
||
if (!has_user) {
|
||
return ctx.fail("未登录或登录已失效");
|
||
}
|
||
const tid = user_tenant_id != null && user_tenant_id !== "" ? Number(user_tenant_id) : null;
|
||
const user_tenant_ok = Number.isFinite(tid) && tid > 0;
|
||
|
||
let is_platform = false;
|
||
if (user_tenant_ok) {
|
||
const row = await sys_tenant.findByPk(tid, {
|
||
attributes: ["id", "is_platform"],
|
||
raw: true,
|
||
});
|
||
if (row && Number(row.is_platform) === 1) {
|
||
is_platform = true;
|
||
}
|
||
}
|
||
|
||
let rows;
|
||
if (is_platform) {
|
||
rows = await sys_tenant.findAll({
|
||
where: { status: 1 },
|
||
order: [["id", "ASC"]],
|
||
limit: 500,
|
||
raw: true,
|
||
});
|
||
} else if (user_tenant_ok) {
|
||
const one = await sys_tenant.findByPk(tid, { raw: true });
|
||
rows = one ? [one] : [];
|
||
} else {
|
||
rows = [];
|
||
}
|
||
|
||
const list = (rows || []).map((r) => {
|
||
const id = Number(r.id);
|
||
const name = r.name != null ? String(r.name).trim() : "";
|
||
const plat = Number(r.is_platform) === 1;
|
||
return {
|
||
key: id,
|
||
value: plat && name ? `${name}(平台)` : name || String(id),
|
||
};
|
||
});
|
||
const locked = !is_platform;
|
||
const defaultTenantId = user_tenant_ok ? tid : null;
|
||
return ctx.success({ list, locked, defaultTenantId });
|
||
},
|
||
};
|