【产品名称】:CRMEB PRO版 / 多店版
【产品版本】:v2.3.1(20221122)
【部署方式】:linux / docker
【部署环境】:本地环境 / 线上环境
【php版本】:7.4
【Mysql版本】:5.8
【使用终端】:小程序
商品详情页有销量
拼团详情页累计销量为0
查看前端代码读取的 storeInfo.total 字段
查看后端代码有关联查询 with(['total']),在 app/model/activity/combination/StoreCombination.php 大概136行
/**
* 一对一关联
* 商品关联商品商品详情
* @return \think\model\relation\HasOne
*/
public function total()
{
return $this->hasOne(StoreProduct::class, 'id', 'product_id')->where('is_show', 1)->where('is_del', 0)->field(['SUM(sales+ficti) as total', 'id', 'price'])->bind([
'total' => 'total', 'product_price' => 'price'
]);
}
函数名和返回的bind属性total重名了,在model返回中被hidden掉了
修复如下:
修改 public function total() 为 public function totals()
修改 app/services/activity/combination/StoreCombinationServices.php 文件 combinationDetail 函数(大概375行)
原始代码:
$storeInfo = $this->dao->getOne(['id' => $id], '*', ['descriptions', 'total']);
修改为:
$storeInfo = $this->dao->getOne(['id' => $id], '*', ['descriptions', 'totals']);
修改 app/dao/activity/combination/StoreCombinationDao.php 文件 validProduct 函数 (大概137行)
原始代码:
return $this->search($where)->where('id', $id)->with(['total'])->field($field)->order('add_time desc')->find();
修改为:
return $this->search($where)->where('id', $id)->with(['totals'])->field($field)->order('add_time desc')->find();
修改后可以正常显示累计销量
最终修复还是已官方修复为准,以上为本人临时的修补方案。