Example #1
0
 /**
  * 从tld判断域名
  */
 public function checkFromTld($domain)
 {
     $tld = (array) \Core\Config::item('tld');
     $provinceTld = (array) \Core\Config::item('provinceTld');
     $suffix = \common\Common::getDomainAllTld($domain);
     return in_array($suffix, $tld) || in_array($suffix, $provinceTld) ? array('flag' => 1) : array('flag' => 0);
 }
Example #2
0
 /**
  * 从new_tao表中找出状态为15的交易,请求dc接口解锁域名,解锁成功后,将该记录复制到new_trans_history表,同时从new_tao表删除该记录
  *
  *
  *
  */
 public function downAction()
 {
     $taoModel = new NewTaoModel();
     $taoData = $taoModel->getDataByStatus(15);
     if (!empty($taoData)) {
         $dLogic = new DomainLogic();
         foreach ($taoData as $v) {
             $data[$v->t_id] = (array) $v;
             $res = $dLogic->setDomainStatus(\core\Config::item('doPubSta')->toArray()['down'], 1);
             if ($res !== true) {
                 unset($data[$v->t_id]);
                 echo "解锁new_tao状态为15的域名id{$v->t_id}失败,解锁时间:" . date('Y-m-d H:i:s', $_SERVER['REQUEST_TIME']) . "\n";
             }
         }
         if (!empty($data)) {
             $data = array_values($data);
             $TransLogic = new TransLogic();
             //将信息更新到历史表中,并在new_tao中删除
             foreach ($data as $v) {
                 $copyRes = $TransLogic->copyToHistory($v, $v['t_status']);
                 $delRes = $TransLogic->delByTid($v['t_id']);
                 if (!$copyRes) {
                     echo "域名id{$v['t_id']}解锁成功,但在插入new_trans_history时发生错误.时间:" . date('Y-m-d H:i:s', $_SERVER['REQUEST_TIME']) . "\n";
                 }
                 if (!$delRes) {
                     echo "域名id{$v['t_id']}解锁成功,但在从new_tao删除该条记录时发生错误.时间:" . date('Y-m-d H:i:s', $_SERVER['REQUEST_TIME']) . "\n";
                 }
             }
         }
     }
 }
Example #3
0
 /**
  * 定时处理竞价结束的数据处理
  *
  *
  */
 public function checkAcuctionStatusAction()
 {
     // step1 取出已过交易结束时间,类型为竞价的并且有买家id的交易记录
     $taoModel = new NewTaoModel();
     $taoData = $taoModel->getExpiredByType(\core\Config::item('isInquiry')->toArray()[1], time());
     // step2 将step1的记录修改状态为等待买卖双方确认的状态,存到new_trans_result表,并更新用户关注表
     $historyModel = new NewTransHistoryModel();
     $transLogic = new TransLogic();
     if (!empty($taoData)) {
         foreach ($taoData as $data) {
             $data = get_object_vars($data);
             $data['t_status'] = 2;
             //存表
             if ($historyModel->setTransHistory($data)) {
                 //更新用户关注表
                 if ($transLogic->updateWatchInfo($data['t_id'], $data['t_now_price'], $data['t_nickname'], $endTime = $data['t_end_time'])) {
                     // step3 删除new_tao里面该条交易记录
                     if ($taoModel->delByTid($data['t_id'])) {
                         echo 'tid 为' . $data['t_id'] . '操作成功';
                     } else {
                         echo 'tid 为' . $data['t_id'] . '删除net_tao原表数据失败';
                     }
                 } else {
                     echo 'tid 为' . $data['t_id'] . '更新用户关注表失败';
                 }
             } else {
                 echo 'tid 为' . $data['t_id'] . '复制到history 失败';
             }
         }
     }
 }
Example #4
0
 /**
  * 定时从new_tao表删除指定状态的数据
  * 指定状态为:交易成功,等待卖家确认,管理员取消交易
  *
  *
  *
  */
 public function delFromTaoAction()
 {
     $status = \core\Config::item('transStaCode');
     $status = array($status->tranSuc, $status->buyHasCon, $status->adminCanceled);
     $newTaoModel = new NewTaoModel();
     $res = $newTaoModel->delDataByStatus($status);
     echo "删除{$res}条记录" . PHP_EOL;
 }
Example #5
0
 /**
  * 创建数据库实例
  *
  * @return object 当前对象
  */
 public static function getInstance($dbName = 'ename_trans')
 {
     if (isset(self::$instance[$dbName]) && self::$instance[$dbName] !== null) {
         return self::$instance[$dbName];
     }
     $config = \core\Config::item($dbName);
     new PdoMysql($config, $dbName);
     return self::$instance[$dbName];
 }
