isEmpty() || $user['user_money'] < $order['order_amount']) { throw new \Exception('余额不足'); } //扣除余额 User::update([ 'user_money' => ['dec', $order['order_amount']] ], ['id' => $order['user_id']]); //余额流水 AccountLogLogic::add( $order['user_id'], AccountLogEnum::BNW_DEC_ORDER, AccountLogEnum::DEC, $order['order_amount'], $order['sn'] ); return [ 'pay_way' => PayEnum::BALANCE_PAY ]; } catch (\Exception $e) { $this->setStatus(false, $e->getMessage()); return false; } } /** * @notes 余额退款 * @param $order * @param $refundAmount * @author 段誉 * @date 2021/8/12 18:01 */ public function refund($order, $refundAmount,$afterSaleId) { //返回余额 User::update([ 'user_money' => ['inc', $refundAmount] ], ['id' => $order['user_id']]); //余额流水 $afterSale = AfterSale::findOrEmpty($afterSaleId); AccountLogLogic::add( $order['user_id'], AccountLogEnum::BNW_INC_AFTER_SALE, AccountLogEnum::INC, $refundAmount, $afterSale->sn ); // 更新售后状态 $afterSale->status = AfterSaleEnum::STATUS_SUCCESS; $afterSale->sub_status = AfterSaleEnum::SUB_STATUS_SELLER_REFUND_SUCCESS; $afterSale->refund_status = AfterSaleEnum::FULL_REFUND; $afterSale->save(); AfterSaleService::createAfterLog($afterSale->id, '系统已完成退款', 0, AfterSaleLogEnum::ROLE_SYS); // 消息通知 event('Notice', [ 'scene_id' => NoticeEnum::REFUND_SUCCESS_NOTICE, 'params' => [ 'user_id' => $afterSale->user_id, 'order_sn' => $order['sn'], 'after_sale_sn' => $afterSale->sn, 'refund_type' => AfterSaleEnum::getRefundTypeDesc($afterSale->refund_type), 'refund_total_amount' => $afterSale->refund_total_amount, 'refund_time' => date('Y-m-d H:i:s'), ] ]); } /** * @notes 积分订单退款 * @param $order * @param $refundAmount * @author 段誉 * @date 2022/4/1 10:40 */ public static function integralOrderRefund($order, $refundAmount) { User::where(['id' => $order['user_id']])->update([ 'user_money' => ['inc', $refundAmount] ]); AccountLogLogic::add( $order['user_id'], AccountLogEnum::BNW_INC_AFTER_SALE, AccountLogEnum::INC, $refundAmount, $order['user_sn'] ); } }