问题: 当商品设置限购为 1 时,够买数量未超过限购,但是还是提示超出限购数量
修复方法:
修改代码路径:
app\common\repositories\store\order\StoreOrderCreateRepository.php
修改代码一:
$is_pays = array_unique(array_column($merchantCart['list'],'is_pay'));
if ( count($is_pays) > 1 || $is_pays[0] == 1) throw new ValidateException('存在已购买商品请重新添加购物车');
// 获取每个商品的ID数组
$product_ids = array_column($merchantCart['list'],'product_id');
$num_data = array_column($merchantCart['list'],'cart_num');
$id_num = [];
// 获取每个商品ID出现的次数及购买数量,作为验证限购数量使用
foreach ($product_ids as $key => $value) {
$id_num[$value] = isset($id_num[$value]) ? $id_num[$value] + $num_data[$key] : $num_data[$key];
}
$countList = count($merchantCart['list']);
修改后的样子:
修改代码二:
$count = $id_num[$cart['product_id']];
if (($count) > $cart['product']['once_max_count']) {
throw new ValidateException('[超出限购总数:' . $cart['product']['once_max_count'] . ']' . mb_substr($cart['product']['store_name'], 0, 10) . '...');
}
$pay_count = $storeOrderRepository->getMaxCountNumber($cart['uid'], $cart['product_id']);
if (($count + $pay_count) > $cart['product']['once_max_count']) {
throw new ValidateException('[超出限购总数:' . $cart['product']['once_max_count'] . ']' . mb_substr($cart['product']['store_name'], 0, 10) . '...');
}
修改后的样子:
最后:修改完了需要重启swoole服务
{{item.user_info.nickname ? item.user_info.nickname : item.user_name}}
作者 管理员 企业
{{itemf.name}}
{{itemc.user_info.nickname}}
{{itemc.user_name}}
回复 {{itemc.comment_user_info.nickname}}
{{itemf.name}}