Example #6
0
 private function __construct($config, $configName = 'default')
 {
     $redis = new \Redis();
     $redisConfig = \core\Config::item('redis');
     $timeOut = isset($redisConfig->timeout) ? intval($redisConfig->timeout) : 3;
     if ($redis->connect($redisConfig->server, $redisConfig->port, $timeOut)) {
         $redis->setOption(\Redis::OPT_SERIALIZER, \Redis::SERIALIZER_PHP);
         self::$conn[$configName] = $redis;
     } else {
         throw new \Exception("redis is down");
     }
 }
Example #7
0
 /**
  * 构造函数创建SCOKET连接
  */
 public function __construct()
 {
     $this->config = \core\Config::item('goServer');
     $this->socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
     if (!is_resource($this->socket)) {
         throw new \Exception('Unable to create socket: ' . socket_strerror(socket_last_error()) . PHP_EOL);
         return;
     }
     if (!socket_set_option($this->socket, SOL_SOCKET, SO_REUSEADDR, 1) || !socket_set_option($this->socket, SOL_SOCKET, SO_RCVTIMEO, array('sec' => $this->config->timeout, 'usec' => 0)) || !socket_set_option($this->socket, SOL_SOCKET, SO_SNDTIMEO, array('sec' => $this->config->timeout, 'usec' => 0))) {
         throw new \Exception('Unable to set socket option: ' . socket_strerror(socket_last_error()) . PHP_EOL);
         return;
     }
     if (!socket_connect($this->socket, $this->config->server, $this->config->port)) {
         throw new \Exception('Unable to connect go server: ' . socket_strerror(socket_last_error()) . PHP_EOL);
         return;
     }
 }
Example #8
0
 public function deleteDataAction()
 {
     $esFile = ROOT_PATH . './app/tasks/es.id';
     $startId = @file_get_contents($esFile);
     $limit = 200;
     $newTaoModel = new \NewTaoModel();
     $list = $newTaoModel->getListForDeleteEs($startId, $limit);
     $es = \core\Config::item('elasticSearch');
     $client = \Elasticsearch\ClientBuilder::create()->setHosts(array($es['server']))->build();
     echo 'start:' . time() . "\n";
     foreach ($list as $v) {
         $params = ['index' => $es['index'], 'type' => $es['type'], 'id' => $v->t_id];
         $response = $client->delete($params);
         $startId = $v->t_last_time;
     }
     file_put_contents($esFile, $startId);
     echo 'end:' . time() . "\n";
 }
