问题: 当商品设置限购为 1 时,够买数量未超过限购,但是还是提示超出限购数量
修复方法:
修改代码路径:
app\common\repositories\store\order\StoreOrderCreateRepository.php
 修改代码一: i s p a y s = a r r a y u n i q u e ( a r r a y c o l u m n ( is_pays = array_unique(array_column( ispays=arrayunique(arraycolumn(merchantCart[‘list’],‘is_pay’));
 if ( count($is_pays) > 1 || $is_pays[0] == 1) throw new ValidateException(‘存在已购买商品请重新添加购物车’);
 // 获取每个商品的ID数组
  p r o d u c t i d s = a r r a y c o l u m n ( product_ids = array_column( productids=arraycolumn(merchantCart[‘list’],‘product_id’);
  n u m d a t a = a r r a y c o l u m n ( num_data = array_column( numdata=arraycolumn(merchantCart[‘list’],‘cart_num’);
  i d n u m = [ ] ; / / 获取每个商品 I D 出现的次数及购买数量,作为验证限购数量使用 f o r e a c h ( id_num = []; // 获取每个商品ID出现的次数及购买数量,作为验证限购数量使用 foreach ( idnum=[];//获取每个商品ID出现的次数及购买数量,作为验证限购数量使用foreach(product_ids as $key => $value) {
  i d n u m [ id_num[ idnum[value] = isset( i d n u m [ id_num[ idnum[value]) ?  i d n u m [ id_num[ idnum[value] +  n u m d a t a [ num_data[ numdata[key] :  n u m d a t a [ num_data[ numdata[key];
 }
  c o u n t L i s t = c o u n t ( countList = count( countList=count(merchantCart[‘list’]);
 修改后的样子:
 修改代码二:
$count =  i d n u m [ id_num[ idnum[cart[‘product_id’]];
 if (($count) > $cart[‘product’][‘once_max_count’]) {
 throw new ValidateException(‘[超出限购总数:’ .  c a r t [ ′ p r o d u c t ′ ] [ ′ o n c e m a x c o u n t ′ ] . ′ ] ′ . m b s u b s t r ( cart['product']['once_max_count'] . ']' . mb_substr( cart[′product′][′oncemaxcount′].′]′.mbsubstr(cart[‘product’][‘store_name’], 0, 10) . ‘…’);
 }
 $pay_count =  s t o r e O r d e r R e p o s i t o r y − > g e t M a x C o u n t N u m b e r ( storeOrderRepository->getMaxCountNumber( storeOrderRepository−>getMaxCountNumber(cart[‘uid’],  c a r t [ ′ p r o d u c t i d ′ ] ) ; i f ( ( cart['product_id']); if (( cart[′productid′]);if((count + $pay_count) > $cart[‘product’][‘once_max_count’]) {
 throw new ValidateException(‘[超出限购总数:’ .  c a r t [ ′ p r o d u c t ′ ] [ ′ o n c e m a x c o u n t ′ ] . ′ ] ′ . m b s u b s t r ( cart['product']['once_max_count'] . ']' . mb_substr( cart[′product′][′oncemaxcount′].′]′.mbsubstr(cart[‘product’][‘store_name’], 0, 10) . ‘…’);
 }
 修改后的样子:
 最后:修改完了需要重启swoole服务
