Exemplo n.º 1
0
 public static function change_bid_budget($plan_id, $new_amount)
 {
     $flag_array = array('status' => 0, 'msg' => '');
     $plan_info = Dao_Broker_HzPlan::get_plan($plan_id);
     if (empty($plan_info)) {
         $flag_array['msg'] = Const_HzErrorInfo::NULLPLAN;
         return $flag_array;
     }
     if ((int) ($plan_info['amount'] * 100) > (int) ($new_amount * 100)) {
         $flag_array['msg'] = Const_HzErrorInfo::BIDAMOUNTLOW;
         return $flag_array;
     } elseif ((int) ($plan_info['amount'] * 100) == (int) ($new_amount * 100)) {
         $flag_array['status'] = 1;
         return $flag_array;
     }
     $planning = Dao_Broker_HzPlan::get_planning($plan_id, Const_HzPlan::BID_TYPE, 1);
     if (empty($planning)) {
         $flag_array['msg'] = Const_HzErrorInfo::PROPFIXNULL;
         return $flag_array;
     }
     $broker_id = $planning[0]['user_id'];
     $proid = $planning[0]['proid'];
     $sn = Dao_Broker_HzPlan::get_bid_sn($plan_id);
     $user_id = Bll_HzBroker::get_userid_by_hzbrokerid($broker_id);
     $note = urlencode('推广房源' . $proid);
     $cha_amount = $new_amount - $plan_info['amount'];
     // 冻结只能冻结差值
     $freezeResult = Bll_PayAccount::freeze($user_id, $cha_amount, $proid, "ZF", $sn['sn'], $note);
     //冻结流水号
     if ($freezeResult['status'] === "error") {
         if ($freezeResult['errcode'] == 398445) {
             $flag_array['msg'] = Const_HzErrorInfo::BIDAMOUNTTOP;
         } else {
             $flag_array['msg'] = Const_HzErrorInfo::DATAFAIL;
         }
         return $flag_array;
     }
     $new_sn = $freezeResult['sn'];
     Dao_Broker_HzPlan::update_bid_extend($plan_id, $new_sn);
     $log_option = Const_HzLog::BIDUPDATE;
     if (Dao_Broker_HzPlan::change_plan_amount($plan_id, $new_amount)) {
         //更新预算,预算直接改输入值
         Dao_Broker_HzPlan::add_plan_log($plan_id, $planning[0]['proid'], $log_option, 2, $planning[0]['user_id'], 0, $plan_info['status'], $plan_info['status']);
         //记录日志
         //Dao_Broker_HzProp::into_prop_lucene($planning['proid'],$planning['city_id'],1);    //更新房源
         $flag_array['status'] = 1;
         return $flag_array;
     }
     $flag_array['msg'] = Const_HzErrorInfo::DATAFAIL;
     return $flag_array;
 }
