From e833b21b4610cfb044d351d6f7d1e2094807ba2c Mon Sep 17 00:00:00 2001 From: luofei <604446095@qq.com> Date: Thu, 7 Mar 2024 10:44:25 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E6=94=AF=E6=8C=81=E5=95=86?= =?UTF-8?q?=E6=88=B7=E4=BD=99=E9=A2=9D=E6=94=AF=E4=BB=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../store/order/StoreOrderRepository.php | 43 ++++++++++++++++++- .../store/order/StoreOtherOrderRepository.php | 2 +- 2 files changed, 43 insertions(+), 2 deletions(-) diff --git a/app/common/repositories/store/order/StoreOrderRepository.php b/app/common/repositories/store/order/StoreOrderRepository.php index 731b016b..591bcfb1 100755 --- a/app/common/repositories/store/order/StoreOrderRepository.php +++ b/app/common/repositories/store/order/StoreOrderRepository.php @@ -86,7 +86,7 @@ class StoreOrderRepository extends BaseRepository /** * 支付类型 */ - const PAY_TYPE = ['balance', 'weixin', 'routine', 'h5', 'alipay', 'alipayQr', 'weixinQr', 'scrcu', 'creditBuy']; + const PAY_TYPE = ['balance', 'weixin', 'routine', 'h5', 'alipay', 'alipayQr', 'weixinQr', 'scrcu', 'creditBuy', 'merBalance']; const TYPE_SN_ORDER = 'wxo'; const TYPE_SN_PRESELL = 'wxp'; @@ -118,6 +118,9 @@ class StoreOrderRepository extends BaseRepository if ($type === 'balance') { return $this->payBalance($user, $groupOrder); } + if ($type === 'merBalance') { + return $this->payMerBalance($user, $groupOrder); + } if (in_array($type, ['weixin', 'alipay'], true) && $isApp) { $type .= 'App'; @@ -173,6 +176,44 @@ class StoreOrderRepository extends BaseRepository return app('json')->status('success', '余额支付成功', ['order_id' => $groupOrder['group_order_id']]); } + /** + * @param User $user + * @param StoreGroupOrder $groupOrder + * @return mixed + * @author xaboy + * @day 2020/6/9 + */ + public function payMerBalance(User $user, StoreGroupOrder $groupOrder) + { + if (!systemConfig('yue_pay_status')) + throw new ValidateException('未开启余额支付'); + $merchant = Merchant::where('uid', $user['uid'])->find(); + if (empty($merchant['mer_money']) || $merchant['mer_money'] < $groupOrder['pay_price']) + throw new ValidateException('余额不足,请更换支付方式'); + Db::startTrans(); + try { + $merchant->mer_money = bcsub($merchant->mer_money, $groupOrder['pay_price'], 2); + $merchant->save(); + $userBillRepository = app()->make(UserBillRepository::class); + $userBillRepository->decBill($merchant['uid'], 'mer_money', 'pay_product', [ + 'link_id' => $groupOrder['group_order_id'], + 'status' => 1, + 'title' => '购买商品', + 'number' => $groupOrder['pay_price'], + 'mark' => '商户余额支付支付' . floatval($groupOrder['pay_price']) . '元购买商品', + 'balance' => $merchant->mer_money + ]); + $this->paySuccess($groupOrder); + Db::commit(); + } catch (Exception $e) { + Db::rollback(); + Log::error('余额支付失败'.$e->getMessage().'。line:'.$e->getLine().'。file:'.$e->getFile()); + throw new ValidateException('余额支付失败'.$e->getMessage()); + } + + return app('json')->status('success', '余额支付成功', ['order_id' => $groupOrder['group_order_id']]); + } + public function changePayType(StoreGroupOrder $groupOrder, int $pay_type) { Db::transaction(function () use ($groupOrder, $pay_type) { diff --git a/app/common/repositories/store/order/StoreOtherOrderRepository.php b/app/common/repositories/store/order/StoreOtherOrderRepository.php index e7fafff6..cc19b248 100755 --- a/app/common/repositories/store/order/StoreOtherOrderRepository.php +++ b/app/common/repositories/store/order/StoreOtherOrderRepository.php @@ -1284,7 +1284,7 @@ class StoreOtherOrderRepository extends BaseRepository }else{ $merchant = Db::name('merchant')->where('uid',$item['uid'])->where('status',1)->field('mer_id,mer_name,is_trader,financial_bank,auto_margin_rate,commission_rate')->find(); } - $merchant['financial_bank'] = json_decode($merchant['financial_bank'], true); + $merchant['financial_bank'] = !empty($merchant['financial_bank']) ? json_decode($merchant['financial_bank'], true) : []; $item['merchant'] = $merchant; }); return compact('count', 'list');