示例#1
0
 /**
  * 初始化 坑位信息
  * @param $blockId
  * @param $newBlockId
  * @param $houseType
  * @param $priceId
  * @param $cityId
  * @return array
  */
 public static function initBucketInfo($blockId, $newBlockId, $houseType, $priceId, $cityId)
 {
     Model_Choice_JPBidBucket::initBucketInfo($blockId, $newBlockId, $houseType, $priceId, $cityId);
     $bucketInfo = array();
     $bucketInfo['totalNum'] = Model_Choice_JPBidBucket::TOTALNUM;
     $bucketInfo['usedNum'] = Model_Choice_JPBidBucket::INIT_USENUM;
     $bucketInfo['maxOnlineNum'] = Model_Choice_JPBidBucket::MAXONLINENUM;
     return $bucketInfo;
 }
 public function dealTask($task)
 {
     $currentUsedNum = $task['usedNum'];
     $trueUsedNum = Bll_Choice_JpBidBucket::countBucketChoicePlan($task['blockId'], $task['newBlockId'], $task['houseType'], $task['priceId']);
     printf('正在处理 队列id %s, blockId %s, newBlockId %s, houseType %s, priceId %s 结果是: userNum: %s, 实际: %s, 状态:%s' . PHP_EOL, $task['id'], $task['blockId'], $task['newBlockId'], $task['houseType'], $task['priceId'], $currentUsedNum, $trueUsedNum, $currentUsedNum == $trueUsedNum ? 'success' : 'error');
     if ($currentUsedNum == $trueUsedNum) {
         return true;
     }
     $result = Model_Choice_JPBidBucket::data_access()->filter('id', $task['id'])->find_only();
     $result->usedNum = $trueUsedNum;
     $result->save();
     printf('更新usedNum结果: %s' . PHP_EOL, $result ? '更新成功' : '更新失败');
     return true;
 }