Example #9
0
 /**
  * [fixedBuy description]
  * @param  int $uId 买家id
  * @param  bool $isUseNickName 买家是否选择使用昵称
  * @param  array $transIds  交易id
  * @param string $buyerIp 买家ip
  * @return  array('accessTrans' => $accessTrans, 'denyTrans' => $denyTrans);
  */
 public function fixedBuy($uId, $transIds, $isUseNickName = false, $buyerIp = '')
 {
     try {
         $goServ = new \core\driver\GoServer();
         $config = \core\Config::item('fixedBuy');
         // 以下步骤使用goServer并行处理
         //
         // step 调用logic方法,一次判断下面step1,step2,step3返回结果
         // step1 获取该交易id的信息,不存在则该交易结束
         // step2 判断交易里买家和卖家是否同一个
         // step3 判断交易里的当前价格和提交上来的价格是否一致
         $accessTrans = $denyTrans = array();
         foreach ($transIds as $transId => $curId) {
             $goServ->call($transId, 'TransLogic::checkTransInfo', array($transId, $uId, $curId));
         }
         $res = $goServ->send();
         foreach ($res as $transId => $value) {
             $rs = $value['TransLogic::checkTransInfo'];
             if (isset($rs['goError']) || !$rs['flag']) {
                 $denyTrans[$transId] = isset($rs['goError']) ? $config->systemError : $rs['msg'];
             } else {
                 $accessTrans[$transId] = $rs['msg'];
             }
         }
         if (empty($accessTrans)) {
             return array('accessTrans' => $accessTrans, 'denyTrans' => $denyTrans);
         }
         // step4 创建冻结订单
         foreach ($accessTrans as $transId => $info) {
             $goServ->call($transId, 'TransLogic::freezeMoney', array($info['t_dn'], $uId, $info['t_now_price']));
         }
         $res = $goServ->send();
         foreach ($res as $transId => $value) {
             $rs = $value['TransLogic::freezeMoney'];
             if (isset($rs['goError']) || !$rs) {
                 $denyTrans[$transId] = isset($rs['goError']) ? $config->systemError : $config->invalidBalance;
                 unset($accessTrans[$transId]);
             } else {
                 // 冻结成功,记录财务订单id
                 $info['financeId'] = $rs;
                 $accessTrans[$transId] = $info;
             }
         }
         if (empty($accessTrans)) {
             return array('accessTrans' => $accessTrans, 'denyTrans' => $denyTrans);
         }
         // step5 根据交易里的我司和非我司标志更新交易记录状态,我司域名状态直接更新为14,非我司更新为等待卖家确认
         //       同时非我司的交易记录要更新买家违约时间和卖家违约时间
         //       若step5失败,则发起解冻step4里面的冻结订单
         $buyerIp = $buyerIp ?: \common\Client::getIp();
         foreach ($accessTrans as $transId => $info) {
             $buyerNick = $isUseNickName ? \common\common::getNickname($uId, $transId) : false;
             $goServ->call($transId, 'TransLogic::updateTransInfo', array($transId, $info['t_type'], $info['t_is_our'], $uId, $buyerNick, $buyerIp, $info['financeId']));
             $accessTrans[$transId]['buyerNick'] = $buyerNick;
         }
         $res = $goServ->send();
         foreach ($res as $transId => $value) {
             $rs = $value['TransLogic::updateTransInfo'];
             $info = $accessTrans[$transId];
             if (isset($rs['goError']) || !$rs) {
                 // 更新信息失败,解冻订单
                 $goServ->call($transId, 'TransLogic::unfreezeMoney', array($info['t_enameId'], $info['financeId']));
                 $denyTrans[$transId] = isset($rs['goError']) ? $config->systemError : $config->updateFailed;
                 unset($accessTrans[$transId]);
             } else {
                 // step6 我司域名 使用go 异步并行处理下面多个流程
                 //      调用logic里面的asyncDeal处理下面步骤
                 //      1、调用接口解锁和Push域名
                 //      2、调用接口确认冻结财务订单
                 //      3、将该交易记录插入到new_trans_history表
                 //      4、写入待评价表
                 //      5、更新其他用户关注表的交易结束时间,买家信息
                 //      6、发送通知买家邮件和站内信
                 //      7、根据卖家设置,通知卖家
                 //
                 // step6: 非我司域名 使用go异步并行处理下面多个流程
                 //      调用logic里面的asyncDeal处理下面步骤
                 //      1、发送通知邮件、发送站内信、短信通知卖家
                 //      4、复制该交易id的记录到new_trans_result表
                 $goServ->call($transId, 'TransLogic::asyncDeal', array($info));
             }
         }
         $goServ->asyncSend();
         return array('accessTrans' => array_keys($accessTrans), 'denyTrans' => $denyTrans);
     } catch (\Exception $e) {
         \core\Logger::write('FixedbuyController.log', array('出现异常', $e->getMessage(), $e->getFile(), $e->getLine()));
         return false;
     }
 }
Example #10
0
 /**
  * 根据卖家设置通知卖家,首先要调用dc接口获取卖家设置然后调用通知接口
  *
  *@param $enameid 卖家id
  */
 public function noticeSellerIsOk($enameid, $domain, $price, $transId)
 {
     $sms = (new \common\Users())->noticeSellerIsOk($enameid, \core\Config::item('noticeCode')->toArray()[0]);
     //通知是否有抛异常
     return (new \common\Message())->sendBuyNowSeller($enameId, $domain, $price, $transId, $sms);
     /*
      * 是否需要记录日志
      *if($rs['msg']['result'] !== true)
      *{
      *    \core\Logger::write("DOMAIN_LOG",
      *        array(__METHOD__,'域名 ' . $domain . ' 设置状态为 ' . $status . ' 失败,msg信息为:' . $rs['msg']['msg']));
      *}
      */
 }
