397 lines
30 KiB
SQL
397 lines
30 KiB
SQL
USE baiyue_iam;
|
|
|
|
-- 四期 Admin 海外权限只使用 platform:overseas-*;列表权限包含详情只读。
|
|
DELETE rp FROM iam_role_permission rp
|
|
JOIN iam_permission p ON p.id=rp.permission_id
|
|
WHERE p.permission_code LIKE 'platform:lastleg:%';
|
|
UPDATE iam_permission SET status='INACTIVE', deleted=1
|
|
WHERE permission_code LIKE 'platform:lastleg:%';
|
|
|
|
DELETE role_permission FROM iam_role_permission role_permission
|
|
JOIN iam_permission permission ON permission.id=role_permission.permission_id
|
|
AND permission.tenant_id=role_permission.tenant_id
|
|
WHERE permission.permission_code=CONCAT('platform:overseas-', 'warehouse:warehouse-transfer:list');
|
|
UPDATE iam_permission SET status='INACTIVE', deleted=1
|
|
WHERE permission_code=CONCAT('platform:overseas-', 'warehouse:warehouse-transfer: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)
|
|
VALUES
|
|
(5107000,0,'PLATFORM','MENU',0,'platform:overseas-warehouse:last-mile-order:list','海外尾程订单','/overseas-warehouse/last-mile-orders','GET',700,'ACTIVE',1,0),
|
|
(5107001,0,'PLATFORM','BUTTON',5107000,'platform:overseas-warehouse:last-mile-order:edit','编辑海外尾程订单',NULL,'PUT',701,'ACTIVE',1,0),
|
|
(5107002,0,'PLATFORM','BUTTON',5107000,'platform:overseas-warehouse:last-mile-order:export','导出海外尾程订单',NULL,'GET',702,'ACTIVE',1,0),
|
|
(5107003,0,'PLATFORM','BUTTON',5107000,'platform:overseas-warehouse:warehouse-transfer:approve','审核仓储转运单',NULL,'POST',703,'ACTIVE',1,0),
|
|
(5107010,0,'PLATFORM','MENU',0,'platform:overseas-warehouse:inbound-order:list','海外入仓单','/overseas-warehouse/inbound-orders','GET',710,'ACTIVE',1,0),
|
|
(5107011,0,'PLATFORM','BUTTON',5107010,'platform:overseas-warehouse:inbound-order:create','创建海外入仓计划',NULL,'POST',711,'ACTIVE',1,0),
|
|
(5107012,0,'PLATFORM','BUTTON',5107010,'platform:overseas-warehouse:inbound-order:edit','编辑海外入仓计划',NULL,'POST',712,'ACTIVE',1,0),
|
|
(5107013,0,'PLATFORM','BUTTON',5107010,'platform:overseas-warehouse:inbound-order:fba-appointment','FBA预约',NULL,'POST',713,'ACTIVE',1,0),
|
|
(5107014,0,'PLATFORM','BUTTON',5107010,'platform:overseas-warehouse:inbound-order:smart-dispatch','智能排车',NULL,'POST',714,'ACTIVE',1,0),
|
|
(5107015,0,'PLATFORM','BUTTON',5107010,'lastleg:pda:operate','海外仓PDA入仓作业',NULL,'POST',715,'ACTIVE',1,0),
|
|
(5107020,0,'PLATFORM','MENU',0,'platform:overseas-warehouse:relabel-order:list','海外换标单','/overseas-warehouse/relabel-orders','GET',720,'ACTIVE',1,0),
|
|
(5107021,0,'PLATFORM','BUTTON',5107020,'platform:overseas-warehouse:relabel-order:create','创建海外换标单',NULL,'POST',721,'ACTIVE',1,0),
|
|
(5107022,0,'PLATFORM','BUTTON',5107020,'platform:overseas-warehouse:relabel-order:status','变更海外换标单状态',NULL,'PUT',722,'ACTIVE',1,0),
|
|
(5107030,0,'PLATFORM','MENU',0,'platform:overseas-warehouse:pallet:list','海外托盘','/overseas-warehouse/pallets','GET',730,'ACTIVE',1,0),
|
|
(5107031,0,'PLATFORM','BUTTON',5107030,'platform:overseas-warehouse:pallet:create','创建海外托盘',NULL,'POST',731,'ACTIVE',1,0),
|
|
(5107032,0,'PLATFORM','BUTTON',5107030,'platform:overseas-warehouse:pallet:edit','编辑海外托盘',NULL,'PUT',732,'ACTIVE',1,0),
|
|
(5107033,0,'PLATFORM','BUTTON',5107030,'platform:overseas-warehouse:pallet:delete','删除海外托盘',NULL,'DELETE',733,'ACTIVE',1,0),
|
|
(5107040,0,'PLATFORM','MENU',0,'platform:overseas-warehouse:inventory:list','海外库存','/overseas-warehouse/inventory','GET',740,'ACTIVE',1,0),
|
|
(5107041,0,'PLATFORM','BUTTON',5107040,'platform:overseas-warehouse:inventory:export','导出海外库存',NULL,'GET',741,'ACTIVE',1,0),
|
|
(5107042,0,'PLATFORM','BUTTON',5107040,'platform:overseas-warehouse:inventory:edit','编辑海外库存状态',NULL,'POST',742,'ACTIVE',1,0),
|
|
(5107043,0,'PLATFORM','BUTTON',5107040,'platform:overseas-warehouse:inventory:adjust','调整海外库存',NULL,'POST',743,'ACTIVE',1,0),
|
|
(5107050,0,'PLATFORM','MENU',0,'platform:overseas-warehouse:warehouse:list','海外仓资源','/overseas-warehouse/warehouses','GET',750,'ACTIVE',1,0),
|
|
(5107051,0,'PLATFORM','BUTTON',5107050,'platform:overseas-warehouse:warehouse:create','创建海外仓资源',NULL,'POST',751,'ACTIVE',1,0),
|
|
(5107052,0,'PLATFORM','BUTTON',5107050,'platform:overseas-warehouse:warehouse:edit','编辑海外仓资源',NULL,'PUT',752,'ACTIVE',1,0),
|
|
(5107053,0,'PLATFORM','BUTTON',5107050,'platform:overseas-warehouse:warehouse:status','变更海外仓状态',NULL,'PATCH',753,'ACTIVE',1,0),
|
|
(5107060,0,'PLATFORM','MENU',0,'platform:overseas-warehouse:location:list','海外库位','/overseas-warehouse/locations','GET',760,'ACTIVE',1,0),
|
|
(5107061,0,'PLATFORM','BUTTON',5107060,'platform:overseas-warehouse:location:create','创建海外库位',NULL,'POST',761,'ACTIVE',1,0),
|
|
(5107062,0,'PLATFORM','BUTTON',5107060,'platform:overseas-warehouse:location:edit','编辑海外库位',NULL,'PUT',762,'ACTIVE',1,0),
|
|
(5107063,0,'PLATFORM','BUTTON',5107060,'platform:overseas-warehouse:location:delete','删除海外库位',NULL,'DELETE',763,'ACTIVE',1,0),
|
|
(5107190,0,'PLATFORM','MENU',0,'platform:overseas-warehouse:return-inventory:list','退货库存管理','/overseas-warehouse/return-inventory','GET',890,'ACTIVE',1,0),
|
|
(5107191,0,'PLATFORM','MENU',0,'platform:overseas-warehouse:return-cartons:list','退货箱号管理','/overseas-warehouse/return-cartons','GET',891,'ACTIVE',1,0),
|
|
(5107090,0,'PLATFORM','MENU',0,'platform:overseas-warehouse:outbound:list','海外出库单','/overseas-warehouse/outbounds','GET',765,'ACTIVE',1,0),
|
|
(5107091,0,'PLATFORM','BUTTON',5107090,'platform:overseas-warehouse:outbound:create','创建海外出库单',NULL,'POST',766,'ACTIVE',1,0),
|
|
(5107092,0,'PLATFORM','MENU',0,'platform:overseas-warehouse:delivery:list','海外派送单','/overseas-warehouse/delivery-orders','GET',767,'ACTIVE',1,0),
|
|
(5107100,0,'PLATFORM','MENU',0,'platform:overseas-business:purchase:list','海外采购订单','/overseas-business/purchases','GET',800,'ACTIVE',1,0),
|
|
(5107101,0,'PLATFORM','BUTTON',5107100,'platform:overseas-business:purchase:edit','编辑海外采购订单',NULL,'PATCH',801,'ACTIVE',1,0),
|
|
(5107102,0,'PLATFORM','BUTTON',5107100,'platform:overseas-business:purchase:review','审核海外采购订单',NULL,'POST',802,'ACTIVE',1,0),
|
|
(5107110,0,'PLATFORM','MENU',0,'platform:overseas-business:truck:list','本土卡车','/overseas-business/trucks','GET',810,'ACTIVE',1,0),
|
|
(5107111,0,'PLATFORM','BUTTON',5107110,'platform:overseas-business:truck:create','创建本土卡车单',NULL,'POST',811,'ACTIVE',1,0),
|
|
(5107112,0,'PLATFORM','BUTTON',5107110,'platform:overseas-business:truck:edit','编辑本土卡车单',NULL,'PUT',812,'ACTIVE',1,0),
|
|
(5107113,0,'PLATFORM','BUTTON',5107110,'platform:overseas-business:truck:status','变更本土卡车状态',NULL,'PATCH',813,'ACTIVE',1,0),
|
|
(5107120,0,'PLATFORM','MENU',0,'platform:overseas-business:looseboard:list','本土散板','/overseas-business/looseboards','GET',820,'ACTIVE',1,0),
|
|
(5107121,0,'PLATFORM','BUTTON',5107120,'platform:overseas-business:looseboard:create','创建本土散板单',NULL,'POST',821,'ACTIVE',1,0),
|
|
(5107122,0,'PLATFORM','BUTTON',5107120,'platform:overseas-business:looseboard:edit','编辑本土散板单',NULL,'PUT',822,'ACTIVE',1,0),
|
|
(5107123,0,'PLATFORM','BUTTON',5107120,'platform:overseas-business:looseboard:status','变更本土散板状态',NULL,'PATCH',823,'ACTIVE',1,0),
|
|
(5107200,0,'PLATFORM','MENU',0,'platform:overseas-master-data:quote:list','海外仓报价','/overseas-master-data/quotes','GET',900,'ACTIVE',1,0),
|
|
(5107201,0,'PLATFORM','BUTTON',5107200,'platform:overseas-master-data:quote:create','创建海外仓报价',NULL,'POST',901,'ACTIVE',1,0),
|
|
(5107202,0,'PLATFORM','BUTTON',5107200,'platform:overseas-master-data:quote:edit','编辑海外仓报价',NULL,'PUT',902,'ACTIVE',1,0),
|
|
(5107203,0,'PLATFORM','BUTTON',5107200,'platform:overseas-master-data:quote:status','变更海外仓报价状态',NULL,'PATCH',903,'ACTIVE',1,0),
|
|
(5107204,0,'PLATFORM','BUTTON',5107200,'platform:overseas-master-data:quote:export','导出海外仓报价',NULL,'GET',904,'ACTIVE',1,0),
|
|
(5107210,0,'PLATFORM','MENU',0,'platform:overseas-master-data:exchange-rate:list','月度汇率','/overseas-master-data/exchange-rates','GET',910,'ACTIVE',1,0),
|
|
(5107211,0,'PLATFORM','BUTTON',5107210,'platform:overseas-master-data:exchange-rate:create','创建月度汇率',NULL,'POST',911,'ACTIVE',1,0),
|
|
(5107212,0,'PLATFORM','BUTTON',5107210,'platform:overseas-master-data:exchange-rate:edit','编辑月度汇率',NULL,'PUT',912,'ACTIVE',1,0),
|
|
(5107213,0,'PLATFORM','BUTTON',5107210,'platform:overseas-master-data:exchange-rate:status','变更月度汇率状态',NULL,'PATCH',913,'ACTIVE',1,0),
|
|
(5107214,0,'PLATFORM','BUTTON',5107210,'platform:overseas-master-data:exchange-rate:export','导出月度汇率',NULL,'GET',914,'ACTIVE',1,0),
|
|
(5107220,0,'PLATFORM','MENU',0,'platform:overseas-master-data:vehicle:list','车辆主数据','/overseas-master-data/vehicles','GET',920,'ACTIVE',1,0),
|
|
(5107221,0,'PLATFORM','BUTTON',5107220,'platform:overseas-master-data:vehicle:create','创建车辆主数据',NULL,'POST',921,'ACTIVE',1,0),
|
|
(5107222,0,'PLATFORM','BUTTON',5107220,'platform:overseas-master-data:vehicle:edit','编辑车辆主数据',NULL,'PUT',922,'ACTIVE',1,0),
|
|
(5107223,0,'PLATFORM','BUTTON',5107220,'platform:overseas-master-data:vehicle:status','变更车辆状态',NULL,'PATCH',923,'ACTIVE',1,0),
|
|
(5107224,0,'PLATFORM','BUTTON',5107220,'platform:overseas-master-data:vehicle:export','导出车辆主数据',NULL,'GET',924,'ACTIVE',1,0),
|
|
(5306100,0,'MERCHANT','MENU',0,'merchant:cross-border:procurement:list','海外采购','/cross-border/procurement','GET',70,'ACTIVE',1,0),
|
|
(5306101,0,'MERCHANT','BUTTON',5306100,'merchant:cross-border:procurement:create','创建海外采购单',NULL,'POST',10,'ACTIVE',1,0),
|
|
(5306110,0,'MERCHANT','MENU',0,'merchant:cross-border:domestic-trucking:list','美国本土卡','/cross-border/domestic-trucking','GET',80,'ACTIVE',1,0),
|
|
(5306111,0,'MERCHANT','BUTTON',5306110,'merchant:cross-border:domestic-trucking:create','创建美国本土卡订单',NULL,'POST',10,'ACTIVE',1,0),
|
|
(5306112,0,'MERCHANT','BUTTON',5306110,'merchant:cross-border:domestic-trucking:edit','编辑美国本土卡订单',NULL,'PATCH',20,'ACTIVE',1,0),
|
|
(5306120,0,'MERCHANT','MENU',0,'merchant:cross-border:pallet-shipping:list','美本土散板','/cross-border/pallet-shipping','GET',90,'ACTIVE',1,0),
|
|
(5306121,0,'MERCHANT','BUTTON',5306120,'merchant:cross-border:pallet-shipping:create','创建美本土散板订单',NULL,'POST',10,'ACTIVE',1,0),
|
|
(5306122,0,'MERCHANT','BUTTON',5306120,'merchant:cross-border:pallet-shipping:edit','编辑美本土散板订单',NULL,'PUT',20,'ACTIVE',1,0),
|
|
(5306130,0,'MERCHANT','MENU',0,'merchant:warehouse:inbound:list','海外仓入库订单','/orders/inbound',NULL,50,'ACTIVE',1,0),
|
|
(5306140,0,'MERCHANT','MENU',0,'merchant:overseas-warehouse:return-inventory:list','退货库存','/overseas-warehouse/return-inventory','GET',95,'ACTIVE',1,0),
|
|
(5306150,0,'MERCHANT','MENU',0,'merchant:overseas-warehouse:last-mile-order:list','海外尾程订单','/overseas-warehouse/last-mile-orders','GET',100,'ACTIVE',1,0),
|
|
(5306160,0,'MERCHANT','MENU',0,'merchant:overseas-warehouse:relabel:list','贴标申请','/overseas-warehouse/labeling','GET',110,'ACTIVE',1,0),
|
|
(5306161,0,'MERCHANT','BUTTON',5306160,'merchant:overseas-warehouse:relabel:create','创建贴标申请',NULL,'POST',10,'ACTIVE',1,0),
|
|
(5306162,0,'MERCHANT','BUTTON',5306160,'merchant:overseas-warehouse:relabel:files','管理贴标文件',NULL,'POST',20,'ACTIVE',1,0),
|
|
(5306163,0,'MERCHANT','BUTTON',5306160,'merchant:overseas-warehouse:relabel:confirm','确认贴标完成',NULL,'POST',30,'ACTIVE',1,0),
|
|
(5306170,0,'MERCHANT','MENU',0,'merchant:overseas-warehouse:transfer:list','仓储转运','/overseas-warehouse/storage-transfer','GET',120,'ACTIVE',1,0),
|
|
(5306171,0,'MERCHANT','BUTTON',5306170,'merchant:overseas-warehouse:transfer:create','创建仓储转运单',NULL,'POST',10,'ACTIVE',1,0),
|
|
(5306172,0,'MERCHANT','BUTTON',5306170,'merchant:overseas-warehouse:transfer:confirm','确认仓储转运实测',NULL,'POST',20,'ACTIVE',1,0),
|
|
(5306180,0,'MERCHANT','MENU',0,'merchant:overseas-warehouse:discard:list','货物废弃','/overseas-warehouse/cargo-disposal','GET',130,'ACTIVE',1,0),
|
|
(5306181,0,'MERCHANT','BUTTON',5306180,'merchant:overseas-warehouse:discard:create','创建货物废弃申请',NULL,'POST',10,'ACTIVE',1,0),
|
|
(5306182,0,'MERCHANT','BUTTON',5306180,'merchant:overseas-warehouse:discard:cancel','取消货物废弃申请',NULL,'POST',20,'ACTIVE',1,0),
|
|
(5306190,0,'MERCHANT','MENU',0,'merchant:overseas-warehouse:return-order:list','退货预报','/overseas-warehouse/return-relabel','GET',140,'ACTIVE',1,0),
|
|
(5306191,0,'MERCHANT','BUTTON',5306190,'merchant:overseas-warehouse:return-order:create','创建退货预报',NULL,'POST',10,'ACTIVE',1,0),
|
|
(5306192,0,'MERCHANT','BUTTON',5306190,'merchant:overseas-warehouse:return-order:relabel','退货转换标申请',NULL,'POST',20,'ACTIVE',1,0)
|
|
ON DUPLICATE KEY UPDATE permission_type=VALUES(permission_type), parent_id=VALUES(parent_id),
|
|
permission_name=VALUES(permission_name), route_path=VALUES(route_path),
|
|
http_method=VALUES(http_method), sort_no=VALUES(sort_no), status='ACTIVE', built_in=1, deleted=0;
|
|
|
|
INSERT IGNORE INTO iam_role_permission (tenant_id, role_id, permission_id, created_at)
|
|
SELECT 0, role.id, permission.id, NOW(3)
|
|
FROM iam_role role
|
|
JOIN iam_permission permission ON permission.tenant_id=0 AND permission.app_code='PLATFORM'
|
|
AND permission.id BETWEEN 5107000 AND 5107299 AND permission.permission_code<>'lastleg:pda:operate'
|
|
WHERE role.tenant_id=0 AND role.app_code='PLATFORM' AND role.role_code='PLATFORM_ADMIN'
|
|
AND role.status='ACTIVE' AND role.deleted=0 AND permission.status='ACTIVE' AND permission.deleted=0;
|
|
|
|
DELETE role_permission FROM iam_role_permission role_permission
|
|
JOIN iam_role role ON role.id=role_permission.role_id AND role.tenant_id=role_permission.tenant_id
|
|
JOIN iam_permission permission ON permission.id=role_permission.permission_id AND permission.tenant_id=role_permission.tenant_id
|
|
WHERE permission.permission_code='lastleg:pda:operate'
|
|
AND NOT (role.id=4000005 AND role.tenant_id=0 AND role.app_code='PLATFORM' AND role.role_code='OVERSEAS_WAREHOUSE_PDA_OPERATOR');
|
|
|
|
INSERT IGNORE INTO iam_role_permission (tenant_id, role_id, permission_id, created_at)
|
|
SELECT 0, role.id, permission.id, NOW(3)
|
|
FROM iam_role role
|
|
JOIN iam_permission permission ON permission.tenant_id=0 AND permission.app_code='PLATFORM'
|
|
AND permission.permission_code='lastleg:pda:operate'
|
|
WHERE role.id=4000005 AND role.tenant_id=0 AND role.app_code='PLATFORM' AND role.role_code='OVERSEAS_WAREHOUSE_PDA_OPERATOR'
|
|
AND role.status='ACTIVE' AND role.deleted=0 AND permission.status='ACTIVE' AND permission.deleted=0;
|
|
|
|
DROP PROCEDURE IF EXISTS assert_overseas_pda_picker_permission;
|
|
DELIMITER $$
|
|
CREATE PROCEDURE assert_overseas_pda_picker_permission()
|
|
BEGIN
|
|
IF (SELECT COUNT(*) FROM iam_role_permission grant_row
|
|
JOIN iam_role role ON role.id=grant_row.role_id AND role.tenant_id=grant_row.tenant_id
|
|
JOIN iam_permission permission ON permission.id=grant_row.permission_id AND permission.tenant_id=grant_row.tenant_id
|
|
WHERE permission.permission_code='lastleg:pda:operate'
|
|
AND role.id=4000005 AND role.app_code='PLATFORM' AND role.role_code='OVERSEAS_WAREHOUSE_PDA_OPERATOR') <> 1 THEN
|
|
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT='海外PDA权限初始化失败:海外仓 PDA 作业员未精确授权';
|
|
END IF;
|
|
IF EXISTS (SELECT 1 FROM iam_role_permission grant_row
|
|
JOIN iam_role role ON role.id=grant_row.role_id AND role.tenant_id=grant_row.tenant_id
|
|
JOIN iam_permission permission ON permission.id=grant_row.permission_id AND permission.tenant_id=grant_row.tenant_id
|
|
WHERE permission.permission_code='lastleg:pda:operate'
|
|
AND NOT (role.id=4000005 AND role.tenant_id=0 AND role.app_code='PLATFORM' AND role.role_code='OVERSEAS_WAREHOUSE_PDA_OPERATOR')) THEN
|
|
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT='海外PDA权限初始化失败:存在非海外仓 PDA 作业员授权';
|
|
END IF;
|
|
END$$
|
|
DELIMITER ;
|
|
CALL assert_overseas_pda_picker_permission();
|
|
DROP PROCEDURE assert_overseas_pda_picker_permission;
|
|
|
|
-- 四期仓库后台角色严格最小授权:list 同时覆盖列表与详情,只读角色不得获得任何写权限。
|
|
DROP TEMPORARY TABLE IF EXISTS tmp_phase4_warehouse_role_permission;
|
|
CREATE TEMPORARY TABLE tmp_phase4_warehouse_role_permission (
|
|
role_code VARCHAR(64) NOT NULL,
|
|
permission_code VARCHAR(160) NOT NULL,
|
|
PRIMARY KEY (role_code, permission_code)
|
|
);
|
|
INSERT INTO tmp_phase4_warehouse_role_permission (role_code, permission_code) VALUES
|
|
('WAREHOUSE_OPERATOR','platform:overseas-warehouse:last-mile-order:list'),
|
|
('WAREHOUSE_OPERATOR','platform:overseas-warehouse:inbound-order:list'),
|
|
('WAREHOUSE_OPERATOR','platform:overseas-warehouse:relabel-order:list'),
|
|
('WAREHOUSE_OPERATOR','platform:overseas-warehouse:inventory:list'),
|
|
('WAREHOUSE_OPERATOR','platform:overseas-warehouse:warehouse:list'),
|
|
('WAREHOUSE_OPERATOR','platform:overseas-warehouse:location:list'),
|
|
('WAREHOUSE_OPERATOR','platform:overseas-warehouse:pallet:list'),
|
|
('WAREHOUSE_OPERATOR','platform:overseas-business:purchase:list'),
|
|
('WAREHOUSE_OPERATOR','platform:overseas-business:truck:list'),
|
|
('WAREHOUSE_OPERATOR','platform:overseas-business:looseboard:list'),
|
|
('WAREHOUSE_TALLY','platform:overseas-warehouse:last-mile-order:list'),
|
|
('WAREHOUSE_TALLY','platform:overseas-warehouse:inbound-order:list'),
|
|
('WAREHOUSE_TALLY','platform:overseas-warehouse:relabel-order:list'),
|
|
('WAREHOUSE_TALLY','platform:overseas-warehouse:inventory:list'),
|
|
('WAREHOUSE_TALLY','platform:overseas-warehouse:warehouse:list'),
|
|
('WAREHOUSE_TALLY','platform:overseas-warehouse:location:list'),
|
|
('WAREHOUSE_TALLY','platform:overseas-warehouse:pallet:list'),
|
|
('WAREHOUSE_TALLY','platform:overseas-business:purchase:list'),
|
|
('WAREHOUSE_TALLY','platform:overseas-business:truck:list'),
|
|
('WAREHOUSE_TALLY','platform:overseas-business:looseboard:list');
|
|
|
|
DELETE grant_row FROM iam_role_permission grant_row
|
|
JOIN iam_role role ON role.id=grant_row.role_id AND role.tenant_id=grant_row.tenant_id
|
|
JOIN iam_permission permission ON permission.id=grant_row.permission_id AND permission.tenant_id=grant_row.tenant_id
|
|
LEFT JOIN tmp_phase4_warehouse_role_permission expected
|
|
ON expected.role_code=role.role_code AND expected.permission_code=permission.permission_code
|
|
WHERE role.tenant_id=0 AND role.app_code='PLATFORM'
|
|
AND role.role_code IN ('WAREHOUSE_OPERATOR','OVERSEAS_WAREHOUSE_PDA_OPERATOR','WAREHOUSE_TALLY','CN_FIRSTLEG_PDA_OPERATOR')
|
|
AND permission.permission_code LIKE 'platform:overseas-%'
|
|
AND expected.permission_code IS NULL;
|
|
|
|
INSERT IGNORE INTO iam_role_permission (tenant_id, role_id, permission_id, created_at)
|
|
SELECT 0, role.id, permission.id, NOW(3)
|
|
FROM tmp_phase4_warehouse_role_permission expected
|
|
JOIN iam_role role ON role.tenant_id=0 AND role.app_code='PLATFORM'
|
|
AND role.role_code=expected.role_code AND role.status='ACTIVE' AND role.deleted=0
|
|
JOIN iam_permission permission ON permission.tenant_id=0 AND permission.app_code='PLATFORM'
|
|
AND permission.permission_code=expected.permission_code
|
|
AND permission.status='ACTIVE' AND permission.deleted=0;
|
|
|
|
DROP PROCEDURE IF EXISTS assert_phase4_warehouse_role_minimum;
|
|
DELIMITER $$
|
|
CREATE PROCEDURE assert_phase4_warehouse_role_minimum()
|
|
BEGIN
|
|
IF (SELECT COUNT(*) FROM tmp_phase4_warehouse_role_permission) <> 20 THEN
|
|
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT='四期仓库角色最小权限矩阵数量异常';
|
|
END IF;
|
|
IF EXISTS (SELECT 1 FROM tmp_phase4_warehouse_role_permission
|
|
WHERE permission_code REGEXP ':(create|edit|status|export|adjust|delete|review)$') THEN
|
|
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT='四期仓库只读角色错误获得写权限';
|
|
END IF;
|
|
IF EXISTS (SELECT 1 FROM tmp_phase4_warehouse_role_permission expected
|
|
LEFT JOIN iam_role role ON role.tenant_id=0 AND role.app_code='PLATFORM'
|
|
AND role.role_code=expected.role_code AND role.status='ACTIVE' AND role.deleted=0
|
|
LEFT JOIN iam_permission permission ON permission.tenant_id=0 AND permission.app_code='PLATFORM'
|
|
AND permission.permission_code=expected.permission_code AND permission.status='ACTIVE' AND permission.deleted=0
|
|
LEFT JOIN iam_role_permission grant_row ON grant_row.tenant_id=0
|
|
AND grant_row.role_id=role.id AND grant_row.permission_id=permission.id
|
|
WHERE grant_row.role_id IS NULL) THEN
|
|
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT='四期仓库角色最小权限授权不完整';
|
|
END IF;
|
|
END$$
|
|
DELIMITER ;
|
|
CALL assert_phase4_warehouse_role_minimum();
|
|
DROP PROCEDURE assert_phase4_warehouse_role_minimum;
|
|
DROP TEMPORARY TABLE tmp_phase4_warehouse_role_permission;
|
|
|
|
INSERT IGNORE INTO iam_role_permission (tenant_id, role_id, permission_id, created_at)
|
|
SELECT 0, role.id, permission.id, NOW(3)
|
|
FROM iam_role role
|
|
JOIN iam_permission permission ON permission.tenant_id=0 AND permission.app_code='PLATFORM'
|
|
AND permission.permission_code IN (
|
|
'platform:overseas-warehouse:inbound-order:fba-appointment',
|
|
'platform:overseas-warehouse:inbound-order:smart-dispatch'
|
|
)
|
|
WHERE role.tenant_id=0 AND role.app_code='PLATFORM'
|
|
AND UPPER(role.role_code)='PLATFORM_CUSTOM_ADMIN'
|
|
AND role.status='ACTIVE' AND role.deleted=0 AND permission.status='ACTIVE' AND permission.deleted=0;
|
|
|
|
-- 客户默认管理员获得当前客户海外业务入口;其他客户角色按企业实际分工授权。
|
|
INSERT IGNORE INTO iam_role_permission (tenant_id, role_id, permission_id, created_at)
|
|
SELECT 0, role.id, permission.id, NOW(3)
|
|
FROM iam_role role
|
|
JOIN iam_permission permission ON permission.tenant_id=0 AND permission.app_code='MERCHANT'
|
|
AND permission.permission_code IN (
|
|
'merchant:cross-border:procurement:list',
|
|
'merchant:cross-border:procurement:create',
|
|
'merchant:cross-border:domestic-trucking:list',
|
|
'merchant:cross-border:domestic-trucking:create',
|
|
'merchant:cross-border:domestic-trucking:edit',
|
|
'merchant:cross-border:pallet-shipping:list',
|
|
'merchant:cross-border:pallet-shipping:create',
|
|
'merchant:cross-border:pallet-shipping:edit',
|
|
'merchant:warehouse:inbound:list',
|
|
'merchant:overseas-warehouse:return-inventory:list',
|
|
'merchant:overseas-warehouse:last-mile-order:list',
|
|
'merchant:overseas-warehouse:relabel:list',
|
|
'merchant:overseas-warehouse:relabel:create',
|
|
'merchant:overseas-warehouse:relabel:files',
|
|
'merchant:overseas-warehouse:relabel:confirm',
|
|
'merchant:overseas-warehouse:transfer:list',
|
|
'merchant:overseas-warehouse:transfer:create',
|
|
'merchant:overseas-warehouse:transfer:confirm',
|
|
'merchant:overseas-warehouse:discard:list',
|
|
'merchant:overseas-warehouse:discard:create',
|
|
'merchant:overseas-warehouse:discard:cancel',
|
|
'merchant:overseas-warehouse:return-order:list',
|
|
'merchant:overseas-warehouse:return-order:create',
|
|
'merchant:overseas-warehouse:return-order:relabel'
|
|
)
|
|
WHERE role.tenant_id=0 AND role.app_code='MERCHANT' AND role.role_code='MERCHANT_OWNER'
|
|
AND role.status='ACTIVE' AND role.deleted=0 AND permission.status='ACTIVE' AND permission.deleted=0;
|
|
|
|
DROP PROCEDURE IF EXISTS assert_overseas_merchant_permissions;
|
|
DELIMITER $$
|
|
CREATE PROCEDURE assert_overseas_merchant_permissions()
|
|
BEGIN
|
|
IF (SELECT COUNT(*) FROM iam_permission
|
|
WHERE tenant_id=0 AND app_code='MERCHANT' AND status='ACTIVE' AND deleted=0
|
|
AND permission_code IN (
|
|
'merchant:cross-border:procurement:list',
|
|
'merchant:cross-border:procurement:create',
|
|
'merchant:cross-border:domestic-trucking:list',
|
|
'merchant:cross-border:domestic-trucking:create',
|
|
'merchant:cross-border:domestic-trucking:edit',
|
|
'merchant:cross-border:pallet-shipping:list',
|
|
'merchant:cross-border:pallet-shipping:create',
|
|
'merchant:cross-border:pallet-shipping:edit',
|
|
'merchant:warehouse:inbound:list',
|
|
'merchant:overseas-warehouse:return-inventory:list',
|
|
'merchant:overseas-warehouse:last-mile-order:list',
|
|
'merchant:overseas-warehouse:relabel:list',
|
|
'merchant:overseas-warehouse:relabel:create',
|
|
'merchant:overseas-warehouse:relabel:files',
|
|
'merchant:overseas-warehouse:relabel:confirm',
|
|
'merchant:overseas-warehouse:transfer:list',
|
|
'merchant:overseas-warehouse:transfer:create',
|
|
'merchant:overseas-warehouse:transfer:confirm',
|
|
'merchant:overseas-warehouse:discard:list',
|
|
'merchant:overseas-warehouse:discard:create',
|
|
'merchant:overseas-warehouse:discard:cancel',
|
|
'merchant:overseas-warehouse:return-order:list',
|
|
'merchant:overseas-warehouse:return-order:create',
|
|
'merchant:overseas-warehouse:return-order:relabel')) <> 24 THEN
|
|
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT='海外客户权限初始化失败:权限资源不完整';
|
|
END IF;
|
|
IF (SELECT COUNT(*) FROM iam_role_permission grant_row
|
|
JOIN iam_role role ON role.id=grant_row.role_id AND role.tenant_id=grant_row.tenant_id
|
|
JOIN iam_permission permission ON permission.id=grant_row.permission_id
|
|
WHERE role.tenant_id=0 AND role.app_code='MERCHANT' AND role.role_code='MERCHANT_OWNER'
|
|
AND role.status='ACTIVE' AND role.deleted=0
|
|
AND permission.tenant_id=0 AND permission.app_code='MERCHANT'
|
|
AND permission.status='ACTIVE' AND permission.deleted=0
|
|
AND permission.permission_code IN (
|
|
'merchant:cross-border:procurement:list',
|
|
'merchant:cross-border:procurement:create',
|
|
'merchant:cross-border:domestic-trucking:list',
|
|
'merchant:cross-border:domestic-trucking:create',
|
|
'merchant:cross-border:domestic-trucking:edit',
|
|
'merchant:cross-border:pallet-shipping:list',
|
|
'merchant:cross-border:pallet-shipping:create',
|
|
'merchant:cross-border:pallet-shipping:edit',
|
|
'merchant:warehouse:inbound:list',
|
|
'merchant:overseas-warehouse:return-inventory:list',
|
|
'merchant:overseas-warehouse:last-mile-order:list',
|
|
'merchant:overseas-warehouse:relabel:list',
|
|
'merchant:overseas-warehouse:relabel:create',
|
|
'merchant:overseas-warehouse:relabel:files',
|
|
'merchant:overseas-warehouse:relabel:confirm',
|
|
'merchant:overseas-warehouse:transfer:list',
|
|
'merchant:overseas-warehouse:transfer:create',
|
|
'merchant:overseas-warehouse:transfer:confirm',
|
|
'merchant:overseas-warehouse:discard:list',
|
|
'merchant:overseas-warehouse:discard:create',
|
|
'merchant:overseas-warehouse:discard:cancel',
|
|
'merchant:overseas-warehouse:return-order:list',
|
|
'merchant:overseas-warehouse:return-order:create',
|
|
'merchant:overseas-warehouse:return-order:relabel')) <> 24 THEN
|
|
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT='海外客户权限初始化失败:客户默认管理员授权不完整';
|
|
END IF;
|
|
END$$
|
|
DELIMITER ;
|
|
CALL assert_overseas_merchant_permissions();
|
|
DROP PROCEDURE assert_overseas_merchant_permissions;
|
|
|
|
-- Tail-leg order actions are available to the current platform administrator role.
|
|
INSERT IGNORE INTO iam_role_permission (tenant_id, role_id, permission_id, created_at)
|
|
SELECT 0, role.id, permission.id, NOW(3)
|
|
FROM iam_role role
|
|
JOIN iam_permission permission ON permission.tenant_id=0 AND permission.app_code='PLATFORM'
|
|
AND permission.permission_code IN (
|
|
'platform:overseas-warehouse:last-mile-order:edit',
|
|
'platform:overseas-warehouse:inbound-order:create',
|
|
'platform:overseas-warehouse:warehouse-transfer:approve'
|
|
)
|
|
WHERE role.tenant_id=0 AND role.app_code='PLATFORM'
|
|
AND UPPER(role.role_code) IN ('PLATFORM_ADMIN','PLATFORM_CUSTOM_ADMIN')
|
|
AND role.status='ACTIVE' AND role.deleted=0 AND permission.status='ACTIVE' AND permission.deleted=0;
|
|
|
|
|
|
-- 转仓审核权限与管理员授权必须实际落库,不能被其他权限的 ID 冲突静默吞掉。
|
|
DROP PROCEDURE IF EXISTS assert_warehouse_transfer_approval_permission;
|
|
DELIMITER $
|
|
CREATE PROCEDURE assert_warehouse_transfer_approval_permission()
|
|
BEGIN
|
|
IF (SELECT COUNT(*) FROM iam_permission WHERE id=5107003 AND tenant_id=0
|
|
AND permission_code='platform:overseas-warehouse:warehouse-transfer:approve'
|
|
AND permission_type='BUTTON' AND status='ACTIVE' AND deleted=0) <> 1 THEN
|
|
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT='转仓审核权限初始化失败:权限ID或编码冲突';
|
|
END IF;
|
|
IF EXISTS (SELECT 1 FROM iam_role role WHERE role.tenant_id=0 AND role.app_code='PLATFORM'
|
|
AND UPPER(role.role_code) IN ('PLATFORM_ADMIN','PLATFORM_CUSTOM_ADMIN')
|
|
AND role.status='ACTIVE' AND role.deleted=0
|
|
AND NOT EXISTS (SELECT 1 FROM iam_role_permission grant_row
|
|
WHERE grant_row.tenant_id=0 AND grant_row.role_id=role.id AND grant_row.permission_id=5107003)) THEN
|
|
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT='转仓审核权限初始化失败:平台管理员授权缺失';
|
|
END IF;
|
|
END$
|
|
DELIMITER ;
|
|
CALL assert_warehouse_transfer_approval_permission();
|
|
DROP PROCEDURE assert_warehouse_transfer_approval_permission;
|
|
|
|
-- PLATFORM_CUSTOM_ADMIN needs access to the overseas outbound and delivery lists shown in the admin navigation.
|
|
INSERT IGNORE INTO iam_role_permission (tenant_id, role_id, permission_id, created_at)
|
|
SELECT 0, role.id, permission.id, NOW(3)
|
|
FROM iam_role role
|
|
JOIN iam_permission permission ON permission.tenant_id=0 AND permission.app_code='PLATFORM'
|
|
AND permission.permission_code IN (
|
|
'platform:overseas-warehouse:outbound:list',
|
|
'platform:overseas-warehouse:outbound:create',
|
|
'platform:overseas-warehouse:delivery:list'
|
|
)
|
|
WHERE role.tenant_id=0 AND role.app_code='PLATFORM'
|
|
AND UPPER(role.role_code)='PLATFORM_CUSTOM_ADMIN'
|
|
AND role.status='ACTIVE' AND role.deleted=0 AND permission.status='ACTIVE' AND permission.deleted=0;
|