public function handle_request() { $arrearageList = $this->getRequestData(); if (!empty($arrearageList)) { foreach ($arrearageList as $arrearageVal) { $updateArrearageArr = array(); $apiData = $otherData = ''; /* *1.设置status = 1,为正在处理中 更新为处理状态(更新失败,跳出继续执行下一跳数据) */ $check = Bll_Broker_EntrustArrearage::getInstance()->updateOneData(array('id' => $arrearageVal->id, 'status' => array(0, 2)), array('status' => 1)); if (empty($check)) { continue; } $arrearageVal->add_old_property_value('status', 1); $commission = $this->getCommissionDataById($arrearageVal->commissionId); if (!$commission) { $otherData = '委托关系表中不存在数据'; $updateArrearageArr['status'] = 2; $this->updateArrearageTable($arrearageVal, $updateArrearageArr, $apiData, $otherData); continue; } // 获取房东房源信息 $house = $this->getCommissionProPDataById($commission->houseId); if (!$house) { $otherData = '房东房源表中不存在数据'; $updateArrearageArr['status'] = 2; $this->updateArrearageTable($arrearageVal, $updateArrearageArr, $apiData, $otherData); continue; } /* * 2. 获取账户余额 */ $userId = Bll_Broker_BrokerCheckInfo::getUserIdByBrokerId($arrearageVal->brokerId, 'sale'); $balance = Bll_Broker_ShowcaseOrders::getInstance()->getBrokerMoney($userId); $balance = $balance * 100; $updateArrearageArr['balance'] = $balance; if ($balance < $arrearageVal->price) { // 余额不足,插入消费日志 $otherData = '余额不足'; $updateArrearageArr['status'] = 2; } else { /* * 3.余额足够,调用扣费API */ $commName = mb_strlen($house->commName, "utf-8") <= 12 ? $house->commName : mb_substr($house->commName, 0, 12, "utf-8") . "..."; $note = "抢委托扣费,房源信息:" . $commName . " " . $house->userName . "(房源id" . $house->id . ")"; $apiResult = Bll_Broker_EntrustConsume::getInstance()->callCosumeApi($userId, $arrearageVal->requestId, $arrearageVal->price, $note); // 扣费成功 if ($apiResult['status'] === true) { $updateArrearageArr['status'] = 3; $otherData = '扣费成功'; $apiData = $apiResult['apiData']; // 更新adconsume表状态 $tmpConsumeData = Bll_Broker_EntrustConsume::getInstance()->getDataById($arrearageVal->consumeId, $arrearageVal->dateIndex); if ($tmpConsumeData) { $consumeData = $tmpConsumeData[0]; $consumeData->balance = $balance; $consumeData->status = 5; $consumeData->updateTime = date("Y-m-d H:i:s", time()); $consumeData->save(); } } else { // 扣费失败 $updateArrearageArr['status'] = 2; $otherData = '扣费失败'; } } $this->updateArrearageTable($arrearageVal, $updateArrearageArr, $apiData, $otherData); } } }
/** * 插入消费 */ protected function addConsume($queryData, $commission, $price) { $insertData = array('brokerId' => $commission->brokerId, 'balance' => 0, 'price' => $price, 'queryId' => $queryData->id, 'commissionId' => $queryData->commissionId, 'dateIndex' => $queryData->dateIndex, 'status' => 0, 'requestId' => 0, 'createTime' => time(), 'updateTime' => date("Y-m-d H:i:s")); // 插入扣费表 $consumeId = Bll_Broker_EntrustConsume::getInstance()->insertOneData($insertData, $queryData->dateIndex); if ($consumeId > 0) { $consumeData = Bll_Broker_EntrustConsume::getInstance()->getDataById($consumeId, $queryData->dateIndex, true); if (empty($consumeData)) { $this->textOutput($queryData, "扣费表数据获取失败,consumeId:" . $consumeId); return false; } // 记录日志 $this->insertDetailLog($consumeData[0], 1, "", "插入扣费表成功"); return $consumeData[0]; } else { $this->textOutput($queryData, "插入扣费表失败"); return false; } }