Ejemplo n.º 1
0
 /**
  * 返回定价上下架worker具体处理信息
  *
  * @param $flag 0-异常(需重复处理) 1-处理结束
  * @param string $msg 处理结果
  * @return array
  */
 public static function build_return($flag, $msg = '')
 {
     if (BLL_Fixedspread_StaticPlanUpDownSwicher::isDebug()) {
         var_dump(json_encode(array('status' => $flag, 'msg' => $msg)));
     }
     return array('status' => $flag, 'msg' => $msg);
 }
 /**
  * @return bool|multitype true 输出debug信息
  */
 public static function isDebug()
 {
     if (!isset(self::$debugeSwither)) {
         self::$debugeSwither = APF::get_instance()->get_config("static_plan_up_down_debug_switch");
     }
     return self::$debugeSwither;
 }
Ejemplo n.º 3
0
 public static function plan_budget_top($params)
 {
     $all_return = array();
     $all_return[] = "队列(" . $params['id'] . ")开始处理";
     //获取计划信息
     $fixPlanInfoObj = Model_Plan_Jp::getPlanInfoByPk($params['plan_id']);
     if ($fixPlanInfoObj) {
         $all_return[] = "定价计划" . $fixPlanInfoObj->id . ",status=" . $fixPlanInfoObj->status . ",no_budget_date=" . $fixPlanInfoObj->noBudgetDate;
         if (BLL_Fixedspread_StaticPlanUpDownSwicher::isOnline()) {
             //更新计划信息
             $fixPlanInfoObj->noBudgetDate = time();
             $fixPlanInfoObj->save();
             $all_return[] = "更新计划nobudget数据成功";
         }
         if ($params['remark']) {
             $remark = json_decode($params['remark'], true);
             foreach ($remark as $houseId) {
                 $params['pro_id'] = $houseId;
                 $data = Bll_JpPropBll::build_prop_log($params, 7, "房源第二天推广", $params['broker_id']);
                 if (!Model_Log_HouseLogNew::create($data, date('Ymd'))->save()) {
                     $all_return[] = "房源" . $params['pro_id'] . "第二天推广日志写入失败";
                 } else {
                     $all_return[] = "房源" . $params['pro_id'] . "第二天推广日志写入成功";
                 }
             }
         }
     }
     //写限额不足计划日志
     $data = self::build_plan_log($params, 6, "计划限额不足停止", 0);
     Model_House_UpDown_PlanLog::create($data, date('m'))->save();
     $all_return[] = "计划限额不足日志写入成功";
     return Bll_JpPropBll::build_return(1, $all_return);
 }