Exemplo n.º 2
0
 /**
  * 删除经纪人定价组
  * @param $broker_id
  * @param $plan_id
  * @return array
  */
 public static function delete_broker_plan($broker_id, $plan_id)
 {
     //删除价组 条件判断
     $flag_array = array('status' => 0, 'msg' => '');
     if (empty($broker_id) || empty($plan_id)) {
         $flag_array['msg'] = Const_HzErrorInfo::PARAMS;
         return $flag_array;
     }
     $plan_info = Dao_Broker_HzPlan::get_plan($plan_id);
     if (empty($plan_info)) {
         $flag_array['msg'] = Const_HzErrorInfo::NULLPLAN;
         return $flag_array;
     }
     if ($plan_info['user_id'] != $broker_id) {
         $flag_array['msg'] = Const_HzErrorInfo::PLANINFOERROR;
         return $flag_array;
     }
     // 已删除
     if ($plan_info['status'] == Const_HzPlan::MANUALLY_PAUSE) {
         $flag_array['msg'] = Const_HzErrorInfo::PLANINFOERROR;
         return $flag_array;
     }
     $plannings = Dao_Broker_HzPlan::get_planning($plan_id);
     $proids = array();
     foreach ($plannings as $planning) {
         $proids[] = $planning['proid'];
     }
     $prop_option = Const_HzLog::DELPLANPROP;
     $status = Const_HzStatus::OUTLINE;
     // 房源更新状态
     $plan_status = Const_HzPlan::MANUALLY_PAUSE;
     // 计划状态
     $plan_option = Const_HzLog::DELPLAN;
     $proids_str = implode(',', $proids);
     $proinfo = Dao_Broker_HzProp::get_prop($proids);
     foreach ($plannings as $planning) {
         $basic_info = $proinfo[$planning['proid']]['content_basic'];
         //更新房源计划信息
         if (Dao_Broker_HzProp::change_prop_status($planning['proid'], $status)) {
             //更新房源状态
             if (Dao_Broker_HzPlan::update_planning($planning['id'], $plan_status)) {
                 //更新关联关系
                 Dao_Broker_HzPlan::add_prop_log($planning['proid'], $prop_option, $basic_info['userid'], $plan_id, $basic_info['status'], $status);
                 //记房源日志
                 // TODO 停止竞价
                 // TODO 下solr
                 //记录房源下线日志
                 if ($status != Const_HzStatus::ONLINE && $basic_info['status'] == Const_HzStatus::ONLINE) {
                     Dao_Broker_HzProp::ezft_assistant_log($planning['proid'], $basic_info['userid'], Const_HzPlan::SPREAD_TYPE, $basic_info['spread_type']);
                 }
                 //房源上下线日志
                 Dao_Broker_HzProp::add_updown_log($planning['proid'], $plan_id, Const_HzStatus::GOONLINE, $prop_option);
             }
         }
     }
     //更新计划
     Dao_Broker_HzPlan::update_plan_status($plan_id, $plan_status);
     //计划日志
     Dao_Broker_HzPlan::add_plan_log($plan_id, $proids_str, $plan_option, 1, $broker_id, 0, $plan_info['status'], $plan_status);
     $flag_array['status'] = 1;
     return $flag_array;
 }
Exemplo n.º 3
0
 /**
  * 拼接参数,供上下文使用
  * @param $params
  * @return array
  */
 private static function joinParams(&$params)
 {
     // 获取basic
     // bug42309 需取master
     if (!($basic = Dao_Broker_HzPlan::get_plan($params['planId'], true))) {
         return Bll_HzPropBll::build_return(0, array("获取好租计划失败"));
     }
     $params['userId'] = $basic['user_id'];
     $params['blockId'] = $basic['blockId'];
     $params['priceId'] = $basic['priceId'];
     $params['status'] = $basic['status'];
     $params['flag'] = $basic['flag'];
     $params['bidVersion'] = $basic['bidVersion'];
     //精选标记 1-竞价,2-精选
     $params['planId'] = $basic['id'];
     //计划id
     $params['totalConsume'] = $basic['total_consume'];
     //竞价、精选花费
     $params['is_valid'] = $params['isValid'] = $basic['status'];
     // 由于经纪人操作太快, 可能关系里的plan_id已经被更新成新的了
     // 所以队列表里加了proId
     // 此处兼容proId=0的情况
     if (!isset($params['proId']) || $params['proId'] == 0) {
         // 获取planning
         $planning = Dao_Broker_HzPlan::get_planning($params['planId'], 2, '', true);
         if (count($planning) < 1) {
             return Bll_HzPropBll::build_return(0, array("获取好租关系失败"));
         }
         $params['proId'] = $planning[0]['proid'];
     }
     // 获取城市id
     $userInfo = Model_Broker_HzUsersSearch::getUserInfoByUserId($params['userId']);
     $params['cityId'] = isset($userInfo['cityId']) ? $userInfo['cityId'] : 0;
     return Bll_HzPropBll::build_return(1, array("success"));
 }
