request->post(); $connection = Yii::$app->db; $transaction = $connection->beginTransaction(); try { $staff = $this->shopAdmin; $payWay = $post['payWay'] ?? dict::getDict('payWay', 'wxPay'); $idData = $post['id'] ?? ''; if (is_numeric($idData)) { util::fail('请求参数错误哦'); } $customId = $post['customId'] ?? 0; $custom = CustomClass::getLockById($customId); if (empty($custom)) { util::fail('没有找到客户'); } $hdId = $custom->hdId ?? 0; $hd = HdClass::getlockById($hdId); if (empty($hd)) { util::fail('客户信息缺失'); } //先充值 $mayClearAmount = 0; $idList = json_decode($idData, true); $ids = array_column($idList, 'id'); if (empty($ids)) { util::fail('请选择订单'); } $orderList = OrderClass::getAllByCondition(['id' => ['in', $ids]], null, '*', null, true); if (empty($orderList)) { util::fail('请选择订单呢'); } foreach ($orderList as $order) { if ($order->mainId != $this->mainId) { util::fail('不是你的订单哦'); } $remainDebtPrice = $order->remainDebtPrice ?? 0; $mayClearAmount = bcadd($mayClearAmount, $remainDebtPrice, 2); } if (empty($mayClearAmount)) { util::fail('不需要销账'); } $staffId = $this->shopAdminId; $staffName = $this->shopAdminName; $customName = $custom->name ?? ''; $userId = $custom->userId; $hdName = $hd->name; $shopId = $this->shopId; $mainId = $this->mainId; $orderSn = orderSn::getRechargeSn(); $shop = $this->shop; $hasSettle = SettleClass::getByCondition(['customId' => $customId, 'status' => 1], true); if (!empty($hasSettle)) { util::fail('这个客户名下有待结账单,请先取消'); } //创建待账单 $settleParams = ['staffId' => $staffId, 'staffName' => $staffName]; $settle = SettleClass::addSettle($orderList, $shop, $custom, $hd, $settleParams); $settleId = $settle->id; $settleAmount = $settle->actPrice; $addData = [ 'orderSn' => $orderSn, 'modPrice' => 1, 'payWay' => $payWay, 'style' => 1, 'shopId' => $shopId, 'mainId' => $mainId, 'hdId' => $hdId, 'hdName' => $hdName, 'onlinePay' => 1, 'amount' => $mayClearAmount, 'staffId' => $staffId, 'staffName' => $staffName, 'payStatus' => 0, 'payTime' => '0000-00-00 00:00:00', 'status' => 0, 'settleId' => $settleId, 'settleAmount' => $settleAmount, 'remark' => '', 'customId' => $customId, 'customName' => $customName, 'userId' => $userId, ]; $respond = RechargeClass::addRecharge($addData); $retId = $respond->id; //充值成功并且销账成功 $recharge = RechargeClass::getLockById($retId); $params = ['onlinePay' => 1, 'side' => 0]; RechargeClass::complete($recharge, $payWay, $params); $transaction->commit(); util::complete(); } catch (\Exception $exception) { $transaction->rollBack(); Yii::info("失败:" . $exception->getMessage()); util::fail('操作失败'); } } }