增加分区功能

This commit is contained in:
wuweihua
2026-09-15 10:28:07 +08:00
parent ddbbd73ba2
commit c28b5a2b6e
26 changed files with 1512 additions and 1215 deletions
+43
View File
@@ -0,0 +1,43 @@
-- ----------------------------
-- Zone management: bms_region -> prc_zone -> prc_zone_detail
-- Country master is bms_region (no prc_zone_country)
-- charset: utf8mb4
-- ----------------------------
SET FOREIGN_KEY_CHECKS = 0;
DROP TABLE IF EXISTS prc_zone_detail;
DROP TABLE IF EXISTS prc_zone;
DROP TABLE IF EXISTS prc_zone_country;
DROP TABLE IF EXISTS xtd_zonecountry;
DROP TABLE IF EXISTS xtd_zone_division;
DROP TABLE IF EXISTS xtd_zone_scheme;
SET FOREIGN_KEY_CHECKS = 1;
CREATE TABLE IF NOT EXISTS prc_zone (
zone_id BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT 'zone id',
region_id BIGINT(20) NOT NULL COMMENT 'bms_region.region_id',
country_code VARCHAR(10) NOT NULL COMMENT 'ISO2 country code from bms_region',
zone_code VARCHAR(50) NOT NULL COMMENT 'zone code e.g. 1',
zone_name VARCHAR(100) DEFAULT NULL COMMENT 'display name e.g. AU(1)',
zone_sort INT(11) DEFAULT 0 COMMENT 'sort',
remark VARCHAR(500) DEFAULT NULL COMMENT 'remark',
create_time DATETIME DEFAULT NULL COMMENT 'created at',
update_time DATETIME DEFAULT NULL COMMENT 'updated at',
PRIMARY KEY (zone_id),
UNIQUE KEY uk_zone_region_code (region_id, zone_code),
INDEX idx_zone_region_id (region_id),
INDEX idx_zone_country_code (country_code)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='zone under bms_region';
CREATE TABLE IF NOT EXISTS prc_zone_detail (
detail_id BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT 'detail id',
zone_id BIGINT(20) NOT NULL COMMENT 'zone id',
postcode VARCHAR(32) NOT NULL COMMENT 'postcode',
create_time DATETIME DEFAULT NULL COMMENT 'created at',
update_time DATETIME DEFAULT NULL COMMENT 'updated at',
PRIMARY KEY (detail_id),
INDEX idx_zd_zone_id (zone_id),
INDEX idx_zd_postcode (postcode),
UNIQUE KEY uk_zd_zone_postcode (zone_id, postcode),
CONSTRAINT fk_zd_zone FOREIGN KEY (zone_id) REFERENCES prc_zone (zone_id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='zone postcode detail';
@@ -0,0 +1,16 @@
-- Add country_code to existing prc_zone (skip if re-running full zone_country.sql)
-- charset: utf8mb4
ALTER TABLE prc_zone
ADD COLUMN country_code VARCHAR(10) NULL COMMENT 'ISO2 country code from bms_region' AFTER region_id;
UPDATE prc_zone z
INNER JOIN bms_region r ON r.region_id = z.region_id
SET z.country_code = r.country_code_2
WHERE z.country_code IS NULL OR z.country_code = '';
ALTER TABLE prc_zone
MODIFY COLUMN country_code VARCHAR(10) NOT NULL COMMENT 'ISO2 country code from bms_region';
ALTER TABLE prc_zone
ADD INDEX idx_zone_country_code (country_code);
+2 -44
View File
@@ -4,50 +4,8 @@
-- menu_id: 2100-2123 (2115-2123 reserved)
-- ----------------------------
CREATE TABLE IF NOT EXISTS xtd_zone_scheme (
zs_id BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT 'zone scheme id',
zs_name VARCHAR(100) NOT NULL COMMENT 'scheme name',
ss_code VARCHAR(20) NOT NULL DEFAULT 'on' COMMENT 'status on/off',
pg_code VARCHAR(50) DEFAULT NULL COMMENT 'product group code',
sn_id BIGINT(20) DEFAULT NULL COMMENT 'service channel id',
zs_note VARCHAR(500) DEFAULT NULL COMMENT 'note',
tms_id BIGINT(20) DEFAULT NULL COMMENT 'tenant id',
created_by VARCHAR(64) DEFAULT '' COMMENT 'created by',
create_time DATETIME DEFAULT NULL COMMENT 'created at',
updated_by VARCHAR(64) DEFAULT '' COMMENT 'updated by',
update_time DATETIME DEFAULT NULL COMMENT 'updated at',
PRIMARY KEY (zs_id),
INDEX idx_zs_ss_code (ss_code),
INDEX idx_zs_tms_id (tms_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='zone scheme';
CREATE TABLE IF NOT EXISTS xtd_zone_division (
zd_id BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT 'division id globally unique',
zs_id BIGINT(20) NOT NULL COMMENT 'scheme id',
zd_sort INT(11) DEFAULT 0 COMMENT 'sort',
zd_code VARCHAR(50) DEFAULT NULL COMMENT 'division code',
zn_name VARCHAR(100) DEFAULT NULL COMMENT 'name',
zn_ename VARCHAR(100) DEFAULT NULL COMMENT 'english name',
zn_note VARCHAR(500) DEFAULT NULL COMMENT 'note',
create_time DATETIME DEFAULT NULL COMMENT 'created at',
update_time DATETIME DEFAULT NULL COMMENT 'updated at',
PRIMARY KEY (zd_id),
INDEX idx_zd_zs_id (zs_id),
CONSTRAINT fk_zd_zs FOREIGN KEY (zs_id) REFERENCES xtd_zone_scheme (zs_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='zone division';
CREATE TABLE IF NOT EXISTS xtd_zonecountry (
zc_id BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT 'zone country id',
zd_id BIGINT(20) NOT NULL COMMENT 'division id',
country_code CHAR(2) NOT NULL COMMENT 'ISO2 country code',
zc_dividekind VARCHAR(10) NOT NULL DEFAULT 'C' COMMENT 'divide kind default C',
create_time DATETIME DEFAULT NULL COMMENT 'created at',
update_time DATETIME DEFAULT NULL COMMENT 'updated at',
PRIMARY KEY (zc_id),
INDEX idx_zc_zd_id (zd_id),
INDEX idx_zc_country (country_code),
CONSTRAINT fk_zc_zd FOREIGN KEY (zd_id) REFERENCES xtd_zone_division (zd_id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='zone country';
-- Zone tables moved to zone_country.sql (prc_zone_country / prc_zone / prc_zone_detail)
-- Run: bms-back/sql/price/zone_country.sql
CREATE TABLE IF NOT EXISTS prc_weight_section_template (
wst_id BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT 'weight template id',