public function handle_request() { //获取标记参数 $arrFlag = $this->getFlag(); //默认分表 $SplitTable = date('Ymd'); //读取到那边 $Id = 0; //标记赋值 if (is_array($arrFlag) && !empty($arrFlag['SplitTable']) && !empty($arrFlag['Id'])) { $SplitTable = $arrFlag['SplitTable']; $Id = $arrFlag['Id']; } //获取中间表待处理数据 $ProSpreadChangeList = DAO_Plan_HpProSpreadChange::getProSpreadChangeListToJob($Id, $SplitTable); if (empty($ProSpreadChangeList)) { //游标重置 if ($SplitTable != date('Ymd')) { $SplitTable = date('Ymd', strtotime($SplitTable) + 24 * 3600); $Id = 0; } //程序停止标记 $this->setStop(); //程序游标标记设置 $this->setFlag(array('SplitTable' => $SplitTable, 'Id' => $Id)); exit; } //数据导入 foreach ($ProSpreadChangeList as $list) { //游标重置 $Id = $list['Id']; //程序游标标记设置 $this->setFlag(array('SplitTable' => $SplitTable, 'Id' => $Id)); if (!isset($this->typeChange[$list['Type']])) { $log = sprintf('brokerId=%d planId=%d proId=%d type=%d cityId=%d', $list['BrokerId'], $list['SpreadId'], $list['ProId'], $list['Type'], $list['CityId']); $msg = sprintf('[%s] %d %s', date('Y-m-d H:i:s'), $Id, $log); $this->setLog($msg); continue; } // 11 -房源编辑时定价推广 if (false && !in_array($list['Type'], array(1, 5, 6, 7, 8, 10, 12, 13, 14, 16, 18, 11))) { $log = sprintf('brokerId=%d planId=%d proId=%d type=%d cityId=%d 房源日志,不从旧队列同步到上下架队列。', $list['BrokerId'], $list['SpreadId'], $list['ProId'], $list['Type'], $list['CityId']); $this->setLog(sprintf('[%s] %d %s', date('Y-m-d H:i:s'), $Id, $log)); continue; } try { //数据写入新队列 DAO_Plan_qHpProPlanChange::insertqHpProPlanChange(array('broker_id' => $list['BrokerId'], 'plan_id' => $list['SpreadId'], 'pro_id' => $list['ProId'], 'type' => $this->typeChange[$list['Type']], 'from' => $list['From'], 'remark' => $list['Remark'], 'site_type' => $this->typeChange[$list['Type']] > 300 ? 4 : 1, 'city_id' => $list['CityId'], 'add_date' => time(), 'flag' => 0, 'operate_id' => $list['OperateId'])); } catch (Exception $e) { $this->setLog(print_r($e, true)); } } return true; }
public function insertProPlanChange($arr, $operate_id = 0) { //数据来源标记不能为空 if (!isset($arr['from']) || empty($arr['from'])) { return array('status' => 'err', 'msg' => '参数from不能为空'); } //数据网站类型判断 if (!isset($arr['site_type']) || !in_array($arr['site_type'], array(1, 2, 3, 4))) { return array('status' => 'err', 'msg' => '参数site_type不能为空或错误'); } $classInfo = new ReflectionClass('Const_ProPlanChangeType'); $type = $classInfo->getConstant(strtoupper($arr['type'])); if ($type === false) { return array('status' => 'err', 'msg' => '未知的动作类型'); } $arr['type'] = $type; //选传字段 if (isset($arr['pro_id'])) { if (empty($arr['pro_id'])) { unset($arr['pro_id']); } elseif (!is_numeric($arr['pro_id'])) { return array('status' => 'err', 'msg' => '参数pro_id错误'); } } if (isset($arr['plan_id'])) { if (empty($arr['plan_id'])) { unset($arr['plan_id']); } elseif (!is_numeric($arr['plan_id'])) { return array('status' => 'err', 'msg' => '参数plan_id错误'); } } /** 无须Check经纪人信息 */ $notCheckBroker = array(Const_ProPlanChangeType::PRICE_INTERVAL_CHANGE, Const_ProPlanChangeType::PRICE_INTERVAL_ADD, Const_ProPlanChangeType::BUILDING_AREA_CHANGE, Const_ProPlanChangeType::PROPERTY_AREA_CHANGE, Const_ProPlanChangeType::COMMUNITY_INFO_CHANGE_EX, Const_ProPlanChangeType::COMM_MERGE); if (!in_array($type, $notCheckBroker)) { //参数判断(处理),必传字段 if (!isset($arr['broker_id']) || empty($arr['broker_id'])) { return array('status' => 'err', 'msg' => '参数broker_id不能为空'); } $DaoBrokerInfo = new Dao_Broker_BrokerInfo(); $broker_info = $DaoBrokerInfo->get_broker_base_info($arr['broker_id']); if (empty($broker_info)) { return array('status' => 'err', 'msg' => '未知的经纪人'); } if (!($broker_info['PAYTYPE'] == 9999 || $broker_info['PAYTYPE'] == 10000)) { return array('status' => 'err', 'msg' => '经纪人非ppc经纪人'); } $arr['city_id'] = $broker_info['CITYID']; } else { $remark = json_decode($arr['remark'], true); if (!is_array($remark) || !isset($remark['cityId'])) { return array('status' => 'err', 'msg' => 'remark 必须是JSON,有cityId字段'); } $arr['city_id'] = intval($remark['cityId']); } $arr['add_date'] = time(); $arr['flag'] = 0; $arr['operate_id'] = is_numeric($operate_id) ? $operate_id : 0; $arr['remark'] = $this->getPlanStatusRemark($arr['pro_id'], $arr['city_id'], $arr['remark'], $arr['type'], $arr['site_type']); //数据写入 if (!DAO_Plan_qHpProPlanChange::insertqHpProPlanChange($arr, date('Ymd'))) { return array('status' => 'err', 'msg' => '数据写入失败'); } return array('status' => 'ok'); }