仓库主管原话:「备注里写了加急的,你们后台能不能筛出来?」能。订单备注能存,列表却筛不出来。我二开了一套规则:下单时扫买家备注,命中关键字就写订单标签。不是从零做订单系统,是给现有订单加筛选维度。
规则表
CREATE TABLE `order_remark_tag_rule` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`keyword` varchar(32) NOT NULL,
`tag_name` varchar(32) NOT NULL,
`status` tinyint NOT NULL DEFAULT 1,
PRIMARY KEY (`id`)
);
后台维护:加急、礼盒、勿放门口……运营自己加,别找程序员改代码。
能直接粘的打标逻辑
下单事务里,备注校验之后:
<?php
$note = $orderData['buyer_note'] ?? '';
$rules = Db::name('order_remark_tag_rule')->where('status', 1)->select();
$tags = [];
foreach ($rules as $rule) {
if ($note !== '' && mb_strpos($note, $rule['keyword']) !== false) {
$tags[] = $rule['tag_name'];
}
}
if ($tags) {
Db::name('order_tag')->insertAll(array_map(fn($t) => [
'order_id' => $orderId,
'tag' => $t,
], $tags));
}
列表要能筛
Admin 订单列表加「标签」列和多选筛选。仓管只勾「加急」,别让他肉眼翻三百页。肉眼翻,迟早漏。漏一单加急,主管来找你。
抬杠点:大小写和全角
「加急」和「加急!」算不算?我默认包含匹配,全角半角统一 trim。规则写进帮助:关键字尽量短,别写整句。整句匹配率太低。
历史订单
上线前的老单不补跑。运营接受。不接受就写一次性脚本扫 buyer_note。脚本跑完删。别留 cron 扫历史,没意义还慢。
和人工打标共存
自动打标不删人工标。仓库主管还能手动加「VIP 包装」。两种标签不同颜色。颜色区分比文字区分快。仓管时间贵。贵就要省。关键字规则每月让运营 review 一次。备注用语会变,规则不变就慢慢失效。失效了仓管又说筛不出来。
误匹配
关键字「急」可能匹配「紧急联系人」。规则尽量用完整词「加急」而不是单字。单字误伤率高。误伤了仓管按错优先级发货。错优先级比不打标更麻烦。更麻烦。规则上线前让运营过一遍现有备注样本,看误伤率。样本过一遍,比上线后改规则便宜。便宜很多。