fix(admin): 让后台「销量浮动」设置真正生效
资源 metabox 和快捷编辑都能设置「销量浮动」(pay_count),但设了完全 不起作用——所有读取方用的是另一个键 virtual_sales(§3.8 电商的虚拟 销量加成),pay_count 只被写、从未被读。 新增统一读取口径 aksrt_get_content_sales_count($post, $pay_meta): 真实订单销量 + pay_count,并把四处各自拼装销量的地方全部接到这个 口径上: - aksrt_get_download_box_meta() 的 sales_count(内容帖) - aksrt_get_resource_meta() 的 sales_count(资源帖) - 付费墙 aksrt_get_paywall_html() 的已售徽标 - 付费盒 aksrt_get_paid_box_html() 的已售徽标 - 后台「所有文章」销售数据列的销量 此前资源帖的 sales_count 走的是「虚拟销量 + 下载量」这条与内容帖 不一致的口径,现统一。 快捷编辑的 pay_count 运算本是整数加减 + max(0,...) 归零,与读取口径 一致,无需改动。 _aksrt_sales_volume 保持不变,它仍是订单流水累加的副本;列表列取 订单表统计与 meta 副本的较大值再加浮动量,避免两条链路数字打架。 新增 sales-volume-float-contract.test.cjs 4 项,锁住「pay_count 必须 被销量读取方消费」这一契约,防止以后又被改成摆设。 验证:node --test tests/widget-system/*.test.cjs 449 项全部通过 (原有 445 项 + 新增 4 项);php -l 三个 PHP 文件无语法错误。
This commit is contained in:
@@ -166,8 +166,11 @@ class PostListEnhance {
|
||||
$price_text = $this->currency_symbol() . ':' . (string) ($pay_meta['price'] ?? '0.00');
|
||||
}
|
||||
|
||||
$sales_volume = max(0, (int) get_post_meta($post_id, \AKSRT\Core\DomainModel::RESOURCE_SALES_VOLUME_KEY, true));
|
||||
// 列表列与前台同一口径:真实订单 + 后台「销量浮动」(pay_count)。
|
||||
// 真实销量取订单表统计,_aksrt_sales_volume 只是订单流水累加的副本。
|
||||
$real_sales = $this->real_sales_count($post_id);
|
||||
$meta_sales = max(0, (int) get_post_meta($post_id, \AKSRT\Core\DomainModel::RESOURCE_SALES_VOLUME_KEY, true));
|
||||
$sales_volume = max($real_sales, $meta_sales) + max(0, (int) ($pay_meta['pay_count'] ?? 0));
|
||||
$real_html = $real_sales > 0
|
||||
? ' <a title="' . esc_attr__('点击查看销售明细', 'aksrt') . '" href="' . esc_url($this->orders_url($post_id)) . '">[' . esc_html(sprintf(__('真实销量%s', 'aksrt'), $real_sales)) . ']</a>'
|
||||
: '';
|
||||
|
||||
Reference in New Issue
Block a user