public static function dealProUpDownJob($queueInfo) { $hzUpDownService = new Bll_House_UpDown_Worker_HzUpDownService($queueInfo); switch ($queueInfo['type']) { case 101: #101房源新发 switch ($queueInfo['site_type']) { case 1: $result = Bll_EsfPropBll::create_prop($queueInfo); break; case 2: $result = $hzUpDownService->doUpDownFromWorker(); break; case 3: $result = Bll_JpPropBll::create_prop($queueInfo); break; } break; case 102: #102房源编辑 switch ($queueInfo['site_type']) { case 1: $result = Bll_EsfPropBll::edit_prop($queueInfo); break; case 2: $result = $hzUpDownService->doUpDownFromWorker(); break; case 3: $result = Bll_JpPropBll::edit_prop($queueInfo); break; } break; case 103: #103房源违规 switch ($queueInfo['site_type']) { case 1: $result = Bll_EsfPropBll::illegal_prop($queueInfo); break; case 2: $result = $hzUpDownService->doUpDownFromWorker(); break; case 3: $result = Bll_JpPropBll::illegal_prop($queueInfo); break; } break; case 104: #104房源到期下架并删除 switch ($queueInfo['site_type']) { case 1: $result = Bll_EsfPropBll::overtime_prop($queueInfo); break; case 2: $result = $hzUpDownService->doUpDownFromWorker(); break; case 3: $result = Bll_JpPropBll::overtime_prop($queueInfo); break; } break; case 105: #105删除房源 switch ($queueInfo['site_type']) { case 1: $result = Bll_EsfPropBll::delete_prop($queueInfo); break; case 2: $result = $hzUpDownService->doUpDownFromWorker(); break; case 3: $result = Bll_JpPropBll::delete_prop($queueInfo); break; } break; case 106: #106房源取消定价推广——用户手动 switch ($queueInfo['site_type']) { case 1: $result = Bll_EsfPropBll::prop_out_fix($queueInfo); break; case 2: $result = $hzUpDownService->doUpDownFromWorker(); break; case 3: $result = Bll_JpPropBll::prop_out_fix($queueInfo); break; } break; case 107: #107房源加入定价推广 switch ($queueInfo['site_type']) { case 1: $result = Bll_EsfPropBll::prop_into_fix($queueInfo); break; case 2: $result = $hzUpDownService->doUpDownFromWorker(); break; case 3: $result = Bll_JpPropBll::prop_into_fix($queueInfo); break; } break; case 108: #108房源修改价格 switch ($queueInfo['site_type']) { case 1: $result = Bll_EsfPropBll::change_prop_price($queueInfo); break; case 2: $result = $hzUpDownService->doUpDownFromWorker(); break; case 3: $result = Bll_JpPropBll::change_prop_price($queueInfo); break; } break; case 109: #109房源小区变更 switch ($queueInfo['site_type']) { case 1: $result = Bll_EsfPropBll::change_prop_comm($queueInfo); break; case 2: $result = $hzUpDownService->doUpDownFromWorker(); break; case 3: $result = Bll_JpPropBll::change_prop_comm($queueInfo); break; } break; case 110: #110房源图片信息变更 switch ($queueInfo['site_type']) { case 1: $result = Bll_EsfPropBll::change_prop_pic($queueInfo); break; case 2: $result = $hzUpDownService->doUpDownFromWorker(); break; case 3: $result = Bll_JpPropBll::change_prop_pic($queueInfo); break; } break; case Const_ProPlanChangeType::PRO_ADD_TO_COMBO: switch ($queueInfo['site_type']) { case 1: $result = Bll_EsfPropBll::pro_start_combo($queueInfo); break; case 2: $result = $hzUpDownService->doUpDownFromWorker(); break; case 3: $result = Bll_JpPropBll::pro_start_combo($queueInfo); break; } break; case Const_ProPlanChangeType::PRO_REMOVE_FROM_COMBO: switch ($queueInfo['site_type']) { case 1: $result = Bll_EsfPropBll::pro_stop_combo($queueInfo); break; case 2: $result = $hzUpDownService->doUpDownFromWorker(); break; case 3: $result = Bll_JpPropBll::pro_stop_combo($queueInfo); break; } break; case 201: #201计划新建 switch ($queueInfo['site_type']) { case 1: $result = Bll_EsfPlanBll::create_plan($queueInfo); break; case 2: $result = $hzUpDownService->doUpDownFromWorker(); break; case 3: $result = Bll_JpFixPlanBll::create_plan($queueInfo); break; } break; case 202: #202计划修改 switch ($queueInfo['site_type']) { case 1: $result = Bll_EsfPlanBll::change_plan($queueInfo); break; case 2: $result = $hzUpDownService->doUpDownFromWorker(); break; case 3: $result = Bll_JpFixPlanBll::change_plan($queueInfo); break; } break; case 203: #203计划修改 switch ($queueInfo['site_type']) { case 1: $result = Bll_EsfPlanBll::delete_plan($queueInfo); break; case 2: $result = $hzUpDownService->doUpDownFromWorker(); break; case 3: $result = Bll_JpFixPlanBll::delete_plan($queueInfo); break; } break; case 204: #204增加计划限额 switch ($queueInfo['site_type']) { case 1: $result = Bll_EsfPlanBll::add_plan_budget($queueInfo); break; case 2: $result = $hzUpDownService->doUpDownFromWorker(); break; case 3: $result = Bll_JpFixPlanBll::add_plan_budget($queueInfo); break; } break; case 205: #205减少计划限额 switch ($queueInfo['site_type']) { case 1: $result = Bll_EsfPlanBll::low_plan_budget($queueInfo); break; case 2: $result = $hzUpDownService->doUpDownFromWorker(); break; case 3: $result = Bll_JpFixPlanBll::low_plan_budget($queueInfo); break; } break; case 206: #206计划限额不足 switch ($queueInfo['site_type']) { case 1: $result = Bll_EsfPlanBll::plan_budget_top($queueInfo); break; case 2: $result = $hzUpDownService->doUpDownFromWorker(); break; case 3: $result = Bll_JpFixPlanBll::plan_budget_top($queueInfo); break; } break; case 207: #207计划手动停止 switch ($queueInfo['site_type']) { case 1: $result = Bll_EsfPlanBll::handle_plan_stop($queueInfo); break; case 2: $result = $hzUpDownService->doUpDownFromWorker(); break; case 3: $result = Bll_JpFixPlanBll::handle_plan_stop($queueInfo); break; } break; case 208: #208计划手动开启 switch ($queueInfo['site_type']) { case 1: $result = Bll_EsfPlanBll::handle_plan_start($queueInfo); break; case 2: $result = $hzUpDownService->doUpDownFromWorker(); break; case 3: $result = Bll_JpFixPlanBll::handle_plan_start($queueInfo); break; } break; case 301: #301账户余额不足 switch ($queueInfo['site_type']) { case 1: $result = Bll_EsfBrokerBll::broker_balance_less($queueInfo); break; case 2: $result = $hzUpDownService->doUpDownFromWorker(); break; case 3: $result = Bll_JpBrokerBll::broker_balance_less($queueInfo); break; case 4: $ajk_res = Bll_EsfBrokerBll::broker_balance_less($queueInfo); $hz_res = $hzUpDownService->doUpDownFromWorker(); $jp_res = Bll_JpBrokerBll::broker_balance_less($queueInfo); $result = array('ajk' => $ajk_res, 'hz' => $hz_res, 'jp' => $jp_res); break; } break; case 302: #302用户充值 switch ($queueInfo['site_type']) { case 1: $result = Bll_EsfBrokerBll::broker_recharge($queueInfo); break; case 2: $result = $hzUpDownService->doUpDownFromWorker(); break; case 3: $result = Bll_JpBrokerBll::broker_recharge($queueInfo); break; case 4: $ajk_res = Bll_EsfBrokerBll::broker_recharge($queueInfo); $hz_res = $hzUpDownService->doUpDownFromWorker(); $jp_res = Bll_JpBrokerBll::broker_recharge($queueInfo); $result = array('ajk' => $ajk_res, 'hz' => $hz_res, 'jp' => $jp_res); break; } break; case 303: #303竞价结算 switch ($queueInfo['site_type']) { case 1: $result = Bll_EsfBrokerBll::broker_frozen_money($queueInfo); break; case 2: $result = $hzUpDownService->doUpDownFromWorker(); break; case 3: $result = Bll_JpBrokerBll::broker_frozen_money($queueInfo); break; case 4: $ajk_res = Bll_EsfBrokerBll::broker_frozen_money($queueInfo); $hz_res = $hzUpDownService->doUpDownFromWorker(); $jp_res = Bll_JpBrokerBll::broker_frozen_money($queueInfo); $result = array('ajk' => $ajk_res, 'hz' => $hz_res, 'jp' => $jp_res); break; } break; case 304: #304系统返还 switch ($queueInfo['site_type']) { case 1: $result = Bll_EsfBrokerBll::broker_restitution($queueInfo); break; case 2: $result = $hzUpDownService->doUpDownFromWorker(); break; case 3: $result = Bll_JpBrokerBll::broker_restitution($queueInfo); break; case 4: $ajk_res = Bll_EsfBrokerBll::broker_restitution($queueInfo); $hz_res = $hzUpDownService->doUpDownFromWorker(); $jp_res = Bll_JpBrokerBll::broker_restitution($queueInfo); $result = array('ajk' => $ajk_res, 'hz' => $hz_res, 'jp' => $jp_res); break; } break; case Const_ProPlanChangeType::COMBO_CREATE: switch ($queueInfo['site_type']) { case Const_ProPlanChangeType::SITE_TYPE_AJK: $result = Bll_Combo_Updown_AjkDealJob::comboCreate($queueInfo); break; case Const_ProPlanChangeType::SITE_TYPE_HZ: $result = $hzUpDownService->doUpDownFromWorker(); break; case Const_ProPlanChangeType::SITE_TYPE_JP: $result = Bll_Combo_Updown_JpDealJob::comboCreate($queueInfo); break; case Const_ProPlanChangeType::SITE_TYPE_ALL: $ajk_res = Bll_Combo_Updown_AjkDealJob::comboCreate($queueInfo); $hz_res = $hzUpDownService->doUpDownFromWorker(); $jp_res = Bll_Combo_Updown_JpDealJob::comboCreate($queueInfo); $result = array('ajk' => $ajk_res, 'hz' => $hz_res, 'jp' => $jp_res); break; } break; case Const_ProPlanChangeType::COMBO_EFFECT: switch ($queueInfo['site_type']) { case Const_ProPlanChangeType::SITE_TYPE_AJK: $result = Bll_Combo_Updown_AjkDealJob::comboEffect($queueInfo); break; case Const_ProPlanChangeType::SITE_TYPE_HZ: $result = $hzUpDownService->doUpDownFromWorker(); break; case Const_ProPlanChangeType::SITE_TYPE_JP: $result = Bll_Combo_Updown_JpDealJob::comboEffect($queueInfo); break; case Const_ProPlanChangeType::SITE_TYPE_ALL: $ajk_res = Bll_Combo_Updown_AjkDealJob::comboEffect($queueInfo); $hz_res = $hzUpDownService->doUpDownFromWorker(); $jp_res = Bll_Combo_Updown_JpDealJob::comboEffect($queueInfo); $result = array('ajk' => $ajk_res, 'hz' => $hz_res, 'jp' => $jp_res); break; } break; case Const_ProPlanChangeType::COMBO_EXPIRE: switch ($queueInfo['site_type']) { case Const_ProPlanChangeType::SITE_TYPE_AJK: $result = Bll_Combo_Updown_AjkDealJob::comboExpire($queueInfo); break; case Const_ProPlanChangeType::SITE_TYPE_HZ: $result = $hzUpDownService->doUpDownFromWorker(); break; case Const_ProPlanChangeType::SITE_TYPE_JP: $result = Bll_Combo_Updown_JpDealJob::comboExpire($queueInfo); break; case Const_ProPlanChangeType::SITE_TYPE_ALL: $ajk_res = Bll_Combo_Updown_AjkDealJob::comboExpire($queueInfo); $hz_res = $hzUpDownService->doUpDownFromWorker(); $jp_res = Bll_Combo_Updown_JpDealJob::comboExpire($queueInfo); $result = array('ajk' => $ajk_res, 'hz' => $hz_res, 'jp' => $jp_res); break; } break; case Const_ProPlanChangeType::COMBO_EXPORT: switch ($queueInfo['site_type']) { case Const_ProPlanChangeType::SITE_TYPE_AJK: $result = Bll_Combo_Updown_AjkDealJob::comboExport($queueInfo); break; case Const_ProPlanChangeType::SITE_TYPE_HZ: $result = $hzUpDownService->doUpDownFromWorker(); break; case Const_ProPlanChangeType::SITE_TYPE_JP: $result = Bll_Combo_Updown_JpDealJob::comboExport($queueInfo); break; case Const_ProPlanChangeType::SITE_TYPE_ALL: $ajk_res = Bll_Combo_Updown_AjkDealJob::comboExport($queueInfo); $hz_res = $hzUpDownService->doUpDownFromWorker(); $jp_res = Bll_Combo_Updown_JpDealJob::comboExport($queueInfo); $result = array('ajk' => $ajk_res, 'hz' => $hz_res, 'jp' => $jp_res); break; } break; case Const_ProPlanChangeType::COMBO_IMPORT: switch ($queueInfo['site_type']) { case Const_ProPlanChangeType::SITE_TYPE_AJK: $result = Bll_Combo_Updown_AjkDealJob::comboImport($queueInfo); break; case Const_ProPlanChangeType::SITE_TYPE_HZ: $result = $hzUpDownService->doUpDownFromWorker(); break; case Const_ProPlanChangeType::SITE_TYPE_JP: $result = Bll_Combo_Updown_JpDealJob::comboImport($queueInfo); break; case Const_ProPlanChangeType::SITE_TYPE_ALL: $ajk_res = Bll_Combo_Updown_AjkDealJob::comboImport($queueInfo); $hz_res = $hzUpDownService->doUpDownFromWorker(); $jp_res = Bll_Combo_Updown_JpDealJob::comboImport($queueInfo); $result = array('ajk' => $ajk_res, 'hz' => $hz_res, 'jp' => $jp_res); break; } break; case Const_ProPlanChangeType::ACTIVITY_RES_ADD: //房产季活动房源打标签 switch ($queueInfo['site_type']) { case Const_ProPlanChangeType::SITE_TYPE_AJK: $result = Bll_Activity_DealJob::activityResAddAjk($queueInfo); break; case Const_ProPlanChangeType::SITE_TYPE_HZ: $result = Bll_Activity_DealJob::activityResAddHz($queueInfo); break; case Const_ProPlanChangeType::SITE_TYPE_JP: break; case Const_ProPlanChangeType::SITE_TYPE_ALL: break; } break; case Const_ProPlanChangeType::ACTIVITY_RES_REMOVE: //房产季活动房源取消打标签 switch ($queueInfo['site_type']) { case Const_ProPlanChangeType::SITE_TYPE_AJK: $result = Bll_Activity_DealJob::activityResRemoveAjk($queueInfo); break; case Const_ProPlanChangeType::SITE_TYPE_HZ: $result = Bll_Activity_DealJob::activityResRemoveHz($queueInfo); break; case Const_ProPlanChangeType::SITE_TYPE_JP: break; case Const_ProPlanChangeType::SITE_TYPE_ALL: break; } break; case Const_ProPlanChangeType::COMMUNITY_INFO_CHANGE: // 小区信息变更 $result = Bll_Community_UpDownDeal::communityInfoChange($queueInfo); break; case Const_ProPlanChangeType::COMMUNITY_INFO_CHANGE_EX: // 小区信息变更 批量 switch ($queueInfo['site_type']) { case Const_ProPlanChangeType::SITE_TYPE_AJK: $result = Bll_Community_UpDownDeal::ajkCommunityInfoChangeEx($queueInfo); break; case Const_ProPlanChangeType::SITE_TYPE_HZ: $result = Bll_Community_UpDownDeal::hzCommunityInfoChangeEx($queueInfo); break; case Const_ProPlanChangeType::SITE_TYPE_JP: break; case Const_ProPlanChangeType::SITE_TYPE_ALL: break; } break; case Const_ProPlanChangeType::COMM_MERGE: switch ($queueInfo['site_type']) { case Const_ProPlanChangeType::SITE_TYPE_AJK: $result = Bll_Community_UpDownDeal::ajkCommunityMerge($queueInfo); break; default: $result = array('status' => 1, 'msg' => '不处理'); } break; case Const_ProPlanChangeType::COMMUNITY_AREA_CHANGE: //区域板块变更 $result = Bll_Community_UpDownDeal::communityAreaChange($queueInfo); break; case Const_ProPlanChangeType::COMMUNITY_AREA_CHANGE_EX: //区域板块变更 $result = Bll_Community_UpDownDeal::communityAreaChangeEx($queueInfo); break; /** 价格段变更 */ /** 价格段变更 */ case Const_ProPlanChangeType::PRICE_INTERVAL_CHANGE: switch ($queueInfo['site_type']) { case Const_ProPlanChangeType::SITE_TYPE_AJK: $result = Bll_House_EsfPriceInterval::upDownDeal($queueInfo); break; default: $result = array('status' => 1, 'msg' => '不处理'); } break; /** 商铺的物业板块变更处理 */ /** 商铺的物业板块变更处理 */ case Const_ProPlanChangeType::PROPERTY_AREA_CHANGE: switch ($queueInfo['site_type']) { case Const_ProPlanChangeType::SITE_TYPE_JP: $result = Bll_Community_UpDownDeal::propertyAreaChange($queueInfo); break; default: $result = array('status' => 1, 'msg' => '不处理'); } break; /** 写字楼的building的板块变更处理 */ /** 写字楼的building的板块变更处理 */ case Const_ProPlanChangeType::BUILDING_AREA_CHANGE: switch ($queueInfo['site_type']) { case Const_ProPlanChangeType::SITE_TYPE_JP: $result = Bll_Community_UpDownDeal::buildingAreaChange($queueInfo); break; default: $result = array('status' => 1, 'msg' => '不处理'); } break; } $result = self::formatOutMsg($result, $queueInfo['site_type']); return $result; }
/** * 503 套餐到期 * 1. 获取经纪人当前的套餐信息 * 2. 如果经纪人没有套餐 * 1. 下掉经纪人所有的的套餐房源&竞价计划 * 3. 判断经纪人当前在线的房源数和经纪人当前生效的套餐能够推广的房源数 * 1. 如果当前推广的房源数 大于 套餐可以推广的房源数,把多余的房子下掉(按房源发布时间 倒序排列) * * @param $queueInfo * @return array */ public static function comboExpire($queueInfo) { $houseOnlineRelationList = Bll_Combo_HouseRelation::getOnlineHouseList($queueInfo['broker_id'], $queueInfo['city_id'], Bll_Combo_HouseRelation::SITE_TYPE_AJK); $currentCombo = Bll_Combo_Broker_BrokerComboInfo::getBrokerCurrentCombo($queueInfo['broker_id'], Bll_Combo_Broker_BrokerComboInfo::SITE_TYPE_AJK); /** 添加打通的套餐的逻辑 */ if (!empty($currentCombo) && Bll_Combo_Broker_BrokerComboInfo::isOpenUp($currentCombo)) { $dealRemark = array('当前套餐为打通套餐'); $comboSpreadHouseCount = $currentCombo['salePropNum'] + $currentCombo['rentPropNum']; $hzHouseOnlineRelationList = Bll_Combo_HouseRelation::getOnlineHouseList($queueInfo['broker_id'], $queueInfo['city_id'], Bll_Combo_HouseRelation::SITE_TYPE_HZ); $spreadHouseCount = count($hzHouseOnlineRelationList) + count($houseOnlineRelationList); if ($spreadHouseCount <= $comboSpreadHouseCount) { $dealRemark[] = sprintf('%d 经纪人当前[%s]套餐,可推广房源数大于当前在线房源数,不处理。', $queueInfo['id'], date('Y-m-d H:i:s')); return static::buildReturn(self::PROCESS_STATUS_SUCCESS, $dealRemark); } $rangedHouseRelation = Bll_Combo_Updown_AjkDealJob::calculateRangeByCreated($houseOnlineRelationList, $hzHouseOnlineRelationList); $offLineHouseOnlineRelationList = array_slice($rangedHouseRelation, $comboSpreadHouseCount); $fail = array(); $success = array(); foreach ($offLineHouseOnlineRelationList as $offLineHouseOnlineRelation) { $offLineHouseId = $offLineHouseOnlineRelation['houseId']; $siteType = $offLineHouseOnlineRelation['siteType']; $logRemark = static::offLineHouse($queueInfo, array($offLineHouseId), '经纪人套餐到期下架房源', 0); $dealRemark = array_merge($dealRemark, $logRemark); if (1 == Bll_Combo_HouseRelation::updateHouseComboSpreadState($queueInfo['broker_id'], array($offLineHouseId), $siteType, Model_Combo_HouseRelation::ENUM_COMBO_EXPIRE)) { $success[] = $offLineHouseId; } else { $fail[] = $offLineHouseId; } } if (!empty($fail)) { $dealRemark[] = sprintf('下掉经纪人超出房源(%s)失败', implode(', ', $fail)); } if (!empty($success)) { $dealRemark[] = sprintf('下掉经纪人超出房源(%s)成功', implode(', ', $success)); } return static::buildReturn(self::PROCESS_STATUS_SUCCESS, $dealRemark); } if (empty($houseOnlineRelationList)) { return static::buildReturn(self::PROCESS_STATUS_SUCCESS, '经纪人没有在线房源,不处理。'); } $onlineHouseIds = array(); foreach ($houseOnlineRelationList as $houseOnlineRelation) { $onlineHouseIds[] = $houseOnlineRelation['houseId']; } /** 当前没有生效的套餐,下掉所有的房子 */ if (empty($currentCombo)) { $dealRemark = static::offLineHouse($queueInfo, $onlineHouseIds, '经纪人套餐到期下架房源', 0); if (!Bll_Combo_HouseRelation::expiredBrokerCombo($queueInfo['broker_id'], $queueInfo['city_id'], Bll_Combo_HouseRelation::SITE_TYPE_AJK)) { $dealRemark[] = sprintf('修改经纪人在线房源(%s)套餐关系状态为过期失败', implode(', ', $onlineHouseIds)); } else { $dealRemark[] = sprintf('修改经纪人在线房源(%s)套餐关系状态为过期成功', implode(', ', $onlineHouseIds)); } $dealRemark[] = sprintf('%d 经纪人当前[%s]没有生效的租售套餐,下架房源[ %s ]', $queueInfo['id'], date('Y-m-d H:i:s'), implode(',', $onlineHouseIds)); return static::buildReturn(self::PROCESS_STATUS_SUCCESS, $dealRemark); } /** * 当前经纪人的套餐可推广房源数,大于当前在线房源,不处理。 */ if ($currentCombo['salePropNum'] >= count($onlineHouseIds)) { return static::buildReturn(self::PROCESS_STATUS_SUCCESS, sprintf('%d 经纪人当前[%s]租售套餐,可推广房源数,大于当前在线房源数,不处理。(%s)', $queueInfo['id'], date('Y-m-d H:i:s'), implode(', ', $onlineHouseIds))); } /** * 当前经纪人套餐可推广房源数小于推广中的房源,下掉多余的房源。 */ $offLineHouseIds = array_slice($onlineHouseIds, $currentCombo['salePropNum']); $dealRemark = static::offLineHouse($queueInfo, $offLineHouseIds, '经纪人套餐到期下架房源', 0); if (count($offLineHouseIds) != Bll_Combo_HouseRelation::updateHouseComboSpreadState($queueInfo['broker_id'], $offLineHouseIds, Bll_Combo_HouseRelation::SITE_TYPE_AJK, Model_Combo_HouseRelation::ENUM_COMBO_EXPIRE)) { $dealRemark[] = sprintf('下掉经纪人超出房源(%s)失败', implode(', ', $offLineHouseIds)); } else { $dealRemark[] = sprintf('下掉经纪人超出房源(%s)成功', implode(', ', $offLineHouseIds)); } $dealRemark[] = sprintf('%d 经纪人当前[%s]租售套餐,可推广房源数小于当前在线房源数,下架房源[ %s ]', $queueInfo['id'], date('Y-m-d H:i:s'), implode(',', $offLineHouseIds)); return static::buildReturn(self::PROCESS_STATUS_SUCCESS, $dealRemark); }