コード例 #1
0
ファイル: QueueMove.php プロジェクト: emilymwang8/ajk-broker
 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;
 }
コード例 #2
0
 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');
 }
コード例 #3
0
 /**
  * 更新队列日志状态
  * @param int id 队列ID
  * @param date 时间戳 用来确定后续拼接表名
  * @param memo 备注
  * @param flag 状态
  */
 public static function update_prospreadchange_status($id, $date, $memo, $flag)
 {
     $date = date('Ymd', $date);
     return DAO_Plan_qHpProPlanChange::updateqHpProPlanChange($id, $date, $memo, $flag);
 }