优化
This commit is contained in:
@@ -83,7 +83,7 @@ CREATE TABLE IF NOT EXISTS ord_order_fulfillment_split (
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY uk_order_split_operation (tenant_id, operation_id, split_role),
|
||||
UNIQUE KEY uk_order_split_idempotency (tenant_id, parent_order_id, idempotency_key, split_role),
|
||||
UNIQUE KEY uk_order_split_child (tenant_id, child_order_id),
|
||||
UNIQUE KEY uk_order_split_child_role (tenant_id, child_order_id, split_role),
|
||||
KEY idx_order_split_parent (tenant_id, parent_order_id, created_at, id),
|
||||
KEY idx_order_split_source (tenant_id, source_order_id, split_role),
|
||||
KEY idx_order_split_container (tenant_id, container_booking_id, created_at, id),
|
||||
@@ -95,6 +95,36 @@ CREATE TABLE IF NOT EXISTS ord_order_fulfillment_split (
|
||||
)
|
||||
) ENGINE=InnoDB COMMENT='父订单到子订单的装柜数量及柜次关联台账';
|
||||
|
||||
DROP TRIGGER IF EXISTS trg_order_fulfillment_split_insert;
|
||||
DROP TRIGGER IF EXISTS trg_order_fulfillment_split_update;
|
||||
DELIMITER $$
|
||||
CREATE TRIGGER trg_order_fulfillment_split_insert
|
||||
BEFORE INSERT ON ord_order_fulfillment_split FOR EACH ROW
|
||||
BEGIN
|
||||
IF NEW.split_role NOT IN ('LOADED','REMAINDER') THEN
|
||||
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT='订单履约分片角色非法';
|
||||
END IF;
|
||||
IF NEW.split_role='LOADED' AND NEW.child_order_id<>NEW.source_order_id THEN
|
||||
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT='实装台账必须由来源订单自身承接';
|
||||
END IF;
|
||||
IF NEW.split_role='REMAINDER'
|
||||
AND (NEW.child_order_id=NEW.source_order_id OR NEW.remaining_package_count=0) THEN
|
||||
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT='余量台账必须指向有剩余数量的新子订单';
|
||||
END IF;
|
||||
END$$
|
||||
CREATE TRIGGER trg_order_fulfillment_split_update
|
||||
BEFORE UPDATE ON ord_order_fulfillment_split FOR EACH ROW
|
||||
BEGIN
|
||||
IF NOT (NEW.tenant_id<=>OLD.tenant_id)
|
||||
OR NOT (NEW.parent_order_id<=>OLD.parent_order_id)
|
||||
OR NOT (NEW.source_order_id<=>OLD.source_order_id)
|
||||
OR NOT (NEW.child_order_id<=>OLD.child_order_id)
|
||||
OR NOT (NEW.split_role<=>OLD.split_role) THEN
|
||||
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT='订单履约分片来源、子片与角色不可修改';
|
||||
END IF;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS ord_order_party (
|
||||
id BIGINT UNSIGNED NOT NULL COMMENT '参与方快照ID',
|
||||
tenant_id BIGINT UNSIGNED NOT NULL COMMENT '数据所属租户ID',
|
||||
|
||||
Reference in New Issue
Block a user