コード例 #1
0
 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));
 }
コード例 #2
0
ファイル: HzBidPlan.php プロジェクト: emilymwang8/ajk-broker
 /**
  * 房源添加竞价/更新竞价 判断
  */
 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;
 }
コード例 #3
0
ファイル: EsfPropBll.php プロジェクト: emilymwang8/ajk-broker
 /**
  * 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);
 }
コード例 #4
0
ファイル: EsfHouse.php プロジェクト: emilymwang8/ajk-broker
 /**
  * 判断房源推广状态
  * @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;
 }
コード例 #5
0
ファイル: JpPropBll.php プロジェクト: emilymwang8/ajk-broker
 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);
     }
 }