Example #11
0
 /**
  * 交易发布
  *
  * @param s $uId
  *        	int
  * @param s $domains
  *        	array 包含我司和非我司域名的二维数组,一个域名包含价格和简介以及出售周期
  * @param s $cashType
  *        	int 提现类型,在控制器检查,2 不可提现 3 可体现
  * @param s $type
  *        	发布类型
  * @param s $ip
  *        	用户ip
  */
 public function fixedPrice($uId, $domains, $cashType, $type, $ip)
 {
     try {
         $redis = core\driver\Redis::getInstance('default');
         $domains = array_merge($domains['domainEname'], $domains['domainNoEname']);
         $succDomains = $failDomains = $verifyDomains = array();
         // step1:检测域名后缀
         $res = $this->checkDomainTld(array_keys($domains));
         $succDomains = $res[0];
         $failDomains = array_merge($failDomains, $res[1], $res[2]);
         if (empty($succDomains)) {
             return array('flag' => TRUE, 'msg' => array('succ' => array(), 'fail' => $failDomains));
         }
         if (in_array($type, array(\core\Config::item('transType')->zhuantipaimai, \core\Config::item('transType')->yipaiyimai))) {
             //专题拍卖和易卖易卖是否需要审核
             foreach ($succDomains as $v) {
                 $this->goSer->call($v, 'DomainLogic::checkOtherTrans', array($v, $type));
             }
             $res = $this->goSer->send();
             $succDomains = array();
             foreach ($res as $k => $v) {
                 $v = $v['DomainLogic::checkOtherTrans'];
                 if (isset($v['goError'])) {
                     $failDomains[$k] = '系统繁忙,请重试';
                 } else {
                     if ($v === 1) {
                         $succDomains[] = $k;
                     } elseif ($v === 3) {
                         $verifyDomains[$k] = 1;
                     } else {
                         $failDomains[$k] = '不符合专题拍卖条件';
                     }
                 }
             }
             if (empty($succDomains)) {
                 return array('flag' => TRUE, 'msg' => array('succ' => array(), 'fail' => $failDomains));
             }
             if (in_array($type, array(4, 5))) {
                 //专题拍卖和易卖易卖是否需要审核
                 foreach ($succDomains as $v) {
                     $this->goSer->call($v, 'DomainLogic::checkOtherTrans', array($v, $type));
                 }
                 $res = $this->goSer->send();
                 $succDomains = array();
                 foreach ($res as $k => $v) {
                     $v = $v['DomainLogic::checkOtherTrans'];
                     if (isset($v['goError'])) {
                         $failDomains[$k] = '系统繁忙,请重试';
                     } else {
                         if ($v === 1) {
                             $succDomains[] = $k;
                         } elseif ($v === 3) {
                             $verifyDomains[$k] = 1;
                         } else {
                             $failDomains[$k] = '不符合专题拍卖条件';
                         }
                     }
                 }
                 if (empty($succDomains)) {
                     return array('flag' => TRUE, 'msg' => array('succ' => array(), 'fail' => $failDomains));
                 }
                 //专题是否存在
                 foreach ($succDomains as $v) {
                     $this->goSer->call($v, 'DomainLogic::checkTopId', array($domains[$v]['topic']));
                 }
                 $res = $this->goSer->send();
                 $succDomains = array();
                 foreach ($res as $k => $v) {
                     $v = $v['DomainLogic::checkTopId'];
                     if (isset($v['goError'])) {
                         $failDomains[$k] = '系统繁忙,请重试';
                     } else {
                         if ($v === true) {
                             $succDomains[] = $k;
                         } else {
                             $failDomains[$k] = '专题不存在';
                         }
                     }
                 }
                 if (empty($succDomains)) {
                     return array('flag' => TRUE, 'msg' => array('succ' => array(), 'fail' => $failDomains));
                 }
             }
         }
         // step2:检测域名简介是否包含关键词
         // 检测出售天数,价格
         // 使用go并行处理
         foreach ($succDomains as $v) {
             $this->goSer->call($v, 'DomainLogic::checkBaseInfo', array($domains[$v], $type));
         }
         $res = $this->goSer->send();
         $succDomains = array();
         foreach ($res as $k => $v) {
             $v = $v['DomainLogic::checkBaseInfo'];
             if (isset($v['goError'])) {
                 $failDomains[$k] = '系统繁忙,请重试';
             } else {
                 if ($v['flag'] === true) {
                     $succDomains[] = $k;
                 } else {
                     $failDomains[$k] = $v['msg'];
                 }
             }
         }
         if (empty($succDomains)) {
             return array('flag' => TRUE, 'msg' => array('succ' => array(), 'fail' => $failDomains));
         }
         // step3:存在我司域名调用判断我司域名是否可发布
         // 非我司域名判断是否$domains里面有非我司域名,有的话从redis中取出
         // 上一步缓存的已经认证过的域名,排除$domains里面非我司域名那个数组
         // 里面不在缓存中得域名
         // 通过go并行调用返回数据
         foreach ($succDomains as $v) {
             $this->goSer->call($v, 'DomainLogic::checkMyDomain', array($uId, $v));
         }
         $res = $this->goSer->send();
         $enameDomains = $notInEnameDomains = array();
         foreach ($res as $k => $v) {
             $v = $v['DomainLogic::checkMyDomain'];
             if (isset($v['goError'])) {
                 $failDomains[$k] = '系统繁忙,请重试';
             } else {
                 $inEname = $v['flag'];
                 if ($inEname == 1) {
                     $enameDomains[$k] = $v['msg'];
                     $domains[$k]['expireTime'] = strtotime($v['msg']['expireTime']);
                     $domains[$k]['isOur'] = 1;
                 } elseif ($inEname == 2) {
                     $whois = $redis->get('whois:' . $uId . $k);
                     if ($whois) {
                         $notInEnameDomains[] = $k;
                         $domains[$k]['expireTime'] = strtotime($whois);
                         $domains[$k]['isOur'] = 2;
                     } else {
                         $failDomains[$k] = '非我司域名认证失败';
                     }
                 } else {
                     $failDomains[$k] = $v['msg'];
                 }
                 if (isset($domains[$k]['expireTime'])) {
                     $minute = rand(0, 59);
                     $domains[$k]['endTime'] = strtotime(date('Y-m-d', time() + 86400 * $domains[$k]['day']) . ' ' . $domains[$k]['hour'] . ':' . $minute . ':00');
                     if ($domains[$k]['endTime'] > $domains[$k]['expireTime']) {
                         $domains[$k]['endTime'] = $domains[$k]['expireTime'];
                         $domains[$k]['endTimeChange'] = true;
                     }
                 }
             }
         }
         if (empty($enameDomains) && empty($notInEnameDomains)) {
             return array('flag' => TRUE, 'msg' => array('succ' => array(), 'fail' => $failDomains));
         }
         // 我司域名检测 状态 注册时间和 过期时间
         $succComDomains = array();
         if (!empty($enameDomains)) {
             $res = $this->comCheck($uId, $enameDomains, $type);
             $succComDomains = $res[0];
             $failDomains = array_merge($failDomains, $res[1]);
         }
         // 非我我司域名检测 tld 和 是否在黑名单
         $succNonComDomains = array();
         if (!empty($notInEnameDomains)) {
             $res = $this->nonComCheck($uId, $notInEnameDomains);
             $succNonComDomains = $res[0];
             $failDomains = array_merge($failDomains, $res[1]);
         }
         if (empty($succComDomains) && empty($succNonComDomains)) {
             return array('flag' => TRUE, 'msg' => array('succ' => array(), 'fail' => $failDomains));
         }
         // step4:域名检测是否在交易中
         $succComTranDomains = array();
         if (!empty($succComDomains)) {
             $res = $this->isDomainTrans($succComDomains, $type);
             $succComTranDomains = $res[0];
             $failDomains = array_merge($failDomains, $res[1]);
         }
         $succNonComTranDomains = array();
         if (!empty($succNonComDomains)) {
             $res = $this->isDomainTrans($succNonComDomains, $type);
             $succNonComTranDomains = $res[0];
             $failDomains = array_merge($failDomains, $res[1]);
         }
         if (empty($succComTranDomains) && empty($succNonComTranDomains)) {
             return array('flag' => TRUE, 'msg' => array('succ' => array(), 'fail' => $failDomains));
         }
         $succLockDomains = array();
         $succFreezeDomains = array();
         // step6:对于可发布的我司域名和非我司域名
         // 处理我司域名锁定
         if (!empty($succComTranDomains)) {
             foreach ($succComTranDomains as $k => $v) {
                 $this->goSer->call($k, 'DomainLogic::lockDomain', array($k));
             }
             $res = $this->goSer->send();
             foreach ($res as $k => $v) {
                 $v = $v['DomainLogic::lockDomain'];
                 if (isset($v['goError'])) {
                     $failDomains[$k] = '系统繁忙,请重试';
                 } else {
                     $domains[$k]['orderId'] = 0;
                     if ($v) {
                         $succLockDomains[$k] = 1;
                     } else {
                         $failDomains[$k] = '域名锁定失败';
                     }
                 }
             }
         }
         //非我司域名冻结保证金
         if (!empty($succNonComTranDomains)) {
             foreach ($succNonComTranDomains as $k => $v) {
                 $this->goSer->call($k, 'DomainLogic::freezeMoney', array($uId, $k, \core\Config::item('baozhengjin')->fabu));
             }
             $res = $this->goSer->send();
             foreach ($res as $k => $v) {
                 $v = $v['DomainLogic::freezeMoney'];
                 if (isset($v['goError'])) {
                     $failDomains[$k] = '系统繁忙,请重试';
                 } else {
                     if ($v) {
                         $domains[$k]['orderId'] = $v;
                         $succFreezeDomains[$k] = 1;
                     } else {
                         $failDomains[$k] = '保证金冻结失败';
                     }
                 }
             }
         }
         // step5:从step3和step4里面合并获取可发布的我司域名和非我司域名
         // 调用go去并行处理我司和非我司的可发布情况返回来
         $succDomains = array_merge($succFreezeDomains, $succLockDomains);
         if (empty($succDomains)) {
             return array('flag' => TRUE, 'msg' => array('succ' => array(), 'fail' => $failDomains));
         }
         // 从redis里面获取域名是否推荐数据进行标识
         // 同时将推荐域名推到redis中做bbs推荐
         // 调用go并发处理
         foreach ($succDomains as $k => $v) {
             $promote = $redis->exists('promote:' . $uId . $k);
             if ($promote) {
                 $domains[$k]['isHot'] = 1;
                 $bbs = $redis->lRange('bbs:domain', 0, -1);
                 if (!in_array($uId, $bbs)) {
                     $redis->lPush('bbs:domain', $uId);
                 }
             } else {
                 $domains[$k]['isHot'] = 0;
             }
         }
         // step7:将域名写入交易表
         // 调用go并行处理
         foreach ($succDomains as $k => $v) {
             $this->goSer->call($k, 'DomainLogic::publicDomain', array($uId, $k, $domains[$k]['description'], $domains[$k]['expireTime'], $type, $domains[$k]['price'], $domains[$k]['endTime'], $cashType, $domains[$k]['isOur'], $domains[$k]['isHot'], $ip, $domains[$k]['orderId']));
         }
         $res = $this->goSer->send();
         $succInsertDomains = array();
         foreach ($res as $k => $v) {
             $v = $v['DomainLogic::publicDomain'];
             if (isset($v['goError'])) {
                 $failDomains[$k] = '系统繁忙,请重试';
             } else {
                 if ($v) {
                     $succInsertDomains[$k] = isset($domains[$k]['endTimeChange']) ? $domains[$k]['endTime'] : 0;
                 } else {
                     $failDomains[$k] = '写入交易表失败';
                 }
             }
         }
         $msg = array('succ' => $succInsertDomains, 'fail' => $failDomains);
         //加入审核表
         $succVerifyDomains = array();
         if ($verifyDomains) {
             foreach ($verifyDomains as $k => $v) {
                 $this->goSer->call($k, 'DomainLogic::publicToCheck', array($uId, $k, $domains[$k]['description'], $domains[$k]['expireTime'], $type, $domains[$k]['price'], $domains[$k]['endTime'], $cashType, $domains[$k]['isOur'], $domains[$k]['isHot'], $ip, $domains[$k]['topic'], $domains[$k]['orderId']));
             }
             $res = $this->goSer->send();
             foreach ($res as $k => $v) {
                 $v = $v['DomainLogic::publicToCheck'];
                 if (isset($v['goError'])) {
                     $failDomains[$k] = '系统繁忙,请重试';
                 } else {
                     if ($v) {
                         $succVerifyDomains[$k] = isset($domains[$k]['endTimeChange']) ? $domains[$k]['endTime'] : 0;
                     } else {
                         $failDomains[$k] = '写入审核表失败';
                     }
                 }
             }
         }
         $msg = array('succ' => $succInsertDomains, 'fail' => $failDomains, 'verify' => $succVerifyDomains);
         return array('flag' => TRUE, 'msg' => $msg);
     } catch (\Exception $e) {
         \core\Logger::write('FABU', array('出现异常', $e->getMessage(), $e->getFile(), $e->getLine()));
         return array('flag' => FALSE, 'msg' => $e->getMessage());
     }
 }
