| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- # Extract all @RequestMapping paths from fs-admin-saas source code
- # and compare with frontend API paths
- $basePath = "d:\ylrz\ylrz_saas_his_scrm\fs-admin-saas\src\main\java\com\fs"
- $controllers = Get-ChildItem -Path $basePath -Recurse -Filter "*Controller.java"
- $backendMappings = @{}
- foreach ($file in $controllers) {
- $content = Get-Content $file.FullName -Raw -Encoding UTF8
-
- # Extract class-level @RequestMapping
- $classMapping = ""
- if ($content -match '@RequestMapping\(["\s]*\(\s*["\x27]([^"\x27]+)["\x27]') {
- $classMapping = $Matches[1]
- } elseif ($content -match '@RequestMapping\s*\(\s*value\s*=\s*["\x27]([^"\x27]+)["\x27]') {
- $classMapping = $Matches[1]
- }
-
- # Check if controller has @Profile that excludes it from company
- $hasAdminProfile = $content -match '@Profile\s*\(\s*["\x27]admin["\x27]\s*\)'
-
- # Extract method-level mappings
- $methodMatches = [regex]::Matches($content, '@(GetMapping|PostMapping|PutMapping|DeleteMapping|RequestMapping)\s*\(\s*(?:value\s*=\s*)?["\x27]([^"\x27]+)["\x27]')
-
- foreach ($m in $methodMatches) {
- $methodPath = $m.Groups[2].Value
- $fullPath = "$classMapping$methodPath"
- # Normalize: remove trailing slash, ensure starts with /
- $fullPath = $fullPath -replace '/+', '/'
- if (-not $fullPath.StartsWith('/')) { $fullPath = "/$fullPath" }
-
- $profile = if ($hasAdminProfile) { "admin" } else { "company" }
- $relPath = $file.FullName.Substring($basePath.Length + 1)
- if (-not $backendMappings.ContainsKey($fullPath)) {
- $backendMappings[$fullPath] = "$profile | $relPath"
- }
- }
-
- # Also handle class-level only (no method paths)
- if ($classMapping -and $methodMatches.Count -eq 0) {
- $fullPath = $classMapping -replace '/+', '/'
- if (-not $fullPath.StartsWith('/')) { $fullPath = "/$fullPath" }
- $profile = if ($hasAdminProfile) { "admin" } else { "company" }
- $relPath = $file.FullName.Substring($basePath.Length + 1)
- if (-not $backendMappings.ContainsKey($fullPath)) {
- $backendMappings[$fullPath] = "$profile | $relPath"
- }
- }
- }
- Write-Host "Total backend mappings found: $($backendMappings.Count)"
- # Also scan fs-company's own controllers
- $companyPath = "d:\ylrz\ylrz_saas_his_scrm\fs-company\src\main\java\com\fs"
- $companyControllers = Get-ChildItem -Path $companyPath -Recurse -Filter "*Controller.java"
- foreach ($file in $companyControllers) {
- $content = Get-Content $file.FullName -Raw -Encoding UTF8
-
- $classMapping = ""
- if ($content -match '@RequestMapping\(["\s]*\(\s*["\x27]([^"\x27]+)["\x27]') {
- $classMapping = $Matches[1]
- } elseif ($content -match '@RequestMapping\s*\(\s*value\s*=\s*["\x27]([^"\x27]+)["\x27]') {
- $classMapping = $Matches[1]
- }
-
- $methodMatches = [regex]::Matches($content, '@(GetMapping|PostMapping|PutMapping|DeleteMapping|RequestMapping)\s*\(\s*(?:value\s*=\s*)?["\x27]([^"\x27]+)["\x27]')
-
- foreach ($m in $methodMatches) {
- $methodPath = $m.Groups[2].Value
- $fullPath = "$classMapping$methodPath"
- $fullPath = $fullPath -replace '/+', '/'
- if (-not $fullPath.StartsWith('/')) { $fullPath = "/$fullPath" }
-
- $relPath = "company:" + $file.FullName.Substring($companyPath.Length + 1)
- if (-not $backendMappings.ContainsKey($fullPath)) {
- $backendMappings[$fullPath] = "company | $relPath"
- }
- }
- }
- Write-Host "Total backend mappings (with fs-company): $($backendMappings.Count)"
- # Count by profile
- $adminMappings = ($backendMappings.Values | Where-Object { $_ -match "^admin" }).Count
- $companyMappings = ($backendMappings.Values | Where-Object { $_ -match "^company" }).Count
- Write-Host "Admin-only mappings: $adminMappings"
- Write-Host "Company mappings: $companyMappings"
- # List all mappings sorted
- $backendMappings.Keys | Sort-Object | Select-Object -First 50 | ForEach-Object { Write-Host " $_ => $($backendMappings[$_])" }
- # Save all mappings
- $out = [System.Collections.ArrayList]::new()
- [void]$out.Add("Total backend mappings: $($backendMappings.Count)")
- [void]$out.Add("Admin-only: $adminMappings")
- [void]$out.Add("Company: $companyMappings")
- [void]$out.Add("")
- foreach ($key in ($backendMappings.Keys | Sort-Object)) {
- [void]$out.Add("$key => $($backendMappings[$key])")
- }
- [System.IO.File]::WriteAllLines("d:\ylrz\saasadminui\backend_mappings.txt", $out, (New-Object System.Text.UTF8Encoding($false)))
- Write-Host "`nMappings saved to d:\ylrz\saasadminui\backend_mappings.txt"
|