Exemplo n.º 4
0
 /**
  * 208 计划手动开启
  * 查询计划信息
  * 如果计划status!=1 return
  *   记录计划推广日志
  *   判断计划是否是推广状态, 如非 return
  * 查询房源计划关系
  *   如果不存在 return
  *   记录房源推广日志
  *   更新关系状态 = 1
  */
 private function handle_plan_start()
 {
     $planInfo = $this->checkPlanIsEmpty();
     if ($planInfo['status'] != Const_HzPlan::SPREAD) {
         return;
     }
     $this->allReturn[] = "定价计划" . $planInfo['id'] . ",status=" . $planInfo['status'];
     /** Jackin Fix bug34418 */
     $broker_money = self::get_broker_balance_by_broker_id($this->params['ajk_broker_id']);
     // 余额不足
     if ($broker_money <= 0) {
         throw new Exception_BllErrorException('余额不足ajk_broker_id' . $this->params['ajk_broker_id']);
     }
     $plan_cost = Bll_HzFixPlan::get_plan_clickinfo($this->params['broker_id'], $this->params['plan_id']);
     if ($planInfo['amount'] <= $plan_cost[$this->params['plan_id']]['total_cost']) {
         throw new Exception_BllErrorException('限额不足');
     }
     $this->writePlanLog(4, '手动开始计划');
     $plannings = Dao_Broker_HzPlan::get_planning($this->params['plan_id']);
     if (empty($plannings)) {
         return;
     }
     foreach ($plannings as $planning) {
         // 更新状态为1
         if (!Dao_Broker_HzPlan::update_planning($planning['id'], Const_HzPlan::SPREAD)) {
             throw new Exception_BllErrorException("更新关系为手动开启推广失败,关系id={$planning['id']}");
         }
         $this->params['pro_id'] = $planning['proid'];
         // 维护房子状态
         Bll_HzPropBll::bulidHzProStatu($planning['proid']);
         //写入上线日志
         $this->writePropLog(5, '推广');
     }
 }
Exemplo n.º 5
0
 /**
  * 经纪人手动停止精选推广
  * 只将计划的状态状态设置为 Const_HzPlan::MENUOVER
  *
  * @param $ajkBrokerId
  * @param $planId
  * @param $ip
  * @return array
  */
 public static function stopChoicePlan($ajkBrokerId, $planId, $ip)
 {
     $result = array('status' => 'ok');
     $planInfo = Model_Plan_HzPlanBasic::get_plan_by_id($planId);
     if (empty($planInfo)) {
         return array('status' => 'error', 'msg' => '计划不存在。');
     }
     if ($planInfo['status'] != Const_HzPlan::SPREAD) {
         return array('status' => 'error', 'msg' => '计划不在推广中。');
     }
     $hzBrockId = Model_Broker_HzMapping::get_hz_broker_id($ajkBrokerId);
     if ($planInfo['user_id'] != $hzBrockId) {
         return array('status' => 'error', 'msg' => '计划不属于当前经纪人。');
     }
     $blockId = $planInfo['blockId'];
     $priceId = $planInfo['priceId'];
     // 根据plan_id查pro_id
     $planning = Dao_Broker_HzPlan::get_planning($planId, 2);
     $proId = $planning ? $planning[0]['proid'] : 0;
     $bidQueueData = array('siteType' => Model_Choice_ActionQueue::ENUM_HAOZU, 'brokerId' => $ajkBrokerId, 'planId' => $planId, 'proId' => $proId, 'actionId' => Model_Choice_ActionQueue::ENUM_STOP_BY_HAND, 'createTime' => time(), 'createRemark' => '经纪人手动停止推广', 'operationId' => $ajkBrokerId, 'ip' => $ip);
     Model_Choice_ActionQueue::addBidQueen($bidQueueData);
     /** 更新计划状态为手工结束状态 */
     //Bll_HzBidPlan::updatePlanStatus($planId, Const_HzPlan::MENUOVER);
     $updatePlanResult = Model_Plan_HzPlanBasic::updatePlan($planId, array('status' => Const_HzPlan::MENUOVER, 'stop_date' => time()));
     $updatePlanningResult = Model_Plan_HzPlanning::updatePropPlanStatusByPlanId($planId, Const_HzPlan::MENUOVER);
     // 计划和关系更新成功后坑才-1
     if ($updatePlanResult && $updatePlanningResult) {
         Model_Choice_HzBidBucket::decrement_used_num($blockId, $priceId);
     } else {
         return array('status' => 'error', 'msg' => '更新计划或者关系失败。');
     }
     return $result;
 }