示例#3
0
 /**
  * 金铺-精选房源设置
  *
  * @param $ajkBrokerId
  * @param $cityId
  * @param $propId
  * @param array $params
  * @return array
  */
 public static function jp_setting_post($ajkBrokerId, $cityId, $propId, $params = array())
 {
     $jpBrokerInfo = Model_Broker_JpBroker::getJpBrokerInfoByAjkBrokerId($ajkBrokerId);
     //check房源是否已经加入精选推广
     $bidObj = Model_Plan_Jp::getBidPlanByHouseIdEx($ajkBrokerId, $propId, true);
     if (!empty($bidObj)) {
         if ($bidObj['status'] == Model_Plan_Jp::ENUM_STATUS_ONLINE || $bidObj['status'] == Model_Plan_Jp::ENUM_STATUS_CHOICE_HOLD) {
             return array('err_no' => self::BID_HOUSE_ALREADY_IN_BID, 'err_msg' => '房源已经加入精选推广');
         } elseif ($bidObj['status'] == Model_Plan_Jp::ENUM_STATUS_HOLD) {
             return array('err_no' => self::BID_FAIL_OTHER, 'err_msg' => '房源正在结算中,请稍后...');
         }
     }
     $bidChoiceCount = Model_Plan_Jp::getBidChoiceInfoEx($cityId, $ajkBrokerId);
     //获取精选推广预算
     $brokerInfo = Bll_BrokerBaseBll::get_instance()->get_broker_info($ajkBrokerId);
     $brokerCompanyId = $brokerInfo['BaseInfo']['COMPANYID'];
     $choiceSet = APF::get_instance()->get_config('choice_set');
     if (isset($choiceSet[$brokerCompanyId]) && !empty($choiceSet[$brokerCompanyId])) {
         $min_budget = $choiceSet[$brokerCompanyId]['jp']['JP_CHOICE_MIN_BUDGET'];
         $max_budget = $choiceSet[$brokerCompanyId]['jp']['JP_CHOICE_MAX_BUDGET'];
     } else {
         $min_budget = $choiceSet['default']['jp']['JP_CHOICE_MIN_BUDGET'];
         $max_budget = $choiceSet['default']['jp']['JP_CHOICE_MAX_BUDGET'];
     }
     if ($params['budget'] < $min_budget || $params['budget'] > $max_budget) {
         return array('err_no' => self::BID_FAIL_OTHER, 'err_msg' => '推广预算最低' . $min_budget . '安币,最高' . $max_budget . '安币');
     }
     $status = isset($bidObj['status']) ? $bidObj['status'] : 0;
     if (count($bidChoiceCount) >= self::ALL_JP_PLAN_NUM && $status != 4) {
         return array('err_no' => self::BID_FAIL_OTHER, 'err_msg' => '精选推广房源已经超过' . self::ALL_JP_PLAN_NUM . '套');
     }
     if (0 == $jpBrokerInfo) {
         return array('err_no' => self::BID_FAIL_OTHER, 'err_msg' => '您不是金铺经纪人');
     }
     /** 获取房源基本信息 */
     $propInfo = Bll_House_JpHouseInfo::getHouseInfoById($propId);
     if (empty($propInfo)) {
         return array('err_no' => self::BID_FAIL_OTHER, 'err_msg' => '房源不存在');
     }
     if ($propInfo['base']['memberId'] != $jpBrokerInfo['id']) {
         return array('err_no' => self::BID_FAIL_OTHER, 'err_msg' => '房源不属于该经纪人');
     }
     /** 判断是否是精选开放城市 */
     if (!Bll_City::isChoiceIndependentCity($cityId, Const_Site::JINPU)) {
         /** 判断房源是否在套餐推广 */
         $propCombos = Bll_Combo_HouseRelation::getOnlineRelationByHouseId($propId, Bll_Combo_HouseRelation::SITE_TYPE_JP);
         if (empty($propCombos)) {
             return array('err_no' => self::BID_FAIL_OTHER, 'err_msg' => '房源必须在套餐推广才能参与精选');
         }
     }
     if (false == $propInfo['info']['isExquisite']) {
         return array('err_no' => self::BID_FAIL_QUALITY_OR_NEW, 'err_msg' => '精品、新发15天房源才能参与精选推广', 'params' => array('site' => 'jp'));
     }
     $limitDay = intval(date('Ymd', strtotime('-15 days')));
     $postDay = intval(date('Ymd', strtotime($propInfo['base']['createTime'])));
     if ($limitDay > $postDay) {
         return array('err_no' => self::BID_FAIL_QUALITY_OR_NEW, 'err_msg' => '精品、新发15天房源才能参与精选推广', 'params' => array('site' => 'jp'));
     }
     /** 获取板块信息 **/
     $blockArr = Bll_House_JpHouseInfo::getBlock($propInfo['base']['houseType'], $propInfo['info']);
     if (!$blockArr['blockId'] && !$blockArr['newBlockId']) {
         return array('err_no' => self::BID_HOUSE_ALREADY_IN_BID, 'err_msg' => '房源缺少板块信息');
     }
     /** 获取价格信息 **/
     $arrPrice = Bll_House_JpHouseInfo::getPrice($cityId, $propInfo['base']['houseType'], $propInfo['info']);
     if (empty($arrPrice['price_id'])) {
         return array('err_no' => self::BID_FAIL_OTHER, 'err_msg' => '缺少价格段信息');
     }
     /** 获取点击单价开始 */
     try {
         $apiParams = array('brokerId' => $ajkBrokerId, 'cityId' => $cityId, 'price' => $arrPrice['price'] ?: 0, 'blockId' => $blockArr['blockId'] ?: 0, 'newBlockId' => $blockArr['newBlockId'] ?: 0, 'houseType' => $propInfo['base']['houseType']);
         /**
          * @var Bll_Service_Client_HttpResponse $clickPrice
          */
         for ($i = 0; $i < 3; $i++) {
             $clickPrice = Bll_Service_Choice::jpClickPrice($apiParams);
             if ($clickPrice->isSucceeded()) {
                 break;
             }
         }
         if (!$clickPrice->isSucceeded() || $clickPrice['status'] == 'error') {
             return array('err_no' => self::BID_FAIL_OTHER, 'err_msg' => '系统繁忙(code:-1000)');
         }
         if ($params['budget'] * 100 < $clickPrice['realTradeAmount']) {
             return array('err_no' => self::BID_FAIL_OTHER, 'err_msg' => '推广预算不能小于点击单价');
         }
         /** 点击单价不能小于当前系统内的单价 防止恶意操作 */
         if ($params['price'] < $clickPrice['realTradeAmount'] / 100) {
             return array('err_no' => self::BID_FAIL_OTHER, 'err_msg' => '点击单价错误');
         }
     } catch (Exception $e) {
         return array('err_no' => self::BID_FAIL_OTHER, 'err_msg' => '系统繁忙(code:-2000)');
     }
     /** 防并发 */
     if (false === self::rejectSameRequest(Bll_Plan_Bid_Choice::SITE_JP, $ajkBrokerId, $propId)) {
         return array('err_no' => self::BID_FAIL_OTHER, 'err_msg' => '系统繁忙(code:-906)');
     }
     /** 往冻结队列里添加记录,获取request id*/
     $bidFreezeOrder = new Bll_Plan_BidFreezeOrderNum(date('Y'));
     $ajk_user_id = Bll_Broker_MainBusiness::getDataByEsfId($ajkBrokerId)->memberId;
     $requestId = $bidFreezeOrder->getRequestId(Bll_Plan_BidFreezeOrderNum::JP, $ajk_user_id, date('Y'), 0, $propId);
     /** 冻结金额 **/
     $freezeResult = self::bid_freeze($ajkBrokerId, $params['budget'] * 100, $requestId, sprintf('金铺精选房源冻结,房源ID是: %d', $propId), Const_PaymentApp::JP_CHOICE);
     /** 判断是否冻结成功 **/
     $freezeResponse = $freezeResult->getResponse();
     if (!$freezeResult->isSucceeded() || $freezeResponse['status'] == 'error') {
         return array('err_no' => self::BID_FAIL_OTHER, 'err_msg' => isset($freezeResult['info']) ? $freezeResult['info'] . "code:" . $freezeResult['code'] : '冻结金额失败');
     }
     //检查是否有坑位 坑位+1
     $bucketStatus = Model_Choice_JPBidBucket::incrementUsedNum($blockArr['blockId'], $blockArr['newBlockId'], $propInfo['base']['houseType'], $arrPrice['price_id']);
     if (!$bucketStatus) {
         return array('err_no' => self::BID_WAIT_FAIL, 'err_msg' => '精选推广已满,请稍后再试');
     }
     /** 获取最小竞价单元的精选信息 **/
     $bucketInfo = Model_Choice_JPBidBucket::getBucketInfo($blockArr['blockId'], $blockArr['newBlockId'], $propInfo['base']['houseType'], $arrPrice['price_id']);
     /** 根据最小竞价单位里面的房源数判断当前的房源应该是排队还是推广中 **/
     /*
     if ($bucketInfo['usedNum'] > $bucketInfo['maxOnlineNum']) {
         $planStatus = Model_Plan_Jp::ENUM_STATUS_CHOICE_HOLD;
     } else {
         $planStatus = Model_Plan_Jp::ENUM_STATUS_ONLINE;
     }
     */
     $planStatus = Model_Plan_Jp::ENUM_STATUS_CHOICE_HOLD;
     /** 如果计划已经存在删除该计划**/
     if (isset($bidObj['status']) && $bidObj['status'] == 4) {
         Model_Plan_Jp::data_access()->set_field('isDelete', 1)->filter('id', $bidObj['id'])->update();
     }
     /** 构造计划数据 创建计划**/
     $planData = self::buildJpPlanData($cityId, $jpBrokerInfo['id'], $params['budget'], $freezeResult['data']['sn'], $propId, $blockArr['blockId'], $blockArr['newBlockId'], $arrPrice['price_id'], $propInfo['base']['houseType'], $planStatus);
     $planData['ajkBrokerId'] = $ajkBrokerId;
     $PlanObj = Model_Plan_Jp::create($planData);
     $PlanObj->save();
     if (empty($PlanObj->id)) {
         /** 坑位-1 **/
         Model_Choice_JPBidBucket::decrementUsedNum($blockArr['blockId'], $blockArr['newBlockId'], $propInfo['base']['houseType'], $arrPrice['price_id']);
         Model_Plan_Jp::data_access()->set_field('isDelete', 0)->filter('id', $bidObj['id'])->update();
         return array('err_no' => self::BID_FAIL_OTHER, 'err_msg' => '创建计划失败');
     }
     /** 更新房源里面的竞价计划id **/
     $propInfo['base']->bidSpreadId = $PlanObj->id;
     $propInfo['base']->save();
     /** 更新房源分表信息 **/
     //$propInfo['info']->isList = 1;
     $propInfo['info']->spreadOffer = $clickPrice['realTradeAmount'];
     $propInfo['info']->spreadOfferTime = time();
     $propInfo['info']->save();
     /** 构建精选动作处理数据 **/
     $choiceData = self::buildJpChoiceData($ajkBrokerId, Model_Choice_ActionQueue::ENUM_BEGIN_BY_HAND, $PlanObj->id, '经纪人手动推广', $propId);
     /** 插入到精选动作处理队列表 **/
     Model_Choice_ActionQueue::create($choiceData, date('m'))->save();
     $bidFreezeOrder->updateRequestComplete($requestId, $freezeResult['data']['sn'], $PlanObj->id);
     if ($bucketInfo['usedNum'] > $bucketInfo['maxOnlineNum']) {
         $rank = $bucketInfo['usedNum'] - $bucketInfo['maxOnlineNum'];
         return array('err_no' => self::BID_WAIT_SUCCESS, 'err_msg' => '精选排队成功', 'rank' => $rank);
     } else {
         return array('err_no' => self::BID_SHOW_SUCCESS, 'err_msg' => '精选推广成功');
     }
 }
