init
This commit is contained in:
61
api/controller_admin/sys_tenant.js
Normal file
61
api/controller_admin/sys_tenant.js
Normal file
@@ -0,0 +1,61 @@
|
||||
/**
|
||||
* 系统租户 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 });
|
||||
},
|
||||
};
|
||||
Reference in New Issue
Block a user