后台把Wholesale组价格从80改成75,保存成功,登录批发客户后商品页仍是80;无痕游客价格却正常。Group Price最终进入价格索引,并按Website与Customer Group形成维度,错一层就会读到旧值。
确认源数据和索引结果
SELECT * FROM catalog_product_entity_tier_price WHERE entity_id=<product_id> ORDER BY website_id,customer_group_id,qty; SELECT entity_id,customer_group_id,website_id,price,final_price,min_price FROM catalog_product_index_price WHERE entity_id=<product_id> ORDER BY website_id,customer_group_id;
后台的Group Price在数据库里通常与tier price共用表。核对customer_group_id、website_id、qty和all_groups,尤其不要把All Websites的旧行与指定Website的新行同时保留。
只重建相关Indexer
bin/magento indexer:status catalog_product_price bin/magento indexer:reset catalog_product_price bin/magento indexer:reindex catalog_product_price
若索引设为Update by Schedule,检查changelog和cron是否消费。reset前先确认没有正在运行的价格索引进程。
数据库已是75,页面还是80
用curl比较匿名和登录响应,再检查Varnish或FPC是否把客户组上下文混在一起。自定义登录、SSO或headless前端如果没有正确更新customer-data,可能仍展示旧缓存。
- 登录后customer_group_id是否正确;
- X-Magento-Vary是否在登录后变化;
- price-box JSON中的amount是75还是80;
- GraphQL请求是否携带正确customer token;
- CDN是否错误缓存带Authorization的请求。
验收
用General、Wholesale和游客三个会话同时打开同一SKU,并测试两个Website、可配置子商品和购物车价格。商品页、分类页、搜索结果、购物车和GraphQL返回必须一致;只修商品页模板不算完成。