示例#4
0
 /**
  * 金铺精选推广 放弃排队 删除推广 放弃推广 动作
  * 2-推广中 4-结束 6排队中
  */
 public static function spreadOperation($act, $id)
 {
     $result = array('status' => 'error');
     $request = APF::get_instance()->get_request();
     $ajkBlockId = $request->getBrokerId();
     $jpBrokerInfo = Model_Broker_JpBroker::getJpBrokerInfoByAjkBrokerId($ajkBlockId);
     if (isset($act) && intval($id)) {
         $spreadInfo = Model_Plan_Jp::data_access()->filter('isDelete', 0)->filter('id', $id)->get_row();
         if (!empty($spreadInfo) && $spreadInfo['memberId'] == $jpBrokerInfo->id) {
             switch ($act) {
                 case 'delete':
                     if ($spreadInfo['status'] == 4) {
                         //删除计划ID
                         Model_Plan_Jp::data_access()->set_field('isDelete', 1)->set_field('updateTime', date('Y-m-d H:i:s'))->filter('id', $id)->update();
                         //设置房源bidSpreadId为0
                         Model_House_JpHouseIdx::data_access()->set_field('bidSpreadId', 0)->filter('id', $spreadInfo['houseId'])->update();
                         $result = array('status' => 'ok');
                     } elseif ($spreadInfo['status'] == 3) {
                         $result = array('status' => '该房源正在结算中,请稍后');
                     } else {
                         $result = array('status' => '该房源正在推广或排队中');
                     }
                     break;
                 case 'stopQueue':
                 case 'stopPlan':
                     if ($spreadInfo['status'] == 3) {
                         $result = array('status' => '该房源正在结算中,请稍后');
                     } elseif ($spreadInfo['status'] == 2 || $spreadInfo['status'] == 6) {
                         $choiceData = Bll_Plan_Bid_Choice::buildJpChoiceData($ajkBlockId, Model_Choice_ActionQueue::ENUM_STOP_BY_HAND, $id, '停止精品推广', $spreadInfo['houseId']);
                         if (1 != Model_Choice_ActionQueue::create($choiceData, date('m'))->save()) {
                             $result = array('status' => '系统繁忙');
                             break;
                         }
                         //更新计划状态为计算中
                         $updatePlanStatus = Model_Plan_Jp::data_access()->set_field('status', Model_Plan_Jp::ENUM_STATUS_HOLD)->set_field('updateTime', date('Y-m-d H:i:s'))->filter('id', $id)->update();
                         if ($updatePlanStatus == 0) {
                             $result = array('status' => '暂停计划失败');
                             break;
                         }
                         //设置房源bidSpreadId为0
                         $updateBidSpreadId = Model_House_JpHouseIdx::data_access()->set_field('bidSpreadId', 0)->filter('id', $spreadInfo['houseId'])->update();
                         if (1 != $updateBidSpreadId) {
                             $result = array('status' => '暂停计划失败');
                             break;
                         }
                         //坑位表减一
                         Model_Choice_JPBidBucket::decrementUsedNum($spreadInfo['blockId'], $spreadInfo['newBlockId'], $spreadInfo['houseType'], $spreadInfo['priceId']);
                         $result = array('status' => 'ok');
                         break;
                     }
                 default:
                     break;
             }
         }
     }
     return $result;
 }