Example #12
0
 /**
  * 淘域名查询数据 如果前台用户没有提交这个参数,全部传0 或者 false
  *
  * @param array $dn array(1域名|2简介OR域名,搜索的内容,开头,结尾)
  * @param int $type 交易类型 1:一口价 2:竞价 3:竞价(预订竞价) 4:竞价(专题拍卖) 5:竞价(易拍易卖)
  * 6:一口价(sedo) 8:拍卖会
  * @param array $page array(开始页,每页多少条)
  * @param int $sort 排序参数 1:剩余时间 2:当前价格 3:出价次数
  * @param int $registrar 注册商 1:我司 2:非我司
  * @param array $price array(开始价格,结束价格)
  * @param array $bidding array(竞价是否有人出价,竞价1元起拍)
  * @param array $exclude 必须是2维数组 array(array(内容,开头,结尾),array(内容,开头,结尾))
  * @param array $class 分类 array(二级分类,三级分类)
  * @param array $tld array(后缀1,后缀2)
  * @param array $endTime array(起始时间,结束时间) 起始时间可以是0 直接传结束时间的unix_time
  * @param array $len array(开始长度,结束长度)
  * @return false:查询失败 || array('total','data') total:文档数量,data:二维数组
  */
 public function index($data)
 {
     $dn = $type = $page = $sort = $registrar = $price = $bidding = $exclude = $class = $tld = $endTime = $len = null;
     extract($data);
     $es = \core\Config::item('elasticSearch');
     $client = \Elasticsearch\ClientBuilder::create()->setHosts(array($es['server']))->build();
     $must = $notMust = $should = array();
     $from = 0;
     $size = 10;
     $dn1 = isset($dn[1]) ? $dn[1] : false;
     if (is_array($dn) && $dn1) {
         $dn2 = isset($dn[2]) ? $dn[2] : false;
         $dn3 = isset($dn[3]) ? $dn[3] : false;
         if ($dn[1] && $dn[2]) {
             // 只搜索域名
             $should[] = array("query_string" => array("query" => "t_body:{$dn[1]}*{$dn[1]}"));
         } elseif ($dn[1]) {
             $should[] = array("query_string" => array("query" => "t_body:{$dn[1]}*"));
         } elseif ($dn[2]) {
             $should[] = array("query_string" => array("query" => "t_body:*{$dn[1]}"));
         } else {
             $should[] = array("query_string" => array("query" => "t_body:*{$dn[1]}*"));
         }
         if (1 == $dn[0]) {
             if ($dn[2] && $dn[3]) {
                 // 搜索域名OR简介
                 $should[] = array("query_string" => array("query" => "t_desc:{$dn[1]}*{$dn[1]}"));
             } elseif ($dn[2]) {
                 $should[] = array("query_string" => array("query" => "t_desc:{$dn[1]}*"));
             } elseif ($dn[3]) {
                 $should[] = array("query_string" => array("query" => "t_desc:*{$dn[1]}"));
             } else {
                 $should[] = array("query_string" => array("query" => "t_desc:*{$dn[1]}*"));
             }
         }
     }
     if ($type) {
         if (2 == $type) {
             $must[] = array("terms" => array("t_type" => array(2, 3, 4, 5, 8)));
             //竞价
         } else {
             $must[] = array("term" => array("t_type" => $type));
         }
     }
     if ($registrar) {
         $must[] = array("term" => array("t_is_our" => $registrar));
     }
     if (is_array($price) && ($price[0] || $price[1])) {
         $range = array();
         intval($price[0]) > 0 ? $range['gte'] = intval($price[0]) : '';
         intval($price[1]) > 0 ? $range['lte'] = intval($price[1]) : '';
         $must[] = array("range" => array("t_now_price" => $range));
     }
     if (is_array($bidding) && 2 == $type && ($bidding[0] || $bidding[1])) {
         if ($bidding[0]) {
             $must[] = array("range" => array("t_buyer" => array("gt" => 0)));
         }
         if ($bidding[1]) {
             $must[] = array("term" => array("t_start_price" => 1));
         }
     }
     if (is_array($exclude)) {
         foreach ($exclude as $v) {
             list($c, $s, $e) = $v;
             if ($c) {
                 if ($s) {
                     $notMust[] = array('query_string' => array("query" => "t_body:{$c}*"));
                 }
                 if ($e) {
                     $notMust[] = array('query_string' => array("query" => "t_body:*{$c}"));
                 }
                 if (!$s && !$e) {
                     $notMust[] = array('query_string' => array("query" => "t_body:*{$c}*"));
                 }
             }
         }
     }
     if (is_array($class) && (isset($class[0]) || isset($class[1]))) {
         if (isset($class[0]) && $class[0]) {
             if (10 == $class[0]) {
                 $must[] = array("terms" => array("t_two_class" => array(10, 12)));
             } elseif (2 == $class[0]) {
                 $must[] = array("terms" => array("t_two_class" => array(2, 12)));
             }
             $must[] = array('term' => array('t_two_class' => $class[0]));
         }
         if (isset($class[1]) && $class[1]) {
             $must[] = array('term' => array('t_three_class' => $class[1]));
         }
     }
     if (is_array($tld)) {
         foreach ($tld as $v) {
             $should[] = array("term" => array("t_tld" => $v));
         }
     }
     if (is_array($endTime)) {
         $endMust = array("range" => array("t_end_time" => array("lte" => $endTime[1])));
         if ($endTime[0]) {
             $endMust['range']['t_end_time'] = array('gte' => $endTime[0]);
         }
         $must[] = $endMust;
     }
     if (is_array($len)) {
         $lenGte = isset($len[0]) && intval($len[0]) > 0 ? intval($len[0]) : 1;
         $lenRange = array("range" => array("t_len" => array("gte" => $lenGte)));
         if (intval($len[1])) {
             $lenRange['range']['t_len']['lte'] = $len[1];
         }
         $must[] = $lenRange;
     }
     if (is_array($page)) {
         $from = intval($page[0]);
         $size = intval($page[1]);
     }
     $arrayData = array("from" => $from, "size" => $size, "query" => array("filtered" => array("filter" => array("bool" => array("must" => $must, "must_not" => $notMust, "should" => $should)))));
     if (3 == $sort) {
         $arrayData['sort'] = array('t_count' => 'desc');
     } elseif (2 == $sort) {
         $arrayData['sort'] = array('t_now_price' => 'asc');
     } else {
         $arrayData['sort'] = array('t_end_time' => 'asc');
     }
     $params = ['index' => $es['index'], 'type' => $es['type'], 'body' => json_encode($arrayData)];
     $result = $client->search($params);
     if (isset($result['hits'])) {
         $total = isset($result['hits']['total']) ? $result['hits']['total'] : false;
         if (false === $total) {
             return false;
         } else {
             return array('total' => $total, 'data' => $result['hits']['hits']);
         }
     }
     return array('total' => 0, 'data' => array());
 }
