public function handle_request_combo() { $ajkBrokerId = $this->brokerId; $cityId = $this->cityId; //套餐信息 $comboInfoList = Bll_Combo_Broker_BrokerComboInfo::getBrokerComboList($ajkBrokerId); $currentDate = time(); foreach ($comboInfoList as $comboInfo) { $startDate = strtotime($comboInfo['startTime']); $endDate = strtotime($comboInfo['endTime']); //获取当前使用的套餐 if ($currentDate >= $startDate && $currentDate < $endDate && $comboInfo['rentPropNum'] + $comboInfo['salePropNum'] > 0) { $currentCombo = $comboInfo; break; } } $currentComboTotal = $currentCombo['salePropNum'] + $currentCombo['rentPropNum']; $currentComboName = $currentCombo['name']; //二手房套餐列表 $comboEsfList = Bll_Broker_Combo_ManageAjk::getComboSpreadHouseList($ajkBrokerId, $cityId); $comboEsfPropIds = array_keys($comboEsfList); //租房套餐列表 $comboZuFangList = Bll_Combo_HouseRelation::getHouseRelations($ajkBrokerId, Bll_Combo_HouseRelation::SITE_TYPE_HZ, 1); $comboZuFangPropIds = array(); foreach ($comboZuFangList as $v) { $comboZuFangPropIds[] = (int) $v['houseId']; } $currentComboUsed = count($comboZuFangPropIds) + count($comboEsfPropIds); $canSpread = $currentComboUsed >= $currentComboTotal ? 0 : 1; $propId = $this->_params['propId']; $comboInfo = Bll_Combo_HouseRelation::getHouseRelation($ajkBrokerId, $cityId, $propId, Bll_Combo_HouseRelation::SITE_TYPE_HZ); if (!empty($comboInfo) && $comboInfo[0]['state'] > 100 & $comboInfo[0]['state'] < 200) { //推广中 $status = 2; $statusMsg = '套餐推广中'; $currentComboInfo = $currentComboName . " ({$currentComboUsed}/{$currentComboTotal})"; } else { $comboInfos = Bll_Combo_Broker_BrokerComboInfo::getComboListBySite($ajkBrokerId, Bll_Combo_Broker_BrokerComboInfo::SITE_TYPE_HZ); if (empty($comboInfos)) { $status = 0; $statusMsg = '尚未购买套餐,请购买套餐'; $currentComboInfo = '尚未购买套餐'; } else { $status = 1; $statusMsg = '好房源,不推广就浪费了~'; $currentComboInfo = $currentComboName . " ({$currentComboUsed}/{$currentComboTotal})"; } } $startDate = $endDate = date('Ymd'); $todayClicks = Bll_Combo_Broker_BrokerComboInfo::getHouseComboClickEx($propId, $startDate, $endDate, Model_Ppc_NewPackageStatsHouseDay::SITE_TYPE_HZ); $totalClicks = Bll_House_HzHouse::getComboHouseAccumulateClick($ajkBrokerId, $propId, $cityId); $todayClick = $todayClicks[$propId][$startDate] ?: 0; $totalClick = $totalClicks[$propId] ?: 0; $totalClick += $todayClick; return array('status' => Const_APIStatus::RETURN_CODE_OK, 'data' => array('todayClicks' => $todayClick, 'totalClicks' => $totalClick, 'status' => $status, 'statusMsg' => $statusMsg, 'canSpread' => $canSpread, 'currentComboInfo' => $currentComboInfo)); }
/** * 房源添加竞价/更新竞价 判断 */ public static function check_bid($proid, $broker_id, $offer, $amount, $ajkBrokerId = 0) { $proinfo = Dao_Broker_HzProp::get_prop($proid); $basic_info = $proinfo[$proid]['content_basic']; if (empty($basic_info)) { $flag_array['msg'] = Const_HzErrorInfo::PROPERROR; return $flag_array; } if ($basic_info['userid'] != $broker_id) { $flag_array['msg'] = Const_HzErrorInfo::PROPFAIL; return $flag_array; } if (!$basic_info['quality']) { $flag_array['msg'] = Const_HzErrorInfo::PROPPIC; return $flag_array; } $bid_min_offer = self::get_bid_minoffer($proid); if ((int) ($offer * 100) < (int) ($bid_min_offer * 100)) { $flag_array['msg'] = Const_HzErrorInfo::BIDOFFERFAIL; return $flag_array; } if ((int) ($offer * 100) > (int) ($amount * 100)) { $flag_array['msg'] = Const_HzErrorInfo::BIDOFFERTOP; return $flag_array; } if ($amount < 20) { $flag_array['msg'] = Const_HzErrorInfo::BIDAMOUNT; return $flag_array; } $bid_planning = Dao_Broker_HzPlan::get_prop_planning($proid, Const_HzPlan::BID_TYPE, '1'); if (!empty($bid_planning)) { $flag_array['msg'] = Const_HzErrorInfo::PROPBID; return $flag_array; } if ($ajkBrokerId) { //判断房源是否加入定价计划或者套餐 $isComboBroker = Bll_Broker_HzBroker::isComboBroker($ajkBrokerId); if ($isComboBroker) { //判断房源是否加入套餐 $comboInfo = Bll_Combo_HouseRelation::getHouseRelation($ajkBrokerId, $basic_info['cityid'], $proid, Bll_Combo_HouseRelation::SITE_TYPE_HZ); if (!(!empty($comboInfo) && $comboInfo[0]['state'] > 100 & $comboInfo[0]['state'] < 200)) { $flag_array['msg'] = Const_HzErrorInfo::NOCOMBOPROP; return $flag_array; } } else { $fix_planning = Dao_Broker_HzPlan::get_prop_planning($proid); if (empty($fix_planning)) { $flag_array['msg'] = Const_HzErrorInfo::PROPNOTFIX; return $flag_array; } } } else { $fix_planning = Dao_Broker_HzPlan::get_prop_planning($proid); if (empty($fix_planning)) { $flag_array['msg'] = Const_HzErrorInfo::PROPNOTFIX; return $flag_array; } } $bidprops = Bll_HzBidPlan::get_broker_bidprop($broker_id, $basic_info['cityid']); //@todo 此处是个坑,值得优化哦 //$plans = Dao_Broker_HzPlan::get_broker_plan($broker_id, '1,3,7,8', Const_HzPlan::BID_TYPE); if (count($bidprops) >= 10) { $flag_array['msg'] = Const_HzErrorInfo::PROPBIDTEN; return $flag_array; } $broker_info = Dao_Broker_HzPlan::get_hzbroker_info($broker_id); if ($broker_info['profile_verify'] != 2) { $flag_array['msg'] = Const_HzErrorInfo::BROKERCHECK; return $flag_array; } $balance = Bll_PayAccount::get_broker_balance($broker_id); if ((int) ($amount * 100) > (int) ($balance * 100)) { $flag_array['msg'] = Const_HzErrorInfo::BIDAMOUNTTOP; return $flag_array; } $flag_array['status'] = 1; return $flag_array; }
/** * 108 房源价格变更 * * <ol> * <li> * 查询房源信息是否存在<br> * 如果不存在,返回结束<br> * 如果存在,记录房源编辑日志<br> * </li> * * <li> * 查询房源计划关系<br> * 如果不存在,返回结束<br> * 如果存在,重新计算定价的底价并更新计划关系表中的底价<br> * </li> * * <li> * 查询计划信息<br> * 如果计划不在推广,返回结束<br> * 如果计划正在推广或者第二天推广, 记录房源更新日志<br> * </li> * * <li> * 竞价rebuild(暂未处理) * </li> * </ol> */ public static function change_prop_price($params) { $returnLog = array(); array_push($returnLog, '队列(' . json_encode($params['id']) . ')开始处理'); if (empty($params['pro_id'])) { array_push($returnLog, '房源ID为空'); return self::build_return(1, $returnLog); } if (empty($params['city_id'])) { array_push($returnLog, '城市ID为空'); return self::build_return(1, $returnLog); } if (empty($params['remark'])) { array_push($returnLog, "remark为空"); return self::build_return(1, $returnLog); } $remark = json_decode($params['remark']); if (empty($remark->oldPrice)) { array_push($returnLog, 'oldPrice为空'); return self::build_return(1, $returnLog); } if (empty($remark->price)) { array_push($returnLog, 'price为空'); return self::build_return(1, $returnLog); } //获取房源信息 $propBll = new BLL_Property_Property(); $propInfo = $propBll->getPropBaseInfoById($params['pro_id']); if (isset($propInfo[-9999])) { array_push($returnLog, '获取数据库中房源信息失败'); return self::build_return(0, $returnLog); } if (empty($propInfo)) { array_push($returnLog, '房源信息为空'); return self::build_return(1, $returnLog); } //房源信息存在写入房源编辑信息 $data = self::build_prop_log($params, 2, json_encode(array("oldPrice" => $remark->oldPrice, "newPrice" => $remark->price, "msg" => "房源编辑" . ";队列表id为" . $params['id'])), $params['broker_id']); if (!Model_Log_HouseLogNew::create($data, date('Ymd'))->save()) { array_push($returnLog, "房源编辑日志写入失败"); return self::build_return(0, $returnLog); } array_push($returnLog, "房源编辑日志写入"); /** * 新端口城市 */ if (Bll_City::isComboCity($params['city_id'])) { $houseRelationList = Bll_Combo_HouseRelation::getHouseRelation($params['broker_id'], $params['city_id'], array($params['pro_id']), Bll_Combo_HouseRelation::SITE_TYPE_AJK); if (empty($houseRelationList)) { $returnLog[] = '房源套餐关系为空'; return self::build_return(1, $returnLog); } foreach ($houseRelationList as $houseRelation) { if (Bll_Combo_HouseRelation::isRelationOnline($houseRelation['state'])) { $data = self::build_prop_log($params, 4, '房源更新;队列表id为' . $params['id'], $params['broker_id']); if (!Model_Log_HouseLogNew::create($data, date('Ymd'))->save()) { $returnLog[] = '房源更新日志写入失败'; } else { $returnLog[] = '房源更新日志写入成功'; } } } return self::build_return(1, $returnLog); } //查询房源计划关系 $relationBll = new Bll_FixedSpread_PropFixedPlanRelation(); $relationInfo = $relationBll->getProSpreadRelationByProId($params['pro_id'], $params['city_id']); if (empty($relationInfo)) { array_push($returnLog, '房源计划关系为空'); return self::build_return(1, $returnLog); } /** * 修正房源的计划id */ if (empty($params['plan_id'])) { $params['plan_id'] = $relationInfo['PlanId']; } //定价底价rebuild并更新关系表底价 if (BLL_Fixedspread_StaticPlanUpDownSwicher::isOnline()) { $fixedBll = new Bll_Fixedspread_AjkFixedSpread(); $result = $fixedBll->rebulidStaticPro($relationInfo['Id'], $params['city_id'], $remark->price); if ($result != true || (string) $result == '未知价格区间') { if ($result == '未知价格区间') { array_push($returnLog, '定价底价rebuild失败,未知价格区间'); } else { array_push($returnLog, '定价底价rebuild失败'); } return self::build_return(0, $returnLog); } array_push($returnLog, '定价底价rebuild成功,oldPrice(' . $remark->oldPrice . ')=>price(' . $remark->price . ')'); } /** 判断计划关系状态 */ if ($relationInfo['Status'] != 1) { array_push($returnLog, '房源不在定价推广中'); return self::build_return(1, $returnLog); } //获取计划信息 $planBll = new Bll_Fixedspread_AjkFixedSpread(); $planInfo = $planBll->getStaticPlanById($params['plan_id']); if (empty($planInfo)) { array_push($returnLog, '计划信息为空'); return self::build_return(1, $returnLog); } $planStatus = $planBll->getFixedPlanStatus($planInfo['Status'], $planInfo['ViewTime']); //1. 刪除 2.推广中 3.第二天推广 4.账户没钱停止 5.手动停止 switch ($planStatus) { case 1: array_push($returnLog, '计划状态已被置为删除'); break; case 2: case 3: //房源推广日志 $data = self::build_prop_log($params, 4, json_encode(array("oldPrice" => $remark->oldPrice, "newPrice" => $remark->price, "msg" => "房源更新" . ";队列表id为" . $params['id'])), $params['broker_id']); if (!Model_Log_HouseLogNew::create($data, date('Ymd'))->save()) { array_push($returnLog, "房源更新日志写入失败"); return self::build_return(0, $returnLog); } array_push($returnLog, "房源更新日志写入"); //todo 竞价rebuild break; case 4: array_push($returnLog, "计划状态为账户没钱停止"); break; case 5: array_push($returnLog, "计划状态为手动停止"); break; default: break; } return self::build_return(1, $returnLog); }
/** * 判断房源推广状态 * @param $cityId * @param $brokerId * @param $houseIds * @return array * add by xiongjianxu */ public static function getHouseOnLineInfo($cityId, $brokerId, $houseIds) { $result = array(); if (empty($cityId) || empty($brokerId) || empty($houseIds)) { return $result; } if (!is_array($houseIds)) { $houseIds = array($houseIds); } //是否为新端口城市 $comboInfo = Bll_Combo_HouseRelation::isComboCity($cityId); if ($comboInfo['code'] == 200) { if ($comboInfo['data'] == 0) { //ppc城市 //定价推广确认 $bllProperty = new BLL_Property_Property(); // 定价房源的数据 $staticPro = $bllProperty->getSaleStaticProInfoByProId($cityId, $houseIds, $brokerId); foreach ($staticPro as $key => $value) { $result[$key] = true; //$key为houseId } } else { //新端口城市 $houseComboArr = Bll_Combo_HouseRelation::getHouseRelation($brokerId, $cityId, $houseIds, Bll_Combo_HouseRelation::SITE_TYPE_AJK); foreach ($houseComboArr as $value) { if ($value['state'] < Model_Combo_HouseRelation::ENUM_COMBO_OFFLINE) { $result[$value['houseId']] = true; } else { $result[$value['houseId']] = false; } } } } return $result; }
public static function change_prop_price($params) { $all_return = array("队列(" . $params['id'] . ")开始处理"); $houseStatus = json_decode($params['remark'], 1); //根据查询结果判定房源是否在线 if (Bll_City::isComboCity($params['city_id'])) { $houseRelationList = Bll_Combo_HouseRelation::getHouseRelation($params['broker_id'], $params['city_id'], array($params['pro_id']), Bll_Combo_HouseRelation::SITE_TYPE_JP); if (empty($houseRelationList)) { $all_return[] = '房源套餐关系为空'; return self::build_return(1, $all_return); } foreach ($houseRelationList as $houseRelation) { if (Bll_Combo_HouseRelation::isRelationOnline($houseRelation['state'])) { $data = self::build_prop_log($params, 4, '房源更新;队列表id为' . $params['id'], $params['broker_id']); if (!Model_Log_HouseLogNew::create($data, date('Ymd'))->save()) { $all_return[] = '房源更新日志写入失败'; } else { $all_return[] = '房源更新日志写入成功'; } } } // return self::build_return(1, $all_return); } //PPC经纪人 房源是否在线 $isHouseOnline = Bll_Plan_JpPlanManage::getInstance()->isHouseOnline($params['pro_id']); if ($isHouseOnline) { //写房源更新solr日志 $data = self::build_prop_log($params, 4, "房源价格变更需要更新solr", $params['broker_id']); $houseStatus['newPrice'] = $houseStatus['price']; $houseStatus['msg'] = $data['remark']; $data['remark'] = json_encode($houseStatus); if (Model_Log_HouseLogNew::create($data, date('Ymd'))->save()) { $all_return[] = "房源" . $params['pro_id'] . "更新solr成功"; //价格变更需要重新rebuild房源的spreadPrice字段 Bll_Plan_JpPlanManage::getInstance()->rebuildSpreadPrice($params['pro_id'], true); } else { $all_return[] = "房源" . $params['pro_id'] . "更新solr失败"; } } //写房源修改价格日志 $data = self::build_prop_log($params, 2, "房源修改价格", $params['broker_id']); $houseStatus['newPrice'] = $houseStatus['price']; $houseStatus['msg'] = $data['remark']; $data['remark'] = json_encode($houseStatus); if (Model_Log_HouseLogNew::create($data, date('Ymd'))->save()) { $all_return[] = '房源修改价格日志写入成功'; return self::build_return(1, $all_return); } else { $all_return[] = '房源修改价格日志写入失败'; return self::build_return(0, $all_return); } }