Пример #1
0
 /**
  * 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();
 }
Пример #2
0
 /**
  * 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, '第二天推广');
     }
 }
Пример #3
0
 /**
  * 添加竞价计划
  * 往 `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;
 }