优化
This commit is contained in:
@@ -9196,16 +9196,22 @@ CREATE PROCEDURE assert_ocean_booking_permission_ids_available()
|
||||
BEGIN
|
||||
IF EXISTS (
|
||||
SELECT 1 FROM iam_permission
|
||||
WHERE (id BETWEEN 5102140 AND 5102149
|
||||
AND permission_code <> CASE id
|
||||
WHEN 5102140 THEN 'platform:firstleg:ocean-booking:list'
|
||||
WHEN 5102141 THEN 'platform:firstleg:ocean-booking:list'
|
||||
WHEN 5102142 THEN 'platform:firstleg:ocean-booking:create'
|
||||
WHEN 5102146 THEN 'platform:firstleg:ocean-booking:release'
|
||||
WHEN 5102147 THEN 'platform:firstleg:ocean-booking:edit'
|
||||
WHEN 5102148 THEN 'platform:firstleg:ocean-booking:delete'
|
||||
WHEN 5102149 THEN 'platform:firstleg:ocean-booking:allocate'
|
||||
END)
|
||||
WHERE (id = 5102140 AND permission_code <> 'platform:firstleg:ocean-booking:list')
|
||||
OR (id = 5102141 AND permission_code NOT IN (
|
||||
'platform:firstleg:ocean-booking:list',
|
||||
'platform:firstleg:ocean-booking:view'))
|
||||
OR (id = 5102142 AND permission_code <> 'platform:firstleg:ocean-booking:create')
|
||||
OR (id = 5102143 AND permission_code <> 'platform:firstleg:ocean-booking:edit')
|
||||
OR (id = 5102144 AND permission_code <> 'platform:firstleg:ocean-booking:submit')
|
||||
OR (id = 5102145 AND permission_code <> 'platform:firstleg:ocean-booking:confirm')
|
||||
OR (id = 5102146 AND permission_code <> 'platform:firstleg:ocean-booking:release')
|
||||
OR (id = 5102147 AND permission_code NOT IN (
|
||||
'platform:firstleg:ocean-booking:cancel',
|
||||
'platform:firstleg:ocean-booking:edit'))
|
||||
OR (id = 5102148 AND permission_code NOT IN (
|
||||
'platform:firstleg:ocean-booking:change',
|
||||
'platform:firstleg:ocean-booking:delete'))
|
||||
OR (id = 5102149 AND permission_code <> 'platform:firstleg:ocean-booking:allocate')
|
||||
OR (permission_code LIKE 'platform:firstleg:ocean-booking:%'
|
||||
AND (tenant_id <> 0 OR app_code <> 'PLATFORM' OR id NOT BETWEEN 5102140 AND 5102149))
|
||||
) THEN
|
||||
@@ -9217,6 +9223,10 @@ DELIMITER ;
|
||||
CALL assert_ocean_booking_permission_ids_available();
|
||||
DROP PROCEDURE IF EXISTS assert_ocean_booking_permission_ids_available;
|
||||
|
||||
UPDATE iam_permission
|
||||
SET permission_code='platform:firstleg:ocean-booking:view',status='INACTIVE',deleted=1
|
||||
WHERE id=5102141 AND permission_code='platform:firstleg:ocean-booking:list';
|
||||
|
||||
INSERT INTO iam_permission
|
||||
(id,tenant_id,app_code,permission_type,parent_id,permission_code,permission_name,
|
||||
route_path,http_method,sort_no,status,built_in,deleted)
|
||||
@@ -9236,6 +9246,9 @@ SELECT role.id,permission.id,0 FROM iam_role role JOIN iam_permission permission
|
||||
ON permission.tenant_id=0 AND permission.permission_code LIKE 'platform:firstleg:ocean-booking:%'
|
||||
WHERE role.tenant_id=0 AND role.role_code IN ('PLATFORM_ADMIN','ORDER_OPERATOR');
|
||||
|
||||
DELETE rp FROM iam_role_permission rp JOIN iam_permission p ON p.tenant_id=rp.tenant_id AND p.id=rp.permission_id
|
||||
WHERE p.id=5102141;
|
||||
UPDATE iam_permission SET status='INACTIVE',deleted=1 WHERE id=5102141;
|
||||
DELETE rp FROM iam_role_permission rp WHERE rp.permission_id IN (5102143,5102144,5102145);
|
||||
DELETE FROM iam_permission WHERE id IN (5102143,5102144,5102145);
|
||||
|
||||
@@ -9321,14 +9334,13 @@ CREATE PROCEDURE assert_truck_appointment_permission_ids_available()
|
||||
BEGIN
|
||||
IF EXISTS (
|
||||
SELECT 1 FROM iam_permission
|
||||
WHERE (id BETWEEN 5102150 AND 5102154
|
||||
AND permission_code <> CASE id
|
||||
WHEN 5102150 THEN 'platform:firstleg:truck-appointment:list'
|
||||
WHEN 5102151 THEN 'platform:firstleg:truck-appointment:list'
|
||||
WHEN 5102152 THEN 'platform:firstleg:truck-appointment:create'
|
||||
WHEN 5102153 THEN 'platform:firstleg:truck-appointment:edit'
|
||||
WHEN 5102154 THEN 'platform:firstleg:truck-appointment:operate'
|
||||
END)
|
||||
WHERE (id = 5102150 AND permission_code <> 'platform:firstleg:truck-appointment:list')
|
||||
OR (id = 5102151 AND permission_code NOT IN (
|
||||
'platform:firstleg:truck-appointment:list',
|
||||
'platform:firstleg:truck-appointment:view'))
|
||||
OR (id = 5102152 AND permission_code <> 'platform:firstleg:truck-appointment:create')
|
||||
OR (id = 5102153 AND permission_code <> 'platform:firstleg:truck-appointment:edit')
|
||||
OR (id = 5102154 AND permission_code <> 'platform:firstleg:truck-appointment:operate')
|
||||
OR (permission_code LIKE 'platform:firstleg:truck-appointment:%'
|
||||
AND (tenant_id <> 0 OR app_code <> 'PLATFORM' OR id NOT BETWEEN 5102150 AND 5102154))
|
||||
) THEN
|
||||
@@ -9340,6 +9352,10 @@ DELIMITER ;
|
||||
CALL assert_truck_appointment_permission_ids_available();
|
||||
DROP PROCEDURE IF EXISTS assert_truck_appointment_permission_ids_available;
|
||||
|
||||
UPDATE iam_permission
|
||||
SET permission_code='platform:firstleg:truck-appointment:view',status='INACTIVE',deleted=1
|
||||
WHERE id=5102151 AND permission_code='platform:firstleg:truck-appointment:list';
|
||||
|
||||
INSERT INTO iam_permission
|
||||
(id,tenant_id,app_code,permission_type,parent_id,permission_code,permission_name,
|
||||
route_path,http_method,sort_no,status,built_in,deleted)
|
||||
@@ -9358,6 +9374,10 @@ SELECT role.id,permission.id,0 FROM iam_role role JOIN iam_permission permission
|
||||
AND permission.permission_code LIKE 'platform:firstleg:truck-appointment:%'
|
||||
WHERE role.tenant_id=0 AND role.role_code IN ('PLATFORM_ADMIN','ORDER_OPERATOR');
|
||||
|
||||
DELETE rp FROM iam_role_permission rp JOIN iam_permission p ON p.tenant_id=rp.tenant_id AND p.id=rp.permission_id
|
||||
WHERE p.id=5102151;
|
||||
UPDATE iam_permission SET status='INACTIVE',deleted=1 WHERE id=5102151;
|
||||
|
||||
USE baiyue_firstleg;
|
||||
|
||||
DROP PROCEDURE IF EXISTS assert_phase3_service_center_schema;
|
||||
@@ -9374,10 +9394,12 @@ BEGIN
|
||||
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT='统一迁移失败:订舱或拖车预约表未完整创建';
|
||||
END IF;
|
||||
IF (SELECT COUNT(*) FROM baiyue_iam.iam_permission
|
||||
WHERE tenant_id=0 AND app_code='PLATFORM' AND id BETWEEN 5102140 AND 5102149
|
||||
WHERE tenant_id=0 AND app_code='PLATFORM' AND status='ACTIVE' AND deleted=0
|
||||
AND id BETWEEN 5102140 AND 5102149
|
||||
AND permission_code LIKE 'platform:firstleg:ocean-booking:%') <> 6
|
||||
OR (SELECT COUNT(*) FROM baiyue_iam.iam_permission
|
||||
WHERE tenant_id=0 AND app_code='PLATFORM' AND id BETWEEN 5102150 AND 5102154
|
||||
WHERE tenant_id=0 AND app_code='PLATFORM' AND status='ACTIVE' AND deleted=0
|
||||
AND id BETWEEN 5102150 AND 5102154
|
||||
AND permission_code LIKE 'platform:firstleg:truck-appointment:%') <> 4 THEN
|
||||
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT='统一迁移失败:订舱或拖车预约权限未完整写入';
|
||||
END IF;
|
||||
|
||||
@@ -238,16 +238,22 @@ CREATE PROCEDURE assert_ocean_booking_permission_ids_available()
|
||||
BEGIN
|
||||
IF EXISTS (
|
||||
SELECT 1 FROM iam_permission
|
||||
WHERE (id BETWEEN 5102140 AND 5102149
|
||||
AND permission_code <> CASE id
|
||||
WHEN 5102140 THEN 'platform:firstleg:ocean-booking:list'
|
||||
WHEN 5102141 THEN 'platform:firstleg:ocean-booking:list'
|
||||
WHEN 5102142 THEN 'platform:firstleg:ocean-booking:create'
|
||||
WHEN 5102146 THEN 'platform:firstleg:ocean-booking:release'
|
||||
WHEN 5102147 THEN 'platform:firstleg:ocean-booking:edit'
|
||||
WHEN 5102148 THEN 'platform:firstleg:ocean-booking:delete'
|
||||
WHEN 5102149 THEN 'platform:firstleg:ocean-booking:allocate'
|
||||
END)
|
||||
WHERE (id = 5102140 AND permission_code <> 'platform:firstleg:ocean-booking:list')
|
||||
OR (id = 5102141 AND permission_code NOT IN (
|
||||
'platform:firstleg:ocean-booking:list',
|
||||
'platform:firstleg:ocean-booking:view'))
|
||||
OR (id = 5102142 AND permission_code <> 'platform:firstleg:ocean-booking:create')
|
||||
OR (id = 5102143 AND permission_code <> 'platform:firstleg:ocean-booking:edit')
|
||||
OR (id = 5102144 AND permission_code <> 'platform:firstleg:ocean-booking:submit')
|
||||
OR (id = 5102145 AND permission_code <> 'platform:firstleg:ocean-booking:confirm')
|
||||
OR (id = 5102146 AND permission_code <> 'platform:firstleg:ocean-booking:release')
|
||||
OR (id = 5102147 AND permission_code NOT IN (
|
||||
'platform:firstleg:ocean-booking:cancel',
|
||||
'platform:firstleg:ocean-booking:edit'))
|
||||
OR (id = 5102148 AND permission_code NOT IN (
|
||||
'platform:firstleg:ocean-booking:change',
|
||||
'platform:firstleg:ocean-booking:delete'))
|
||||
OR (id = 5102149 AND permission_code <> 'platform:firstleg:ocean-booking:allocate')
|
||||
OR (permission_code LIKE 'platform:firstleg:ocean-booking:%'
|
||||
AND (tenant_id <> 0 OR app_code <> 'PLATFORM' OR id NOT BETWEEN 5102140 AND 5102149))
|
||||
) THEN
|
||||
@@ -259,6 +265,10 @@ DELIMITER ;
|
||||
CALL assert_ocean_booking_permission_ids_available();
|
||||
DROP PROCEDURE IF EXISTS assert_ocean_booking_permission_ids_available;
|
||||
|
||||
UPDATE iam_permission
|
||||
SET permission_code='platform:firstleg:ocean-booking:view',status='INACTIVE',deleted=1
|
||||
WHERE id=5102141 AND permission_code='platform:firstleg:ocean-booking:list';
|
||||
|
||||
INSERT INTO iam_permission
|
||||
(id,tenant_id,app_code,permission_type,parent_id,permission_code,permission_name,
|
||||
route_path,http_method,sort_no,status,built_in,deleted)
|
||||
|
||||
@@ -109,14 +109,13 @@ CREATE PROCEDURE assert_truck_appointment_permission_ids_available()
|
||||
BEGIN
|
||||
IF EXISTS (
|
||||
SELECT 1 FROM iam_permission
|
||||
WHERE (id BETWEEN 5102150 AND 5102154
|
||||
AND permission_code <> CASE id
|
||||
WHEN 5102150 THEN 'platform:firstleg:truck-appointment:list'
|
||||
WHEN 5102151 THEN 'platform:firstleg:truck-appointment:list'
|
||||
WHEN 5102152 THEN 'platform:firstleg:truck-appointment:create'
|
||||
WHEN 5102153 THEN 'platform:firstleg:truck-appointment:edit'
|
||||
WHEN 5102154 THEN 'platform:firstleg:truck-appointment:operate'
|
||||
END)
|
||||
WHERE (id = 5102150 AND permission_code <> 'platform:firstleg:truck-appointment:list')
|
||||
OR (id = 5102151 AND permission_code NOT IN (
|
||||
'platform:firstleg:truck-appointment:list',
|
||||
'platform:firstleg:truck-appointment:view'))
|
||||
OR (id = 5102152 AND permission_code <> 'platform:firstleg:truck-appointment:create')
|
||||
OR (id = 5102153 AND permission_code <> 'platform:firstleg:truck-appointment:edit')
|
||||
OR (id = 5102154 AND permission_code <> 'platform:firstleg:truck-appointment:operate')
|
||||
OR (permission_code LIKE 'platform:firstleg:truck-appointment:%'
|
||||
AND (tenant_id <> 0 OR app_code <> 'PLATFORM' OR id NOT BETWEEN 5102150 AND 5102154))
|
||||
) THEN
|
||||
@@ -128,6 +127,10 @@ DELIMITER ;
|
||||
CALL assert_truck_appointment_permission_ids_available();
|
||||
DROP PROCEDURE IF EXISTS assert_truck_appointment_permission_ids_available;
|
||||
|
||||
UPDATE iam_permission
|
||||
SET permission_code='platform:firstleg:truck-appointment:view',status='INACTIVE',deleted=1
|
||||
WHERE id=5102151 AND permission_code='platform:firstleg:truck-appointment:list';
|
||||
|
||||
INSERT INTO iam_permission
|
||||
(id,tenant_id,app_code,permission_type,parent_id,permission_code,permission_name,
|
||||
route_path,http_method,sort_no,status,built_in,deleted)
|
||||
|
||||
@@ -4,6 +4,8 @@ import test from 'node:test'
|
||||
|
||||
const sql = readFileSync(new URL('../../deploy/sql/头程数据库统一增量-MySQL8.sql', import.meta.url), 'utf8')
|
||||
const iamSeed = readFileSync(new URL('../../iam/src/main/resources/db/phase1-admin-rbac.sql', import.meta.url), 'utf8')
|
||||
const oceanBookingSchema = readFileSync(new URL('../../firstleg/src/main/resources/db/phase3-ocean-booking-schema.sql', import.meta.url), 'utf8')
|
||||
const truckAppointmentSchema = readFileSync(new URL('../../firstleg/src/main/resources/db/phase3-truck-appointment-schema.sql', import.meta.url), 'utf8')
|
||||
|
||||
test('统一初始化 SQL 保留最小登录与客户主体', () => {
|
||||
assert.match(sql, /一个平台系统管理员和一个 IT 测试客户管理员/)
|
||||
@@ -31,3 +33,23 @@ test('统一初始化 SQL 提供人工验收所需公共仓储主数据', () =>
|
||||
assert.ok(palletSeed, 'missing pallet initialization seed')
|
||||
assert.doesNotMatch(palletSeed, /\bstatus\b|'AVAILABLE'/)
|
||||
})
|
||||
|
||||
test('三期权限迁移允许脚本历史版本写入的旧权限并在随后收敛', () => {
|
||||
for (const source of [sql, oceanBookingSchema]) {
|
||||
assert.match(source, /id = 5102141[\s\S]*?ocean-booking:view/)
|
||||
assert.match(source, /id = 5102147[\s\S]*?ocean-booking:cancel[\s\S]*?ocean-booking:edit/)
|
||||
assert.match(source, /id = 5102148[\s\S]*?ocean-booking:change[\s\S]*?ocean-booking:delete/)
|
||||
assert.match(source, /SET permission_code='platform:firstleg:ocean-booking:view',status='INACTIVE',deleted=1/)
|
||||
assert.match(source, /UPDATE iam_permission SET status='INACTIVE',deleted=1 WHERE id=5102141/)
|
||||
assert.match(source, /DELETE FROM iam_permission WHERE id IN \(5102143,5102144,5102145\)/)
|
||||
}
|
||||
|
||||
for (const source of [sql, truckAppointmentSchema]) {
|
||||
assert.match(source, /id = 5102151[\s\S]*?truck-appointment:view/)
|
||||
assert.match(source, /SET permission_code='platform:firstleg:truck-appointment:view',status='INACTIVE',deleted=1/)
|
||||
assert.match(source, /UPDATE iam_permission SET status='INACTIVE',deleted=1 WHERE id=5102151/)
|
||||
}
|
||||
|
||||
assert.match(sql, /status='ACTIVE' AND deleted=0[\s\S]*?id BETWEEN 5102140 AND 5102149/)
|
||||
assert.match(sql, /status='ACTIVE' AND deleted=0[\s\S]*?id BETWEEN 5102150 AND 5102154/)
|
||||
})
|
||||
|
||||
@@ -11,8 +11,8 @@ $ErrorActionPreference = 'Stop'
|
||||
$Repo = (Resolve-Path (Join-Path $PSScriptRoot '..')).Path
|
||||
$Workspace = (Resolve-Path (Join-Path $Repo '..')).Path
|
||||
$Acceptance = Join-Path $Workspace '.codex-tmp\p23-04-acceptance'
|
||||
$ExpectedSha256 = '00E8F9C24CE16FE6B4D2B6AF60460AE1AF1D264DFE110D4BDCE611F09EB69EAA'
|
||||
$ExpectedLines = 15403
|
||||
$ExpectedSha256 = '8A269D219F8824352818BB427033F46F79CFB4652F36F0A9DA01A5913ABB50C6'
|
||||
$ExpectedLines = 15673
|
||||
|
||||
if ($TargetHost -notin @('127.0.0.1', 'localhost')) {
|
||||
[Console]::Error.WriteLine('Refusing non-local database; only 127.0.0.1 or localhost is allowed.')
|
||||
|
||||
Reference in New Issue
Block a user