6a5b7ff711
- 新增配送模式三态选择(0全国/1指定配送/2指定不发货) - 编辑表单中增加“配送模式”单选,mode=2时复用多选地区组件选择不发货地区 - 保存时根据模式调整 regionMode 和 regionIds 字段,确保模式与地区同步 - 列表页配送地区列新增不发货黑名单显示,聚合城市码为省份名并支持省名去重 - 加载地区时建立城市ID到省份ID映射,实现城市码聚合显示省名功能 - 适配旧数据兼容性,支持单值旧数据和全国模式显示 - 表单校验强化,指定配送/不发货模式下必须选择有效地区 - 完成端到端链路功能闭环,前端支持黑名单配置,后端按租户生效配送限制
2.5 KiB
2.5 KiB
2026-08-12 工作记录
偏远地区不发货 — 如何让远端用户无法下单(tenant 10606)
- 用户已
UPDATE shop_goods set express_template_id=11 WHERE express_template_id IS NULL and tenant_id=10606,以为这就禁了偏远地区下单。实际结论:这条只绑运费模板(算运费用),没有生成「不发货黑名单」数据,不会拦截下单。 - 后端拦截已端到端接通:
OrderBusinessService.createOrder→validateDeliveryRegionIfNeeded(第87行) →DeliveryRegionChecker(按 tenant_id 查shop_express_template_detail中 region_mode=2 且 status=0 的明细,收货地址行政区划码命中即抛"XX暂不配送,请更换收货地址")。 - 链路确认:guilixu-taro
BaseUrl=https://shop-api.websoft.top/api、TenantId=10606,下单走 guilixu-java(db_guilixu);单租户下买家 tenantId=10606,校验能命中黑名单。✅ - admin 前端明细编辑表单未暴露 regionMode=2(只 0/1),故黑名单只能 SQL 直插
shop_express_template_detail(region_mode=2, region_ids=偏远省6位码逗号串, status=0, tenant_id=10606, template_id=11)。已给 INSERT 模板与省码清单。 - 注意:黑名单是租户级、全店生效(不区分绑定哪个模板);自提(deliveryType=1)/selfTakeMerchantId 下单跳过校验。
补上后台「不发货黑名单」UI 模式(已交付)
- 改
src/views/shop/shopExpressTemplateDetail/components/shopExpressTemplateDetailEdit.vue:新增「配送模式」三态 radio(0全国/1指定配送/2指定不发货);mode=2 复用RegionMultiSelect选地区,保存写 region_mode=2 + region_ids(城市码逗号串);回显按 region_mode 初始化。 - 改
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),含前置查重 + 后置验证语句。