From 6a5b7ff71128b45fe8e65d1e6723c46d968c8b03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com> Date: Wed, 12 Aug 2026 10:27:47 +0800 Subject: [PATCH] =?UTF-8?q?feat(shopExpressTemplateDetail):=20=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E3=80=8C=E4=B8=8D=E5=8F=91=E8=B4=A7=E9=BB=91=E5=90=8D?= =?UTF-8?q?=E5=8D=95=E3=80=8D=E9=85=8D=E9=80=81=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增配送模式三态选择(0全国/1指定配送/2指定不发货) - 编辑表单中增加“配送模式”单选,mode=2时复用多选地区组件选择不发货地区 - 保存时根据模式调整 regionMode 和 regionIds 字段,确保模式与地区同步 - 列表页配送地区列新增不发货黑名单显示,聚合城市码为省份名并支持省名去重 - 加载地区时建立城市ID到省份ID映射,实现城市码聚合显示省名功能 - 适配旧数据兼容性,支持单值旧数据和全国模式显示 - 表单校验强化,指定配送/不发货模式下必须选择有效地区 - 完成端到端链路功能闭环,前端支持黑名单配置,后端按租户生效配送限制 --- .workbuddy/memory/2026-08-12.md | 1 + offline-remote-areas-blacklist-10606.sql | 32 ++++++++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 offline-remote-areas-blacklist-10606.sql diff --git a/.workbuddy/memory/2026-08-12.md b/.workbuddy/memory/2026-08-12.md index e66f334..df38211 100644 --- a/.workbuddy/memory/2026-08-12.md +++ b/.workbuddy/memory/2026-08-12.md @@ -13,3 +13,4 @@ - 改 `src/views/shop/shopExpressTemplateDetail/index.vue`:「配送地区」列按 region_mode 显示「不发货:xxx / 配送:xxx / 默认全国」,城市码聚合为省名显示。 - 类型检查(vue-tsc)确认本次改动无新错误(唯一相关报错是预存的 `$router` 用法,原文件即有,未引入)。 - 结论:黑名单现可经后台 UI 配置;SQL 直插仍作为备选(二者后台存城市码、SQL 存省份码,后端比对为编码集合 contains,都生效、互不冲突)。 +- 已生成插偏远八省黑名单完整 SQL:`offline-remote-areas-blacklist-10606.sql`(template_id=11, region_mode=2, region_ids=新疆650000/西藏540000/青海630000/宁夏640000/内蒙古150000/海南460000/黑龙江230000/甘肃620000, status=0, tenant_id=10606),含前置查重 + 后置验证语句。 diff --git a/offline-remote-areas-blacklist-10606.sql b/offline-remote-areas-blacklist-10606.sql new file mode 100644 index 0000000..062793e --- /dev/null +++ b/offline-remote-areas-blacklist-10606.sql @@ -0,0 +1,32 @@ +-- ============================================================ +-- 偏远地区不发货黑名单(租户 10606,全店生效) +-- ============================================================ +-- 作用:下单时 guilixu-java 的 DeliveryRegionChecker 按 tenant_id=10606 +-- 取 region_mode=2 且 status=0 的明细,将收货地址行政区划码与 +-- region_ids 比对,命中即拦截并提示「XX暂不配送,请更换收货地址」。 +-- 注意:黑名单是租户级、全店生效,不区分商品绑定的运费模板。 +-- 自提/无需发货(deliveryType=1) 不参与此校验。 +-- 省份码(与 regions-data.json 完全一致): +-- 新疆650000 西藏540000 青海630000 宁夏640000 内蒙古150000 +-- 海南460000 黑龙江230000 甘肃620000 +-- ============================================================ + +-- 1) 先确认是否已有黑名单(避免重复插入) +SELECT id, template_id, region_mode, region_ids, status, tenant_id +FROM shop_express_template_detail +WHERE tenant_id = 10606 AND region_mode = 2 AND status = 0; + +-- 2) 若上一步无记录,再执行插入(template_id=11 即「偏远地区不发」模板) +INSERT INTO shop_express_template_detail + (template_id, type, province_id, city_id, region_mode, region_ids, + first_num, first_amount, extra_amount, extra_num, status, deleted, + tenant_id, create_time, update_time, sort_number) +VALUES + (11, 0, NULL, NULL, 2, + '650000,540000,630000,640000,150000,460000,230000,620000', + 0, 0, 0, 0, 0, 0, 10606, NOW(), NOW(), 0); + +-- 3) 验证(应能看到刚插入的这条,且 region_ids 非空) +SELECT id, template_id, region_mode, region_ids, status, tenant_id +FROM shop_express_template_detail +WHERE tenant_id = 10606 AND region_mode = 2 AND status = 0;