Ejemplo n.º 4
0
 /**
  * 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);
 }
Ejemplo n.º 5
0
 public static function delete_prop($params)
 {
     //是否套餐经纪人,套餐单独处理
     //$broker_info = Dao_Broker_BrokerInfo::get_broker_base_info($params['broker_id']);
     if (Bll_City::isComboCity($params['city_id'])) {
         return self::delete_combo_prop($params);
     }
     if (empty($params['pro_id'])) {
         return self::build_return(0, array("房源ID为空"));
     }
     $out_return[] = "队列(" . $params['id'] . ")开始处理";
     $remark = json_decode($params['remark'], 1);
     if ($remark['fix'] == 'online') {
         //记录房源手动移除定价组日志
         $data = self::build_prop_log($params, 11, "房源移出定价组", $params['broker_id']);
         if (Model_Log_HouseLogNew::create($data, date('Ymd'))->save()) {
             $all_return[] = "房源手动移出定价组日志写入成功";
         } else {
             $all_return[] = "房源手动移出定价组日志写入失败";
         }
         //写入下线日志
         $data = self::build_prop_log($params, 6, "房源下线", $params['broker_id']);
         if (Model_Log_HouseLogNew::create($data, date('Ymd'))->save()) {
             $all_return[] = "房源" . $params['pro_id'] . "下线日志写入成功";
         } else {
             $all_return[] = "房源" . $params['pro_id'] . "下线日志写入失败";
         }
     } elseif ($remark['fix'] == 'stop') {
         //记录房源手动移除定价组日志
         $data = self::build_prop_log($params, 11, "房源移出定价组", $params['broker_id']);
         if (Model_Log_HouseLogNew::create($data, date('Ymd'))->save()) {
             $all_return[] = "房源手动移出定价组日志写入成功";
         } else {
             $all_return[] = "房源手动移出定价组日志写入失败";
         }
     }
     //获取房源分表信息
     if (BLL_Fixedspread_StaticPlanUpDownSwicher::isOnline()) {
         $houseInfoObj = Model_House_JpHouseIdx::getPropInfoByPk($params['pro_id']);
         $houseClass = Model_House_JpHouseIdx::getHouseTypeModelClass($houseInfoObj->houseType);
         $houseObj = $houseClass::getPropInfoByPk($params['pro_id']);
         //更新删除房源时间
         $houseObj->deleteTime = date("Y-m-d H:i:s");
         $houseObj->save();
         $all_return[] = "houseType:" . $houseInfoObj->houseType . ",deleteTime:0=>" . date("Y-m-d H:i:s");
     }
     //写房源删除日志
     $data = self::build_prop_log($params, 3, "房源删除", 0);
     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);
     }
 }
Ejemplo n.º 6
0
 /**
  * 303竞价结算
  * 1. 查询经纪人所有有效计划,
  *      没有计划return
  *
  * 2. 基于推广计划,查询计划下有效房源(循环计划查询)
  *
  *      判断计划状态
  *          推广中,contine
  *          第二天推广,continue
  *          手动停止,continue
  *          账户限额不足,计划置为推广中,记录计划推广日志
  *      查询计划下房源关系,
  *          如果为空,contine
  *          不为空,判断计划状态
  *                  如果账户余额不足,记录房源推广日志
  */
 public static function broker_frozen_money($params)
 {
     if (empty($params['broker_id'])) {
         return Bll_JpPropBll::build_return(1, array("经纪人ID为空"));
     }
     $returnLog = array();
     //获取账户余额
     try {
         $userId = Bll_Broker_MainBusiness::getDataByEsfId($params['broker_id'])->memberId;
         $balance = Bll_Service_Payment::balance(Bll_Service_Payment::SITE_ANJUKE, array('userId' => $userId));
     } catch (Exception $e) {
         array_push($returnLog, "获取账户余额不足失败");
         return Bll_JpPropBll::build_return(0, $returnLog);
     }
     if ($balance['data']['balance'] <= 0) {
         array_push($returnLog, "当前账户余额不足");
         return Bll_JpPropBll::build_return(1, $returnLog);
     }
     array_push($returnLog, "当前账户余额:" . $balance['data']['balance']);
     //获取经纪人正在推广的计划
     $StaticPricePlanList = DAO_Plan_StaticPricePlan::getStaticPricePlanListByBrokerId($params['broker_id']);
     foreach ($StaticPricePlanList as $list) {
         if ($list['Status'] != 1) {
             //无效的计划
             array_push($returnLog, "无效的计划:" . $list['Id'] . ";");
             continue;
         }
         if ($list['ViewTime'] != 1893427200) {
             //非账户没钱停止的计划
             array_push($returnLog, "计划Id:" . $list['Id'] . "展示时间:" . date("Y-m-d H:i:s", $list['ViewTime']) . ";");
             continue;
         }
         $tmpStr = "计划Id:" . $list['Id'] . "展示时间:" . date("Y-m-d H:i:s", $list['ViewTime']) . ";";
         //获取计划下面的房源
         $StaticPriceRelation = DAO_Plan_StaticPriceRelation::getProSpreadRelation($list['Id'], $list['CityId']);
         //更新计划的状态
         if (BLL_Fixedspread_StaticPlanUpDownSwicher::isOnline()) {
             DAO_Plan_StaticPricePlan::updateStaticPricePlanById(array('Id' => $list['Id'], 'ViewTime' => time()));
         }
         //记录计划日志
         $params['plan_id'] = $list['Id'];
         $data = self::build_plan_log($params, 8, "账户有钱计划推广,动作id:" . $params['id'], $params['broker_id']);
         if (!Model_House_UpDown_PlanLog::create($data, date('m'))->save()) {
             array_push($returnLog, "账户有钱计划推广日志写入失败");
             return Bll_JpPropBll::build_return(0, $returnLog);
         }
         //记录房源日志
         foreach ($StaticPriceRelation as $Relation) {
             $params['pro_id'] = $Relation['ProId'];
             $data = Bll_EsfPropBll::build_prop_log($params, 5, "房源推广,动作id:" . $params['id'], $params['broker_id']);
             if (!Model_Log_HouseLogNew::create($data, date('Ymd'))->save()) {
                 array_push($returnLog, "房源" . $Relation['ProId'] . "房源推广日志写入失败");
                 return Bll_JpPropBll::build_return(0, $returnLog);
             }
             $tmpStr .= $Relation['ProId'] . ",";
         }
         array_push($returnLog, $tmpStr);
     }
     if (empty($returnLog)) {
         array_push($returnLog, "经纪人没有计划");
     }
     return Bll_JpPropBll::build_return(1, $returnLog);
 }