示例#5
0
 /**
  * 精选计划板块变更
  *
  * @param array $queueInfo
  * @return array
  */
 public static function houseBlockChange($queueInfo)
 {
     $choicePlanInfo = Model_Plan_Jp::getPlanInfoById($queueInfo['planId'], true);
     if (empty($choicePlanInfo)) {
         return self::buildReturn(0, '没有获取到计划');
     }
     if ($choicePlanInfo['status'] != Model_Plan_Jp::ENUM_STATUS_ONLINE && $choicePlanInfo['status'] != Model_Plan_Jp::ENUM_STATUS_CHOICE_HOLD) {
         return self::buildReturn(1, sprintf('计划状态[%d]不处理', $choicePlanInfo['status']));
     }
     /** 获取房源信息 */
     $houseInfo = Model_House_JpHouseIdx::getHouseInfoById($choicePlanInfo['houseId']);
     if (empty($houseInfo)) {
         return self::buildReturn(0, sprintf('没有获取到房源[%d]信息', $choicePlanInfo['houseId']));
     }
     if ($houseInfo['isDelete'] == Model_House_JpHouseIdx::ENUM_IS_DELETE_YES) {
         return self::buildReturn(0, sprintf('房源[%d]已经删除[%d]', $choicePlanInfo['houseId'], $houseInfo['isDelete']));
     }
     /** 获取房源的板块id */
     if (in_array($houseInfo['houseType'], array(Model_House_JpHouseIdx::ENUM_HOUSE_TYPE_OFFICE_RENT, Model_House_JpHouseIdx::ENUM_HOUSE_TYPE_OFFICE_SALE))) {
         $propertyInfo = Model_House_JpBuilding::getBuildingById($houseInfo['propertyId'], array('blockId'));
     } else {
         $propertyInfo = Model_House_JpProperty::getPropertyById($houseInfo['propertyId'], array('blockId', 'isRoad'));
     }
     $blockId = $propertyInfo['blockId'];
     /** 商铺自选房源精选板块ID从房源信息表里取 */
     if (in_array($houseInfo['houseType'], array(Model_House_JpHouseIdx::ENUM_HOUSE_TYPE_SHOP_RENT, Model_House_JpHouseIdx::ENUM_HOUSE_TYPE_SHOP_SALE)) && $propertyInfo['isRoad'] == 1) {
         $houseTypeClass = Model_House_JpHouseIdx::getHouseTypeModelClass($houseInfo['houseType']);
         $extendHouseInfo = $houseTypeClass::getPropInfoById($houseInfo['id']);
         $blockId = $extendHouseInfo['blockId'];
     }
     /** 获取商圈ID */
     $businessCycleId = Bll_House_JpHouseInfo::getBusinessCycleId($houseInfo['cityId'], $blockId, $houseInfo['houseType']);
     /** 更新计划的板块和商圈ID */
     if (!Model_Plan_Jp::updatePlanBlockIdAndNewBlockIdById($choicePlanInfo['id'], $blockId, $businessCycleId)) {
         return self::buildReturn(0, sprintf('更新计划[%d]的板块[%d -> %d]和商圈[%d -> %d]id失败', $choicePlanInfo['id'], $choicePlanInfo['blockId'], $blockId, $choicePlanInfo['newBlockId'], $businessCycleId));
     }
     if (!Model_Choice_JPBidBucket::getBucketInfo($blockId, $businessCycleId, $choicePlanInfo['houseType'], $choicePlanInfo['priceId'])) {
         Model_Choice_JPBidBucket::initBucketInfo($blockId, $businessCycleId, $choicePlanInfo['houseType'], $choicePlanInfo['priceId'], $choicePlanInfo['cityId']);
     }
     Model_Choice_JPBidBucket::incrementUsedNumEx($blockId, $businessCycleId, $choicePlanInfo['houseType'], $choicePlanInfo['priceId']);
     return self::buildReturn(1, sprintf('更新计划[%d]的板块[%d -> %d]和商圈[%d -> %d]id成功', $choicePlanInfo['id'], $choicePlanInfo['blockId'], $blockId, $choicePlanInfo['newBlockId'], $businessCycleId));
 }
