Files
guilixu-admin/.workbuddy/memory/2026-08-12.md
T
gxwebsoft 6a5b7ff711 feat(shopExpressTemplateDetail): 支持「不发货黑名单」配送模式
- 新增配送模式三态选择(0全国/1指定配送/2指定不发货)
- 编辑表单中增加“配送模式”单选,mode=2时复用多选地区组件选择不发货地区
- 保存时根据模式调整 regionMode 和 regionIds 字段,确保模式与地区同步
- 列表页配送地区列新增不发货黑名单显示,聚合城市码为省份名并支持省名去重
- 加载地区时建立城市ID到省份ID映射,实现城市码聚合显示省名功能
- 适配旧数据兼容性,支持单值旧数据和全国模式显示
- 表单校验强化,指定配送/不发货模式下必须选择有效地区
- 完成端到端链路功能闭环,前端支持黑名单配置,后端按租户生效配送限制
2026-08-12 10:27:47 +08:00

2.5 KiB
Raw Blame History

2026-08-12 工作记录

偏远地区不发货 — 如何让远端用户无法下单(tenant 10606

  • 用户已 UPDATE shop_goods set express_template_id=11 WHERE express_template_id IS NULL and tenant_id=10606,以为这就禁了偏远地区下单。实际结论:这条只绑运费模板(算运费用),没有生成「不发货黑名单」数据,不会拦截下单
  • 后端拦截已端到端接通:OrderBusinessService.createOrdervalidateDeliveryRegionIfNeeded(第87行) → DeliveryRegionChecker(按 tenant_id 查 shop_express_template_detail 中 region_mode=2 且 status=0 的明细,收货地址行政区划码命中即抛"XX暂不配送,请更换收货地址")。
  • 链路确认:guilixu-taro BaseUrl=https://shop-api.websoft.top/apiTenantId=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,都生效、互不冲突)。
  • 已生成插偏远八省黑名单完整 SQLoffline-remote-areas-blacklist-10606.sqltemplate_id=11, region_mode=2, region_ids=新疆650000/西藏540000/青海630000/宁夏640000/内蒙古150000/海南460000/黑龙江230000/甘肃620000, status=0, tenant_id=10606),含前置查重 + 后置验证语句。