Ejemplo n.º 7
0
 public static function broker_frozen_money($params)
 {
     $all_return[] = "队列(" . $params['id'] . ")开始处理";
     $all_return[] = '金铺竞价结算';
     //todo 查询用户所有定价计划,开启计划,上线房源
     $ajk_broker_id = $params['broker_id'];
     //获取金铺经纪人broker_id
     $jpBrokerInfoObj = Model_Broker_JpBroker::getJpBrokerInfoByAjkBrokerId($params['broker_id']);
     $params['broker_id'] = $jpBrokerInfoObj->id;
     //获取由于余额用完停止的计划
     $fixInfoObjs = Model_Plan_Jp::getNoBalancePlan($params['broker_id']);
     foreach ($fixInfoObjs as $fixInfoObj) {
         $plan_log = array();
         $plan_log['id'] = $params['id'];
         $plan_log['plan_id'] = $fixInfoObj->id;
         $plan_log['broker_id'] = $ajk_broker_id;
         $plan_log['city_id'] = $fixInfoObj->cityId;
         $plan_log['type'] = $params['type'];
         $plan_log = Bll_JpFixPlanBll::build_plan_log($plan_log, 8, "竞价结算返钱", 0);
         //写计划日志
         if (!Model_House_UpDown_PlanLog::create($plan_log, date('m'))->save()) {
             $all_return[] = "计划" . $plan_log['planId'] . "计划推广日志写入失败";
         } else {
             $all_return[] = "计划" . $plan_log['planId'] . "计划推广日志写入成功";
         }
         if (BLL_Fixedspread_StaticPlanUpDownSwicher::isOnline()) {
             //计划开启
             $fixInfoObj->status = 2;
             $fixInfoObj->stopReason = 0;
             if (!$fixInfoObj->save()) {
                 return array('status' => 0, 'msg' => array("定价计划" . $plan_log['planId'] . ",更新失败"));
             }
         }
         //获取房源列表
         $houseInfoObjs = Model_House_JpHouseIdx::getHouseInfoByFixPlanId($plan_log['planId']);
         if ($houseInfoObjs) {
             foreach ($houseInfoObjs as $houseInfoObj) {
                 $prop_log['id'] = $params['id'];
                 $prop_log['pro_id'] = $houseInfoObj->id;
                 $prop_log['plan_id'] = $plan_log['planId'];
                 $prop_log['broker_id'] = $ajk_broker_id;
                 $prop_log['city_id'] = $houseInfoObj->cityId;
                 $prop_log['type'] = $params['type'];
                 $prop_log = Bll_JpPropBll::build_prop_log($prop_log, 5, "竞价结算返钱", 0);
                 //写房源日志
                 if (!Model_Log_HouseLogNew::create($prop_log, date('Ymd'))->save()) {
                     $all_return[] = "房源" . $houseInfoObj->id . "竞价结算返钱后房源推广日志写入失败";
                 } else {
                     $all_return[] = "房源" . $houseInfoObj->id . "竞价结算返钱后房源推广日志写入成功";
                 }
                 if (BLL_Fixedspread_StaticPlanUpDownSwicher::isOnline()) {
                     //获取房源分表信息
                     $houseClass = Model_House_JpHouseIdx::getHouseTypeModelClass($houseInfoObj->houseType);
                     $houseObj = $houseClass::getPropInfoByPk($houseInfoObj->id);
                     //更新展示房源状态
                     $houseObj->isList = 1;
                     if ($houseObj->save()) {
                         $all_return[] = "houseType=" . $houseInfoObj->houseType . ",更新分表isList=1成功";
                     } else {
                         $all_return[] = "houseType=" . $houseInfoObj->houseType . ",更新分表isList=1失败";
                     }
                 }
             }
         }
     }
     return Bll_JpPropBll::build_return(1, $all_return);
 }