问题: 当商品设置限购为 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服务