SFT/mock-server/db/seedAuth.js

159 lines
6.9 KiB
JavaScript

// 系统管理模块种子数据:机构 / 用户 / 角色 / 权限 / 用户-角色绑定 / 角色-权限绑定
// 权限树严格对应 src/router/componentRegistry.js 中 routePathComponentMap 的 16 个二级页面节点,
// 按钮权限仅种入前端实际使用 v-permission 指令的 26 个 code(阶段1-3),阶段4-7列表页未使用
// v-permission 指令,不编造按钮权限。
import { initCounter } from '../utils/id.js'
// ---------------- 机构(organization) ----------------
// 注意:swagger 中机构自身的 organizationId 是字符串业务编码,与主键 id(int64)是两个不同字段;
// 其他模块外键 organizationId 均为 int64,引用的是机构的 id 主键(非本表 organizationId 字符串)。
export const organizations = [
{ id: 1, organizationId: 'ORG0001', organizationName: '总部', parentId: null, isBuiltIn: true, remark: '系统根机构' },
{ id: 2, organizationId: 'ORG0002', organizationName: '华东分部', parentId: 1, isBuiltIn: false, remark: '' },
{ id: 3, organizationId: 'ORG0003', organizationName: '华南分部', parentId: 1, isBuiltIn: false, remark: '' }
]
initCounter('organization', 4)
// ---------------- 用户(user) ----------------
// password 字段仅供 mock 登录校验使用,不会出现在任何响应 Vo 中
export const users = [
{
id: 1,
username: 'admin',
password: 'Admin@123',
realName: '系统管理员',
phone: '13800000001',
organizationId: 1,
status: 'ACTIVE',
email: 'admin@fryl.com',
userType: 'ADMIN',
lastLoginTime: null,
forceChangePwd: false
}
]
initCounter('user', 2)
// ---------------- 角色(role) ----------------
export const roles = [{ id: 1, roleName: '系统管理员', organizationId: 1, isBuiltIn: true }]
initCounter('role', 2)
// user_id -> [roleId]
export const userRoles = [{ id: 1, userId: 1, roleId: 1 }]
initCounter('userRole', 2)
// ---------------- 权限(permission) ----------------
// level 0: 8个一级分组;level 1: 16个二级页面(与 componentRegistry.js 逐一对应);
// level 2: 26个按钮权限(仅阶段1-3实际使用 v-permission 的模块)
const groups = [
{ id: 1, permissionName: '系统管理', sortOrder: 1, icon: 'SettingOutlined' },
{ id: 2, permissionName: '基础配置', sortOrder: 2, icon: 'ToolOutlined' },
{ id: 3, permissionName: '客户管理', sortOrder: 3, icon: 'TeamOutlined' },
{ id: 4, permissionName: '钱包管理', sortOrder: 4, icon: 'WalletOutlined' },
{ id: 5, permissionName: '授信管理', sortOrder: 5, icon: 'CreditCardOutlined' },
{ id: 6, permissionName: '商户中心', sortOrder: 6, icon: 'ShopOutlined' },
{ id: 7, permissionName: '订单管理', sortOrder: 7, icon: 'FileTextOutlined' },
{ id: 8, permissionName: '支付管理', sortOrder: 8, icon: 'PayCircleOutlined' }
]
const pages = [
{ id: 9, parentId: 1, permissionName: '用户管理', routePath: '/system/user', sortOrder: 1 },
{ id: 10, parentId: 1, permissionName: '角色管理', routePath: '/system/role', sortOrder: 2 },
{ id: 11, parentId: 1, permissionName: '机构管理', routePath: '/system/org', sortOrder: 3 },
{ id: 12, parentId: 1, permissionName: '权限管理', routePath: '/system/permission', sortOrder: 4 },
{ id: 13, parentId: 2, permissionName: '核心企业管理', routePath: '/base-config/channel', sortOrder: 1 },
{ id: 14, parentId: 2, permissionName: '客户经理管理', routePath: '/base-config/manager', sortOrder: 2 },
{ id: 15, parentId: 3, permissionName: '个人客户管理', routePath: '/customer/personal', sortOrder: 1 },
{ id: 16, parentId: 3, permissionName: '企业客户管理', routePath: '/customer/enterprise', sortOrder: 2 },
{ id: 17, parentId: 4, permissionName: '账户列表', routePath: '/wallet/account', sortOrder: 1 },
{ id: 18, parentId: 4, permissionName: '企业开户申请', routePath: '/wallet/enterprise-open', sortOrder: 2 },
{ id: 19, parentId: 5, permissionName: '贷款申请', routePath: '/credit/loan-application', sortOrder: 1 },
{ id: 20, parentId: 6, permissionName: '商户管理', routePath: '/merchant/management', sortOrder: 1 },
{ id: 21, parentId: 6, permissionName: '发票管理', routePath: '/merchant/invoice', sortOrder: 2 },
{ id: 22, parentId: 7, permissionName: '汇总订单', routePath: '/order/summary', sortOrder: 1 },
{ id: 23, parentId: 7, permissionName: '原始订单', routePath: '/order/original', sortOrder: 2 },
{ id: 24, parentId: 8, permissionName: '订单支付', routePath: '/payment/order-payment', sortOrder: 1 }
]
const buttonDefs = [
['user:add', '新增用户', 9],
['user:delete', '删除用户', 9],
['user:edit', '编辑用户', 9],
['user:lock', '锁定用户', 9],
['user:unlock', '解锁用户', 9],
['user:changePwd', '修改密码', 9],
['user:resetPwd', '重置密码', 9],
['role:add', '新增角色', 10],
['role:delete', '删除角色', 10],
['role:edit', '编辑角色', 10],
['org:add', '新增机构', 11],
['org:delete', '删除机构', 11],
['org:edit', '编辑机构', 11],
['permission:add', '新增权限', 12],
['permission:edit', '编辑权限', 12],
['permission:delete', '删除权限', 12],
['channel:add', '新增核心企业', 13],
['channel:delete', '删除核心企业', 13],
['channel:edit', '编辑核心企业', 13],
['manager:add', '新增客户经理', 14],
['manager:delete', '删除客户经理', 14],
['manager:edit', '编辑客户经理', 14],
['customer-personal:add', '新增个人客户', 15],
['customer-personal:edit', '编辑个人客户', 15],
['customer-enterprise:add', '新增企业客户', 16],
['customer-enterprise:edit', '编辑企业客户', 16]
]
const buttons = buttonDefs.map(([permissionCode, permissionName, parentId], index) => ({
id: 25 + index,
parentId,
permissionName,
permissionCode,
sortOrder: index + 1
}))
export const permissions = [
...groups.map((g) => ({
id: g.id,
permissionType: 'PAGE',
permissionName: g.permissionName,
permissionCode: `menu:group:${g.id}`,
parentId: null,
level: 0,
sortOrder: g.sortOrder,
icon: g.icon,
routePath: '',
pageResourcePathList: [],
apiResourcePathList: []
})),
...pages.map((p) => ({
id: p.id,
permissionType: 'PAGE',
permissionName: p.permissionName,
permissionCode: `menu:page:${p.id}`,
parentId: p.parentId,
level: 1,
sortOrder: p.sortOrder,
icon: '',
routePath: p.routePath,
pageResourcePathList: [p.routePath],
apiResourcePathList: []
})),
...buttons.map((b) => ({
id: b.id,
permissionType: 'BUTTON',
permissionName: b.permissionName,
permissionCode: b.permissionCode,
parentId: b.parentId,
level: 2,
sortOrder: b.sortOrder,
icon: '',
routePath: '',
pageResourcePathList: [],
apiResourcePathList: []
}))
]
initCounter('permission', 51)
// 系统管理员角色绑定全部权限(id 1)
export const rolePermissions = permissions.map((p) => ({ roleId: 1, permissionId: p.id }))