/** * 108 房源价格变更 * 查选房源信息是否存在 * 如果不存在 返回结束 * 如果存在 记录房源编辑日志 type=2 * 查询该房源的计划关系 * 如果不存在 返回结束 * 如果存在,重新计算定价的底价并更新计划关系表中的底价 * 查询计划 * 如果计划不在推广 返回结束 * 如果计划正在推广或者第二天推广, 记录房源更新日志 type=4 * 处理竞价 */ private function change_prop_price() { $data = self::build_prop_log($this->params, 2, "房源修改价格", $this->params['broker_id']); $houseStatus = json_decode($this->params['remark'], true); $data['remark'] = json_encode(array('oldPrice' => $houseStatus['oldPrice'], 'newPrice' => $houseStatus['price'], 'msg' => $data['remark'])); if (!Model_Log_HouseLogNew::create($data, date('Ymd'))->save()) { throw new Exception_BllErrorException("房源{$this->params['broker_id']}修改价格日志写入失败"); } else { $this->allReturn[] = "房源{$this->params['broker_id']}修改价格日志写入"; } if ($this->params['isComboCity']) { if (!($comboRelation = Bll_Combo_HouseRelation::getOnlineRelationByHouseId($this->params['pro_id']))) { return $this->allReturn[] = "房源{$this->params['pro_id']}套餐关系为空"; } //$this->writePropLog(4, '更新'); } else { // 查询定价关系 if (!($fixPlanning = Model_Plan_HzPlanning::getPropFixPlan($this->params['pro_id']))) { return $this->allReturn[] = "房源{$this->params['pro_id']}定价关系为空"; } // 重新计算低价并更新 $prop = Bll_HzProp::get_prop($this->params['pro_id']); $priceNum = $prop['pricenum']; $cityId = $prop['cityid']; $priceLevel = Model_House_HzPriceChoice::get_price($cityId, $priceNum); $bottomPrice = $priceLevel['price']; Model_Plan_HzPlanning::updatePropPlan($fixPlanning['id'], array('unit_price' => $bottomPrice)); if (in_array($fixPlanning['is_valid'], array(Const_HzPlan::SPREAD, Const_HzPlan::AUTOOVER))) { //$this->writePropLog(4, '更新'); } } $this->tempDoBid(); }
/** * 205 计划限额变小(页面触发) * 计划id非空判断 * 计划信息非空判断 * 写入修改计划日志 * 如果计划status!=1,return * 查询计划的当日话费 * 如果话费>=当日限额 continue 如果话费< 当日限额 return * 如果计划正在推广,更新状态为status=2 计划上限 * 查询房源计划关系 * 如果不存在 return * 如果关系非手动停止或非账户余额不足,更新状态为is_valid=2 * 记录房源第二天推广日志 */ private function low_plan_budget() { $planInfo = $this->checkPlanIsEmpty(); $this->writePlanLog(2, '减少计划限额'); if (!$planInfo['status'] != Const_HzPlan::SPREAD) { return; } // 判断计划今日话费和限额 $today_cost = Bll_HzFixPlan::get_plan_clickinfo($this->params['broker_id'], $this->params['plan_id']); if ((int) $planInfo['amount'] > $today_cost['total_cost']) { return; } // 更新计划封顶2 if (!Dao_Broker_HzPlan::update_plan_status($this->params['plan_id'], Const_HzPlan::AUTOOVER)) { throw new Exception_BllErrorException("更新计划为封顶2数据失败"); } // 查询关系 并更新为余额不足 并记录第二天推广 $plannings = Dao_Broker_HzPlan::get_planning($this->params['plan_id']); if (empty($plannings)) { return; } foreach ($plannings as $planning) { if (in_array($planning['is_valid'], array(Const_HzPlan::AUTOOVER, Const_HzPlan::UPPERLIMIT, Const_HzPlan::MANUALLY_PAUSE))) { continue; } // 更新关系 if (!Model_Plan_HzPlanning::updatePropPlan($planning['id'], array('is_valid' => Const_HzPlan::AUTOOVER))) { throw new Exception_BllErrorException("更新关系为上限失败, 关系id:{$planning['id']}"); } // 维护房子状态 Bll_HzPropBll::bulidHzProStatu($planning['proid']); $this->params['pro_id'] = $planning['proid']; $this->writePropLog(7, '第二天推广'); } }
/** * 添加竞价计划 * 往 `promotion_planning_basic` 里 添加一条记录,往 `promotion_planning_extend` 添加一条记录 * 房源计划关系表`promotion_prop_planning`里一个房源只能有2个记录,一个定价,一个竞价,所以先判断房源在 * 该表里是否已经有竞价计划记录了,有则更新,没有就添加。 * * @param int $brokerId * @param int $propId * @param float $price * @param float $amount * @param int $blockId * @param int $cityId * @param int $sn * @param int $ajk_broker_id * @return array|int|mixed */ public static function insertBidPlan($brokerId, $propId, $price, $amount, $blockId, $cityId, $sn, $ajk_broker_id = 0) { $prop = Model_House_HzProp::get_prop_info_by_prop_id($propId); $priceInterval = Model_House_HzPriceChoice::get_price($cityId, $prop['contentBasic']['pricenum']); $planBasicData = array('plan_title' => '精选', 'blockId' => $blockId, 'priceId' => $priceInterval['id'], 'plan_type' => Const_HzPlan::BID_TYPE, 'user_id' => $brokerId, 'amount' => $amount, 'status' => Const_HzPlan::WAITING, 'created' => time(), 'stop_date' => strtotime('+14 days'), 'order_update' => time(), 'cityId' => $cityId, 'bid_version' => Const_HzPlan::BID_VERSION_CHOICE, 'ajkBrokerId' => $ajk_broker_id); $planId = Model_Plan_HzPlanBasic::addPlan($planBasicData); if ($planId == 0) { return 0; } Bll_Log_EffectPlanLog::addPlanLog(Const_HzPlan::BID_TYPE, $planId, $propId, Const_HaoPanLog::PROPSTARTBID, $brokerId, 0, Const_HzPlan::WAITING, Bll_Log_EffectPlanLog::OPERATION_CHOICE); $extendData = array('plan_id' => $planId, 'start_date' => time(), 'created' => time(), 'end_date' => strtotime('+14 days'), 'sn' => $sn); Model_Plan_HzPlanExtend::addPlanExtend($extendData); $propPlanInfo = Model_Plan_HzPlanning::getPropBidPlan($propId); if (!empty($propPlanInfo)) { $propPlan = array('plan_id' => $planId, 'unit_price' => $price, 'is_valid' => Const_HzPlan::WAITING, 'current_day' => date("Ymd"), 'ajkBrokerId' => $ajk_broker_id, 'last_update' => date("Y-m-d H:i:s")); Model_Plan_HzPlanning::updatePropPlan($propPlanInfo['id'], $propPlan); } else { $propPlan = array('proid' => $propId, 'plan_id' => $planId, 'plan_type' => 2, 'unit_price' => $price, 'is_valid' => Const_HzPlan::WAITING, 'created' => time(), 'city_id' => $cityId, 'current_day' => date("Ymd"), 'user_id' => $brokerId, 'ajkBrokerId' => $ajk_broker_id); Model_Plan_HzPlanning::addPropPlan($propPlan); } return $planId; }