迁移合作订单完整能力,并统一 AppRoleCode 角色权限与首页菜单展示。

新增 CooperationOrder 模块(双 Tab 列表、获客员绑定、主 Tab 扫码)、订单来源/带客单绑定及配套 API 测试;同步引入 roleCode 权限匹配与相关单元测试。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-29 13:33:00 +08:00
parent d310d26293
commit 1970572edd
66 changed files with 4247 additions and 201 deletions

View File

@ -49,7 +49,7 @@ struct HomeMoreFunctionsView: View {
.task {
rebuildMenus()
}
.onChange(of: permissionContext.currentRole?.id) { _ in
.onChange(of: permissionContext.currentRole?.roleCode) { _ in
rebuildMenus()
}
.onChange(of: permissionContext.rolePermissions.count) { _ in
@ -122,10 +122,16 @@ struct HomeMoreFunctionsView: View {
.buttonStyle(.plain)
Button {
let roleCode = permissionContext.currentAppRole?.rawValue
if isCommon {
commonUris = commonMenuStore.remove(item.uri, current: commonUris)
commonUris = commonMenuStore.remove(item.uri, current: commonUris, roleCode: roleCode)
} else {
commonUris = commonMenuStore.add(item.uri, current: commonUris, menuItems: viewModel.menuItems)
commonUris = commonMenuStore.add(
item.uri,
current: commonUris,
menuItems: viewModel.menuItems,
roleCode: roleCode
)
}
} label: {
Image(systemName: isCommon ? "minus.circle.fill" : "plus.circle.fill")
@ -195,10 +201,17 @@ struct HomeMoreFunctionsView: View {
}
private func rebuildMenus() {
let roleCode = permissionContext.currentAppRole?.rawValue
let legacyRoleId = permissionContext.currentRole?.id
viewModel.buildMenus(
from: permissionContext.rolePermissions,
currentRoleId: permissionContext.currentRole?.id
currentRoleCode: roleCode
)
commonUris = commonMenuStore.load(
menuItems: viewModel.menuItems,
roleCode: roleCode,
legacyRoleId: legacyRoleId,
topLevelPermissionURIs: permissionContext.topLevelPermissionURIs(for: roleCode)
)
commonUris = commonMenuStore.load(menuItems: viewModel.menuItems)
}
}