Example #13
0
 /**
  * 获取域名后缀类型
  * @param string $domain
  */
 public static function getTldType($domain)
 {
     $tld = self::getDomainAllTld($domain);
     return in_array($tld, (array) \Core\Config::item('provinceTld')) ? 6 : array_search($tld, (array) \Core\Config::item('tld'));
 }
Example #14
0
 public function getDomainLowestPrice($domain, $price)
 {
     //(class,two,three,长度,域名主体)
     list($class, $two, $three, $domainLen, $domainMain) = \common\domain\Domain::getDomainClass($domain);
     // 获取一口价最低价提示配置
     $buynowLowest = \core\Config::item('buynow_lowest')->toArray();
     // 获取域名主体$domainMain 以及 域名后缀 $domainTld
     $domainTld = \common\Common::getDomainAllTld($domain);
     // 获取域名所属类型
     $domainType = $this->getDomainType($class, $domainMain, $domainTld, $domainLen);
     if (!$domainType) {
         return false;
     }
     // 获取返回该域名最低价。未匹配到返回false
     if (isset($buynowLowest[$domainTld][$domainLen][$domainType])) {
         $price = $buynowLowest[$domainTld][$domainLen][$domainType];
         return $price * 10000;
     }
     return false;
 }
Example #15
0
<?php

