Browse Source

用户申请的退款释放库存

master
weigang 5 years ago
parent
commit
b50ec7991e
  1. 16
      app/Service/v3/Implementations/OrderOnlineService.php

16
app/Service/v3/Implementations/OrderOnlineService.php

@ -639,6 +639,22 @@ class OrderOnlineService implements OrderOnlineServiceInterface
$orderMain = $this->check($globalOrderId, $userId, OrderState::REFUNDING);
$orderIds = Order::query()->where(['order_main_id' => $orderMain->global_order_id])->pluck('id');
$orderGoods = OrderGoods::query()->whereIn('order_id', $orderIds)->get()->toArray();
// 释redis库存
$redis = ApplicationContext::getContainer()->get(Redis::class);
foreach ($orderGoods as $k => &$goodsItem) {
// 拼接activity_type和goods_id
$inventoryKey = 'goods_inventory_sold_'.$goodsItem['activity_type'].'_'.$goodsItem['goods_id'];
// redis记录当前商品的购买数量,压库存,下单失败、下单成功扣库存成功、订单取消的时候释放
if (!$redis->exists($inventoryKey)) {
$redis->set($inventoryKey, 0);
} else {
$redis->decrBy($inventoryKey, intval($goodsItem['number']));
}
}
// 微信退款
if ($orderMain->pay_type == Payment::WECHAT) {
return $this->paymentService->undo($orderMain->global_order_id, $userId);

Loading…
Cancel
Save