ソースを参照

增加地址更新模块,修改专题搜索

stanley-king 8 年 前
コミット
0fef237f4a

+ 18 - 4
admin/control/mb_special.php

@@ -14,6 +14,9 @@ defined('InShopNC') or exit('Access Invalid!');
 require_once (BASE_ROOT_PATH . '/helper/util_helper.php');
 require_once (BASE_ROOT_PATH . '/helper/special/block_filter.php');
 require_once (BASE_ROOT_PATH . '/helper/special/upgrade_helper.php');
+require_once (BASE_ROOT_PATH . '/helper/search/tcp_client.php');
+require_once (BASE_ROOT_PATH . '/helper/search/util.php');
+require_once (BASE_ROOT_PATH . '/helper/search_param.php');
 
 class mb_specialControl extends SystemControl
 {
@@ -388,11 +391,22 @@ class mb_specialControl extends SystemControl
     /**
      * 商品列表
      */
-    public function goods_listOp() {
+    public function goods_listOp()
+    {
+        //$model_goods = Model('goods');
+//        $condition = array();
+//        $condition['goods_name'] = array('like', '%' . $_REQUEST['keyword'] . '%');
+//        $goods_list = $model_goods->getGoodsOnlineList($condition, 'goods_id,goods_name,goods_promotion_price,goods_image,goods_storage', 10);
+
+        $p['keyword'] = urlencode($_REQUEST['keyword']);
+        $param = new search_param($p);
+        $params = $param->format();
+        $cids = search\tcp_client::instance()->get_result($params);
         $model_goods = Model('goods');
-        $condition = array();
-        $condition['goods_name'] = array('like', '%' . $_REQUEST['keyword'] . '%');
-        $goods_list = $model_goods->getGoodsOnlineList($condition, 'goods_id,goods_name,goods_promotion_price,goods_image,goods_storage', 10);
+        $goods_list = $model_goods->getGoodsListByColorDistinct(array('goods_commonid' => array('in',$cids['cids'])),
+            'goods_id,goods_name,goods_promotion_price,goods_image,goods_storage', '', 10);
+
+
         Tpl::output('goods_list', $goods_list);
         Tpl::output('keyword', $_REQUEST['keyword']);
         Tpl::output('show_page', $model_goods->showpage());

+ 2 - 2
core/framework/libraries/model.php

@@ -978,8 +978,8 @@ class ModelDb
             else
             {
                 $count = count($val);
-                if(in_array(strtoupper(trim($val[$count-1])),array('AND','OR','XOR'))) {
-                    $rule = strtoupper(trim($val[$count-1]));
+                if(in_array(strtoupper(trim($val[$count-1][0])),array('AND','OR','XOR'))) {
+                    $rule = strtoupper(trim($val[$count-1])[0]);
                     $count   =  $count -1;
                 }else{
                     $rule = 'AND';

+ 5 - 0
crontab/index.php

@@ -3,15 +3,20 @@
 
 if (empty($_SERVER['argv'][1])) exit('Access Invalid!');
 
+define('InShopNC',true);
 define('APP_ID','crontab');
 define('BASE_PATH',str_replace('\\','/',dirname(__FILE__)));
 define('TRANS_MASTER',true);
 
+if (!@include(dirname(dirname(__FILE__)).'/global.php')) exit('global.php isn\'t exists!');
+if (!@include(BASE_CORE_PATH.'/33hao.php')) exit('33hao.php isn\'t exists!');
+
 if (php_sapi_name() == 'cli') {
     $_GET['act'] = $_SERVER['argv'][1];
     $_GET['op'] = empty($_SERVER['argv'][2]) ? 'index' : $_SERVER['argv'][2];
 }
 
+$file = BASE_PATH.'/control/control.php';
 if (!@include(BASE_PATH.'/control/control.php')) exit('control.php isn\'t exists!');
 
 echo "act=" . $_GET['act'] . "\n";

+ 83 - 0
helper/area/area_check.php

@@ -6,7 +6,90 @@
  * Date: 16/3/10
  * Time: 下午2:33
  */
+
+namespace area;
+require_once(BASE_ROOT_PATH . '/helper/util_helper.php');
+
 class area_check
 {
+    private $mItems;
+    private $mAreaIds;
+    private $mod_area;
+
+    public function __construct()
+    {
+        $this->mod_area = Model('area');
+        $this->mItems = [];
+        $this->mAreaIds = [];
+
+        $this->init();
+    }
+
+    private function init()
+    {
+        $items = $this->mod_area->where(array('area_parent_id' => 0))->field('area_id,area_parent_id,area_deep,area_name')->order('area_parent_id ASC ,area_id ASC ,area_name ASC')->select();
+        foreach ($items as $item)
+        {
+            $area_id = intval($item['area_id']);
+            if($area_id >= 32) continue; //海外地区不处理了。
+
+            $this->mItems[$area_id] = $item;
+            $this->mAreaIds[$area_id] = [];
+
+            $this->load($area_id);
+        }
+    }
+
+    private function load($parent_id)
+    {
+        $items = $this->mod_area->where(array('area_parent_id' => $parent_id))->field('area_id,area_parent_id,area_deep,area_name')->order('area_parent_id ASC ,area_id ASC ,area_name ASC')->select();
+        foreach ($items as $item)
+        {
+            $area_id = intval($item['area_id']);
+
+            $this->mItems[$area_id] = $item;
+            $this->mAreaIds[$area_id] = [] ;
+            $this->mAreaIds[$parent_id][] = $area_id;
+            $this->load($area_id);
+        }
+    }
+
+    private function next($ids)
+    {
+        $result = [];
+        foreach ($ids as $id) {
+            $subs = $this->mAreaIds[$id];
+            $result = array_merge($result,$subs);
+        }
+        return $result;
+    }
+
+    public function export()
+    {
+        $items = $this->mod_area->where(array('area_parent_id' => 0))->field('area_id')->order('area_parent_id ASC ,area_id ASC ,area_name ASC')->select();
+        $provins = [];
+        foreach ($items as $item) {
+            $area_id = intval($item['area_id']);
+            if($area_id >= 32) continue; //海外地区不处理了。
+            $provins[] = $area_id;
+        }
+        $areas = $provins;
+        $citys = $this->next($provins);
+        $areas = array_merge($areas,$citys);
+        $contrys = $this->next($citys);
+        $areas = array_merge($areas,$contrys);
+
+        $result = [];
+        foreach ($areas as $id)
+        {
+            $item = [];
+            $item['aid'] = $this->mItems[$id]['area_id'];
+            $item['pid'] = $this->mItems[$id]['area_parent_id'];
+            $item['n'] = $this->mItems[$id]['area_name'];
+            $item['d'] = $this->mItems[$id]['area_deep'];
+            $result[] = $item;
+        }
 
+        return $result;
+    }
 }

+ 1 - 1
helper/search/tcp_client.php

@@ -104,7 +104,7 @@ class tcp_client
             Log::record("connect search server err --- code:{$errno} : {$err}");
             return false;
         } else {
-            socket_set_option($this->mSocket, SOL_SOCKET, SO_KEEPALIVE, 1);
+            //socket_set_option($this->mSocket, SOL_SOCKET, SO_KEEPALIVE, 1);
             socket_set_timeout($this->mSocket,self::time_out);
             return true;
         }

+ 29 - 0
mobile/control/app_update.php

@@ -5,8 +5,12 @@
 
 defined('InShopNC') or exit('Access Invalid!');
 
+require_once(BASE_ROOT_PATH . '/helper/area/area_upgrade.php');
+require_once(BASE_ROOT_PATH . '/helper/area/area_check.php');
+
 class app_updateControl extends mobileHomeControl
 {
+    const area_version = 2;
     public function __construct()
     {
         parent::__construct();
@@ -50,6 +54,31 @@ class app_updateControl extends mobileHomeControl
         }
     }
 
+    public function areaOp()
+    {
+        $ver_code = intval($_GET['version']);
+        if($ver_code < self::area_version)
+        {
+            static $data = null;
+            if($data == null)
+            {
+                $items = rcache('area_2.0', 'mb_area');
+                if(empty($items)) {
+                    $area = new area\area_check();
+                    $data = $area->export();
+                    wcache('area_2.0', array('data' => serialize($data)), 'mb_area');
+                } else {
+                    $data = unserialize($items['data']);
+                }
+            }
+
+            return self::outsuccess(array('version' => self::area_version,'areas' => $data));
+        }
+        else {
+            return self::outsuccess(null);
+        }
+    }
+
     ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     public function check_verOp()
     {