示例#6
0
 private static function extendChoiceMsg($out, $houseIds)
 {
     $result = array();
     foreach ($houseIds as $houseId) {
         $houseInfo = $out['houses'][$houseId];
         $choiceMsg = '';
         if (empty($out['choiceHouseIds'][$houseId])) {
             //需要计算精选tip(可推广,可排队,已排满)
             /** 获取板块信息 **/
             $blockArr = Bll_House_JpHouseInfo::getBlock($houseInfo['houseType'], (object) $houseInfo['info']);
             /** 获取价格信息 **/
             $arrPrice = Bll_House_JpHouseInfo::getPrice($out['cityId'], $houseInfo['houseType'], (object) $houseInfo['info']);
             /** 获取最小竞价单元的精选信息 **/
             $bidBucket = Model_Choice_JPBidBucket::getBucketInfo($blockArr['blockId'], $blockArr['newBlockId'], $houseInfo['houseType'], $arrPrice['price_id']);
             if ($bidBucket) {
                 if ($bidBucket['usedNum'] < $bidBucket['maxOnlineNum']) {
                     $choiceMsg = '可推广';
                 } elseif ($bidBucket['usedNum'] < $bidBucket['totalNum']) {
                     $choiceMsg = '可排队';
                 } else {
                     $choiceMsg = '已排满';
                 }
             } else {
                 $choiceMsg = '可推广';
             }
         } else {
             if ($out['choicePlans'][$houseId]['status'] == 2) {
                 $choiceMsg = '推广中';
             } elseif ($out['choicePlans'][$houseId]['status'] == 6) {
                 $choiceMsg = '排队中';
             }
         }
         $result[$houseId] = $choiceMsg;
     }
     return $result;
 }