use Phalcon\DI, Phalcon\DI\FactoryDefault;
ini_set('display_errors', 1);
error_reporting(E_ALL);
define('TEST_ROOT_PATH', __DIR__);
define('ROOT_PATH', dirname(__DIR__));
define('LIBRARY_PATH', ROOT_PATH . '/app/library/');
define('MODELS_PATH', ROOT_PATH . '/app/models/');
define('LOGIC_PATH', ROOT_PATH . '/app/logic/');
define('DEBUG', TRUE);
set_include_path(TEST_ROOT_PATH . PATH_SEPARATOR . get_include_path());
// required for phalcon/incubator
// include __DIR__ . "/vendor/autoload.php";
// use the application autoloader to autoload the classes
// autoload the dependencies found in composer
$loader = new \Phalcon\Loader();
$loader->registerDirs(array(TEST_ROOT_PATH, MODELS_PATH, LIBRARY_PATH, LOGIC_PATH));
$loader->registerNamespaces(array('Phalcon' => TEST_ROOT_PATH . '/incubator-1.2.4/Library/Phalcon'));
$loader->register();
$di = new FactoryDefault();
DI::reset();
// 配置初始化
\core\Config::init(DEBUG);
//\core\Config::setConfig(TEST_ROOT_PATH.'/debug.ini');
// add any needed services to the DI here
DI::setDefault($di);
$db = \core\Config::item('master_trans');