示例#7
0
 /**
  * 初始化 坑位信息
  * @param $blockId
  * @param $newBlockId
  * @param $houseType
  * @param $priceId
  * @param $cityId
  * @return array
  */
 public static function initBucketInfo($blockId, $newBlockId, $houseType, $priceId, $cityId)
 {
     $bucketInfo['blockId'] = $blockId;
     $bucketInfo['newBlockId'] = $newBlockId;
     $bucketInfo['houseType'] = $houseType;
     $bucketInfo['priceId'] = $priceId;
     $bucketInfo['totalNum'] = Model_Choice_JPBidBucket::TOTALNUM;
     $bucketInfo['usedNum'] = Model_Choice_JPBidBucket::INIT_USENUM;
     $bucketInfo['maxOnlineNum'] = Model_Choice_JPBidBucket::MAXONLINENUM;
     $bucketInfo['cityId'] = $cityId;
     $bucketInfo['createTime'] = time();
     $PlanObj = Model_Choice_JPBidBucket::create($bucketInfo);
     $PlanObj->save();
     return $PlanObj;
 }
 public static function updateBucketStatusAndHouseToSolr($spreadInfo, $brokerId = 0, $func = '', $reason = '')
 {
     $bidBucket = Model_Choice_JPBidBucket::getBucketInfo($spreadInfo->blockId, $spreadInfo->newBlockId, $spreadInfo->houseType, $spreadInfo->priceId);
     $limit = $bidBucket['totalNum'];
     $bidChoicePlan = Model_Plan_Jp::getBidChoicePlan($spreadInfo->blockId, $spreadInfo->newBlockId, $spreadInfo->priceId, $spreadInfo->houseType, $limit, $spreadInfo->memberId, $spreadInfo->cityId);
     $upHouse = $downHouse = array();
     if ($bidChoicePlan && $bidBucket) {
         foreach ($bidChoicePlan as $i => $planInfo) {
             if ($i < $bidBucket['maxOnlineNum']) {
                 if (6 == $planInfo->status) {
                     //将计划状态改成 2
                     $planInfo->status = 2;
                     $planInfo->save();
                     $params = array();
                     $params['houseId'] = $planInfo->houseId;
                     $params['plan_id'] = $planInfo->id;
                     $params['ajk_broker_id'] = $brokerId;
                     $params['city_id'] = $spreadInfo->cityId;
                     $params['type'] = 14;
                     //13-精选排队中,14-精选推广,15-取消精选推广,16-取消精选排队
                     $params['changeType'] = self::$propLog[$func]['changeType'];
                     $_remark = '由于' . $reason . ',导致房源:' . $planInfo->houseId . '上架';
                     self::writeHouseLogV2($params, $_remark);
                     //房源上架tosolr
                     Bll_House_JpHouseInfo::updateHouseToSolr(1, $planInfo->houseId, 1);
                     //通知更新q_spread_bid_update表 计算竞价系数
                     Model_Plan_JpSpreadBidUpdate::setBidUpdateQ($planInfo->id);
                     $upHouse[] = $planInfo->houseId;
                 }
             } else {
                 if (2 == $planInfo->status) {
                     //将计划状态改成 6
                     $planInfo->status = 6;
                     $planInfo->save();
                     $params = array();
                     $params['houseId'] = $planInfo->houseId;
                     $params['plan_id'] = $planInfo->id;
                     $params['ajk_broker_id'] = $brokerId;
                     $params['city_id'] = $spreadInfo->cityId;
                     $params['type'] = 15;
                     //13-精选排队中,14-精选推广,15-取消精选推广,16-取消精选排队
                     $params['changeType'] = self::$propLog[$func]['changeType'];
                     $_remark = '由于' . $reason . ',导致房源:' . $planInfo->houseId . '下架';
                     self::writeHouseLogV2($params, $_remark);
                     //房源下架tosolr
                     Bll_House_JpHouseInfo::updateHouseToSolr(1, $planInfo->houseId, 1);
                     //通知更新q_spread_bid_update表 计算竞价系数
                     Model_Plan_JpSpreadBidUpdate::setBidUpdateQ($planInfo->id);
                     $downHouse[] = $planInfo->houseId;
                 }
             }
         }
         $remark = '由于' . $reason . ',导致商业地产精选推广';
         if ($upHouse || $downHouse) {
             if ($upHouse) {
                 $remark .= '上架房源:' . implode(',', $upHouse);
             }
             if ($downHouse) {
                 $remark .= '下架房源:' . implode(',', $downHouse);
             }
         } else {
             $remark .= '暂无上下架房源';
         }
         return $remark;
     }
     return $reason;
 }