Bladeren bron

before change goods protocal

stanley-king 9 jaren geleden
bovenliggende
commit
e11c451cd6
6 gewijzigde bestanden met toevoegingen van 748 en 607 verwijderingen
  1. 0 13
      data/model/goods.model.php
  2. 0 1
      mobile/control/attribute.php
  3. 0 1
      mobile/control/brand.php
  4. 155 588
      mobile/control/goods.php
  5. 588 0
      mobile/control/search.php
  6. 5 4
      shop/control/goods.php

+ 0 - 13
data/model/goods.model.php

@@ -642,10 +642,8 @@ class goodsModel extends Model
      */
     public function getGoodsInfoAndPromotionById($goods_id)
     {
-        Log::record(__FUNCTION__ . " goods_id={$goods_id}.", Log::DEBUG);
         $goods_info = $this->getGoodsInfoByID($goods_id);
         if (empty($goods_info)) {
-            Log::record("return 1", Log::DEBUG);
             return array();
         }
         //抢购
@@ -655,7 +653,6 @@ class goodsModel extends Model
 
         //限时折扣
         if (C('promotion_allow') && empty($goods_info['groupbuy_info'])) {
-            Log::record("groupbuy_allow", Log::DEBUG);
             $goods_info['xianshi_info'] = Model('p_xianshi_goods')->getXianshiGoodsInfoByGoodsID($goods_info['goods_id']);
         }
         return $goods_info;
@@ -698,7 +695,6 @@ class goodsModel extends Model
      */
     public function getGoodeCommonInfo($condition, $field = '*')
     {
-        $this->cls();
         return $this->table('goods_common')->field($field)->where($condition)->find();
     }
 
@@ -842,13 +838,11 @@ class goodsModel extends Model
      */
     public function getGoodsImageList($condition, $field = '*', $order = 'is_default desc,goods_image_sort asc')
     {
-        $this->cls();
         return $this->table('goods_images')->field($field)->where($condition)->order($order)->select();
     }
 
     public function getGoodsImageListEx($condition, $field = '*', $order = 'is_default desc,goods_image_sort asc')
     {
-        $this->cls();
         return $this->table('goods_images')->field($field)->where($condition)->group('filesig')->order($order)->select();
     }
 
@@ -1034,10 +1028,8 @@ class goodsModel extends Model
      */
     public function getGoodsInfoByID($goods_id, $fields = '*')
     {
-        Log::record(__FUNCTION__ . " goods_id={$goods_id}.", Log::DEBUG);
         $goods_info = $this->_rGoodsCache($goods_id, $fields);
         if (empty($goods_info)) {
-            Log::record("return null 2", Log::DEBUG);
             $goods_info = $this->getGoodsInfo(array('goods_id' => $goods_id));
             $this->_wGoodsCache($goods_id, $goods_info);
         }
@@ -1354,15 +1346,12 @@ class goodsModel extends Model
      */
     public function getGoodsDetail($goods_id)
     {
-        Log::record(__FUNCTION__ . " goods_id={$goods_id}.", Log::DEBUG);
         if ($goods_id <= 0) {
-            Log::record(" return null 1.", Log::DEBUG);
             return null;
         }
 
         $result1 = $this->getGoodsInfoAndPromotionById($goods_id);
         if (empty($result1)) {
-            Log::record(" return null 2.", Log::DEBUG);
             return null;
         }
         $result2 = $this->getGoodeCommonInfoByID($result1['goods_commonid']);
@@ -1497,8 +1486,6 @@ class goodsModel extends Model
         $result['goods_image_mobile'] = $goods_image_mobile;
         $result['mansong_info'] = $mansong_info;
         $result['gift_array'] = $gift_array;
-
-        Log::record(" return 3 result={$result}.");
         return $result;
     }
 

+ 0 - 1
mobile/control/attribute.php

@@ -32,7 +32,6 @@ class attributeControl extends mobileHomeControl
 
         $result = array();
         foreach ($attr_list as $value) {
-
             $type = Model()->table('type')->where(array('type_id' => $value['type_id']))->limit(1)->select();
             if (!empty($type)) {
 

+ 0 - 1
mobile/control/brand.php

@@ -33,7 +33,6 @@ class brandControl extends mobileHomeControl
                     array_push($brand_area['data'], $brand);
                 }
             }
-
             if (!empty($brand_area['data'])) {
                 array_push($brands, $brand_area);
             }

+ 155 - 588
mobile/control/goods.php

@@ -1,588 +1,155 @@
-<?php
-/**
- * 商品
- *
- * by 33hao.com 好商城V3
- *
- *
- */
-//by 33hao.com
-//use Shopnc\Tpl;
-
-defined('InShopNC') or exit('Access Invalid!');
-
-class goodsControl extends mobileHomeControl
-{
-    public function __construct()
-    {
-        parent::__construct();
-    }
-
-    /**
-     * 商品列表接口
-     *
-     * 请求参数:
-     * key:
-     * order: 1-升序 2-降序
-     * page: 每页数量
-     * curpage: 当前页码
-     * gc_id: 分类编码
-     * keyword:搜索关键字
-     * brand_id: 品牌
-     * efficacy_id:功效查询
-     *
-     */
-    public function goods_listOp()
-    {
-        $page = trim($_GET['page']);
-        $curpage = trim($_GET['curpage']);
-        initpage($page,$curpage);
-
-        $model_goods = Model('goods');
-        $condition = array();
-        if (!empty(trim($_GET['gc_id']))) {
-            $condition['gc_id'] = intval($_GET['gc_id']);
-        }
-        // 关键字
-        if (!empty(trim($_GET['keyword']))) {
-            $condition['goods_name|goods_jingle'] = array('like', '%' . urldecode($_GET['keyword']) . '%');
-        }
-        // 品牌查询
-        if (!empty(trim($_GET['brand_id']))) {
-            $condition['brand_id'] = intval($_GET['brand_id']);
-        }
-        // 功效查询
-        if (!empty(trim($_GET['efficacy_id']))) {
-            $condition['efficacy_id'] = intval($_GET['efficacy_id']);
-        }
-
-        //所需字段
-        $fieldstr = "goods_id,goods_commonid,store_id,brand_id,gc_id,goods_name,goods_price,goods_marketprice,goods_image,goods_salenum,evaluation_good_star,evaluation_count,goods_storage,goods_storage_alarm";
-
-        // 添加3个状态字段
-        $fieldstr .= ',is_virtual,is_presell,is_fcode,have_gift';
-
-        //排序方式
-        $order = $this->_goods_list_order($_GET['key'], $_GET['order']);
-
-        //优先从全文索引库里查找
-//        list($indexer_ids, $indexer_count) = $model_search->indexerSearch($_GET, $this->page);
-//        if (is_array($indexer_ids)) {
-//            //商品主键搜索
-//            $goods_list = $model_goods->getGoodsOnlineList(array('goods_id' => array('in', $indexer_ids)), $fieldstr, 0, $order, $this->page, null, false);
-//
-//            //如果有商品下架等情况,则删除下架商品的搜索索引信息
-//            if (count($goods_list) != count($indexer_ids)) {
-//                $model_search->delInvalidGoods($goods_list, $indexer_ids);
-//            }
-//            pagecmd('setEachNum', $this->page);
-//            pagecmd('setTotalNum', $indexer_count);
-//        } else {
-//          $goods_list = $model_goods->getGoodsListByColorDistinct($condition, $fieldstr, $order, $this->page);
-//        }
-
-        $goods_list = $model_goods->getGoodsListByColorDistinct($condition, $fieldstr, $order, $this->page);
-        $page_count = $model_goods->gettotalpage();
-        $model_goods->cls();
-
-        //处理商品列表(抢购、限时折扣、商品图片)
-        $goods_list = $this->_goods_list_extend($goods_list);
-
-        joutput_data(array('goods_list' => $goods_list, 'mobile_page' => mobile_page($page_count)));
-    }
-
-    /**
-     * 商品列表排序方式
-     */
-    private function _goods_list_order($key, $order)
-    {
-        $result = 'is_own_shop desc,goods_commonid desc';
-        if (!empty($key)) {
-
-            $sequence = 'desc';
-            if ($order == 1) {
-                $sequence = 'asc';
-            }
-
-            switch ($key) {
-                //销量
-                case '1' :
-                    $result = 'goods_salenum' . ' ' . $sequence;
-                    break;
-                //浏览量
-                case '2' :
-                    $result = 'goods_click' . ' ' . $sequence;
-                    break;
-                //价格
-                case '3' :
-                    $result = 'goods_price' . ' ' . $sequence;
-                    break;
-            }
-        }
-        return $result;
-    }
-
-    /**
-     * 处理商品列表(抢购、限时折扣、商品图片)
-     */
-    private function _goods_list_extend($goods_list)
-    {
-        $commonid_array = array();
-        $goodsid_array = array();
-        foreach ($goods_list as $key => $value) {
-            $commonid_array[] = $value['goods_commonid'];
-            $goodsid_array[] = $value['goods_id'];
-
-            // image 切换为goods_common 表中数据
-            $condition['goods_commonid'] = $value['goods_commonid'];
-            $goods_image = Model()->table('goods_common')->where($condition)->field('goods_image')->select();
-            $goods_list[$key]['goods_image'] = $goods_image[0]['goods_image'];
-        }
-
-        //促销
-        $groupbuy_list = Model('groupbuy')->getGroupbuyListByGoodsCommonIDString(implode(',', $commonid_array));
-        $xianshi_list = Model('p_xianshi_goods')->getXianshiGoodsListByGoodsString(implode(',', $goodsid_array));
-        foreach ($goods_list as $key => &$value) {
-            //抢购
-            if (isset($groupbuy_list[$value['goods_commonid']])) {
-                $goods_list[$key]['goods_price'] = $groupbuy_list[$value['goods_commonid']]['groupbuy_price'];
-                $goods_list[$key]['group_flag'] = true;
-            } else {
-                $goods_list[$key]['group_flag'] = false;
-            }
-
-            //限时折扣
-            if (isset($xianshi_list[$value['goods_id']]) && !$goods_list[$key]['group_flag']) {
-                $goods_list[$key]['goods_price'] = $xianshi_list[$value['goods_id']]['xianshi_price'];
-                $goods_list[$key]['xianshi_flag'] = true;
-            } else {
-                $goods_list[$key]['xianshi_flag'] = false;
-            }
-
-            //商品图片url
-            $goods_list[$key]['goods_image_url'] = cthumb($value['goods_image'], 360, $value['store_id']);
-
-            unset($goods_list[$key]['store_id']);
-            //unset($goods_list[$key]['goods_commonid']);
-            unset($goods_list[$key]['nc_distinct']);
-            unset($goods_list[$key]['gc_id']);
-            unset($goods_list[$key]['goods_marketprice']);
-            unset($goods_list[$key]['goods_image']);
-            unset($goods_list[$key]['goods_salenum']);
-            unset($goods_list[$key]['evaluation_good_star']);
-            unset($goods_list[$key]['evaluation_count']);
-            unset($goods_list[$key]['is_virtual']);
-            unset($goods_list[$key]['is_presell']);
-            unset($goods_list[$key]['is_fcode']);
-            unset($goods_list[$key]['have_gift']);
-            unset($goods_list[$key]['group_flag']);
-            unset($goods_list[$key]['xianshi_flag']);
-
-            // 品牌名
-            $brand = Model()->table("brand")->find($value['brand_id']);
-            if (!empty($brand)) {
-                $value['brand_name'] = $brand['brand_name'];
-            }
-
-            // 分类
-            $gc_info = Model()->table('goods_class')->find($value['gc_id']);
-            if (!empty($gc_info)) {
-                $value['gc_name'] = $gc_info['gc_name'];
-            }
-
-            // 功效列表
-            $goods_common = Model('goods');
-            $goods_common_info = $goods_common->getGoodeCommonInfoByID($value['goods_commonid']);
-            if (!empty($goods_common_info)) {
-                $value['goods_attr'] = $this->_parse_for_efficacy(unserialize($goods_common_info['goods_attr']));
-            }
-        }
-
-        return $goods_list;
-    }
-
-    /**
-     * 商品详细页扩展
-     *
-     * 输入参数:
-     * goods_id:商品id
-     *
-     */
-    public function goods_commonOp()
-    {
-        $goods_id = intval($_GET ['goods_id']);
-        if (empty($_GET ['goods_id']) || $goods_id < 0) {
-            return joutput_error(errcode::ErrParamter, "goods_id = {$goods_id} must be > 0.");
-        }
-        // 商品详细信息
-        $model_goods = Model('goods')->cls();
-        $goods_detail = $model_goods->getGoodsSku($goods_id);
-        if (empty($goods_detail)) {
-            return joutput_error(errcode::ErrGoodsNotExist);
-        }
-        //推荐商品
-        $model_store = Model('store')->cls();
-        $store_info = $model_store->getStoreInfoByID($goods_detail['goods_info']['store_id']);
-        $goods_detail['store_info']['store_id'] = $store_info['store_id'];
-        $goods_detail['store_info']['store_name'] = $store_info['store_name'];
-        $goods_detail['store_info']['member_id'] = $store_info['member_id'];
-        //显示QQ及旺旺 好商城V3
-        $goods_detail['store_info']['store_qq'] = $store_info['store_qq'];
-        $goods_detail['store_info']['store_ww'] = $store_info['store_ww'];
-        $goods_detail['store_info']['store_phone'] = $store_info['store_phone'];
-        $goods_detail['store_info']['member_name'] = $store_info['member_name'];
-        $goods_detail['store_info']['avatar'] = getMemberAvatarForID($store_info['member_id']);
-
-        //商品详细信息处理
-        $goods_detail = $this->_goods_common_extend($goods_detail);
-
-        joutput_data($goods_detail);
-    }
-
-    /**
-     * 商品详细信息处理
-     */
-    private function _goods_common_extend($goods_detail)
-    {
-        //商品链接
-        $goods_detail['goods_info']['goods_url'] = urlShop('goods', 'index', array('goods_id' => $goods_detail['request_goods_id']));
-
-        //整理数据
-        unset($goods_detail['goods_info']['goods_commonid']);
-        unset($goods_detail['goods_info']['gc_id']);
-        unset($goods_detail['goods_info']['gc_name']);
-        unset($goods_detail['goods_info']['store_name']);
-        unset($goods_detail['goods_info']['brand_id']);
-        unset($goods_detail['goods_info']['brand_name']);
-        unset($goods_detail['goods_info']['type_id']);
-        unset($goods_detail['goods_info']['goods_image']);
-        //unset($goods_detail['goods_info']['goods_body']);
-        unset($goods_detail['goods_info']['mobile_body']);
-        unset($goods_detail['goods_info']['goods_state']);
-        unset($goods_detail['goods_info']['goods_stateremark']);
-        unset($goods_detail['goods_info']['goods_verify']);
-        unset($goods_detail['goods_info']['goods_verifyremark']);
-        unset($goods_detail['goods_info']['goods_lock']);
-        unset($goods_detail['goods_info']['goods_addtime']);
-        unset($goods_detail['goods_info']['goods_edittime']);
-        unset($goods_detail['goods_info']['goods_selltime']);
-        unset($goods_detail['goods_info']['goods_show']);
-        unset($goods_detail['goods_info']['goods_commend']);
-        unset($goods_detail['goods_info']['explain']);
-        unset($goods_detail['goods_info']['cart']);
-        unset($goods_detail['goods_info']['buynow_text']);
-        unset($goods_detail['goods_info']['spec_value']);
-        unset($goods_detail['goods_info']['spec_name']);
-        unset($goods_detail['goods_info']['goods_spec']);
-        //unset($goods_detail['goods_info']['goods_attr']);
-
-        unset($goods_detail['groupbuy_info']);
-        unset($goods_detail['xianshi_info']);
-
-        return $goods_detail;
-    }
-
-    /**
-     * 商品详细页
-     *
-     * 输入参数:
-     * goods_id: 商品id
-     * from:目前说明是来自app还是h5
-     */
-    public function goods_detailOp()
-    {
-        $goods_id = intval($_GET ['goods_id']);
-        $from = $_GET['from'];
-
-        // 商品详细信息
-        $model_goods = Model('goods');
-        $goods_detail = $model_goods->getGoodsDetail($goods_id);
-        if (empty($goods_detail)) {
-            return joutput_error(errcode::ErrGoodsNotExist);
-        }
-
-        // 推荐商品
-        $model_store = Model('store');
-        $hot_sales = $model_store->getHotSalesList($goods_detail['goods_info']['store_id'], 6);
-        $goods_commend_list = array();
-        foreach ($hot_sales as $value) {
-            $goods_commend = array();
-            $goods_commend['goods_id'] = $value['goods_id'];
-            $goods_commend['goods_name'] = $value['goods_name'];
-            $goods_commend['goods_price'] = $value['goods_price'];
-            $goods_commend['goods_image_url'] = cthumb($value['goods_image'], 240);
-            $goods_commend_list[] = $goods_commend;
-        }
-        $goods_detail['goods_commend_list'] = $goods_commend_list;
-        $store_info = $model_store->getStoreInfoByID($goods_detail['goods_info']['store_id']);
-        $goods_detail['store_info']['store_id'] = $store_info['store_id'];
-        $goods_detail['store_info']['store_name'] = $store_info['store_name'];
-        $goods_detail['store_info']['member_id'] = $store_info['member_id'];
-        //显示QQ及旺旺 好商城V3
-        $goods_detail['store_info']['store_qq'] = $store_info['store_qq'];
-        $goods_detail['store_info']['store_ww'] = $store_info['store_ww'];
-        $goods_detail['store_info']['store_phone'] = $store_info['store_phone'];
-        $goods_detail['store_info']['member_name'] = $store_info['member_name'];
-        $goods_detail['store_info']['avatar'] = getMemberAvatarForID($store_info['member_id']);
-
-        //商品详细信息处理
-        $goods_detail = $this->_goods_detail_extend($goods_detail);
-
-        if ($from === 'app') {
-            $goods_detail['goods_info']['spec'] = $this->_parse_spec($goods_detail['goods_info']['spec_name'], $goods_detail['goods_info']['spec_value'], $goods_detail['spec_image'], $goods_detail['spec_list']);
-            $goods_detail['goods_info']['attributes'] = $this->_parse_attributes($goods_detail['goods_info']['goods_attr']);
-            $goods_detail['goods_info']['goods_spec_obj'] = $this->_parse_goods_spec($goods_detail['goods_info']['goods_spec']);
-            $goods_detail['UPLOAD_SITE_URL'] = $GLOBALS['setting_config']['upload_site_url'];
-        }
-        //v3-b11 抢购商品是否开始
-        $goods_info = $goods_detail['goods_info'];
-        //print_r($goods_info);
-        $IsHaveBuy = 0;
-        if (!empty($_COOKIE['username'])) {
-            $model_member = Model('member');
-            $member_info = $model_member->getMemberInfo(array('member_name' => $_COOKIE['username']));
-            $buyer_id = $member_info['member_id'];
-
-            $promotion_type = $goods_info["promotion_type"];
-
-            if ($promotion_type == 'groupbuy') {
-                //检测是否限购数量
-                $upper_limit = $goods_info["upper_limit"];
-                if ($upper_limit > 0) {
-                    //查询些会员的订单中,是否已买过了
-                    $model_order = Model('order');
-                    //取商品列表
-                    $order_goods_list = $model_order->getOrderGoodsList(array('goods_id' => $goods_id, 'buyer_id' => $buyer_id, 'goods_type' => 2));
-                    if ($order_goods_list) {
-                        //取得上次购买的活动编号(防一个商品参加多次团购活动的问题)
-                        $promotions_id = $order_goods_list[0]["promotions_id"];
-                        //用此编号取数据,检测是否这次活动的订单商品。
-                        $model_groupbuy = Model('groupbuy');
-                        $groupbuy_info = $model_groupbuy->getGroupbuyInfo(array('groupbuy_id' => $promotions_id));
-                        if ($groupbuy_info) {
-                            $IsHaveBuy = 1;
-                        } else {
-                            $IsHaveBuy = 0;
-                        }
-                    }
-                }
-            }
-        }
-        $goods_detail['IsHaveBuy'] = $IsHaveBuy;
-        //v3-b11 end
-        joutput_data($goods_detail);
-    }
-
-    /**
-     * 商品详细信息处理
-     */
-    private function _goods_detail_extend($goods_detail)
-    {
-        //整理商品规格
-        unset($goods_detail['spec_list']);
-        $goods_detail['spec_list'] = $goods_detail['spec_list_mobile'];
-        unset($goods_detail['spec_list_mobile']);
-
-        //整理商品图片
-        unset($goods_detail['goods_image']);
-        $goods_detail['goods_image'] = implode(',', $goods_detail['goods_image_mobile']);
-        unset($goods_detail['goods_image_mobile']);
-
-        //商品链接
-        $goods_detail['goods_info']['goods_url'] = urlShop('goods', 'index', array('goods_id' => $goods_detail['goods_info']['goods_id']));
-
-        //整理数据
-        unset($goods_detail['goods_info']['goods_commonid']);
-        unset($goods_detail['goods_info']['gc_id']);
-        unset($goods_detail['goods_info']['gc_name']);
-        unset($goods_detail['goods_info']['store_name']);
-        unset($goods_detail['goods_info']['brand_id']);
-        unset($goods_detail['goods_info']['brand_name']);
-        unset($goods_detail['goods_info']['type_id']);
-        unset($goods_detail['goods_info']['goods_image']);
-        unset($goods_detail['goods_info']['goods_body']);
-        unset($goods_detail['goods_info']['mobile_body']);
-        unset($goods_detail['goods_info']['goods_state']);
-        unset($goods_detail['goods_info']['goods_stateremark']);
-        unset($goods_detail['goods_info']['goods_verify']);
-        unset($goods_detail['goods_info']['goods_verifyremark']);
-        unset($goods_detail['goods_info']['goods_lock']);
-        unset($goods_detail['goods_info']['goods_addtime']);
-        unset($goods_detail['goods_info']['goods_edittime']);
-        unset($goods_detail['goods_info']['goods_selltime']);
-        unset($goods_detail['goods_info']['goods_show']);
-        unset($goods_detail['goods_info']['goods_commend']);
-        unset($goods_detail['goods_info']['explain']);
-        unset($goods_detail['goods_info']['cart']);
-        unset($goods_detail['goods_info']['buynow_text']);
-        unset($goods_detail['groupbuy_info']);
-        //unset($goods_detail['xianshi_info']);
-
-        return $goods_detail;
-    }
-
-    /**
-     * 解析spec字段
-     *
-     * @param $spec_name
-     * @param $spec_value
-     * @param array $spec_image
-     * @param array $spec_list
-     * @return array
-     */
-    private function _parse_spec($spec_name, $spec_value, $spec_image = [], $spec_list = [])
-    {
-        $spec = [];
-        foreach ($spec_name as $key => $value) {
-            $spec_item = [];
-            $spec_item['spec_id'] = $key;
-            $spec_item['spec_name'] = $value;
-            if (!empty($spec_value[$key])) {
-                $spec_item['value_list'] = [];
-                foreach ($spec_value[$key] as $v_key => $v) {
-                    $value_item = [];
-                    $value_item['value_id'] = $v_key;
-                    $value_item['value_name'] = $v;
-                    $value_item['value_image'] = empty($spec_image[$v_key]) ? '' : $spec_image[$v_key];
-                    $value_item['value'] = empty($spec_list[$v_key]) ? '' : $spec_list[$v_key];
-                    array_push($spec_item['value_list'], $value_item);
-                }
-            }
-            array_push($spec, $spec_item);
-        }
-        return $spec;
-    }
-
-    /**
-     * 解析商品属性字段
-     *
-     * @param $goods_attr
-     * @return array
-     */
-    private function _parse_attributes($goods_attr)
-    {
-        $attributes = [];
-        foreach ($goods_attr as $key => $value) {
-            $attribute_item = [];
-            $attribute_item['goods_attr_id'] = $key;
-            $attribute_item['goods_attr_value'] = [];
-            if (!empty($value)) {
-                foreach ($value as $v_key => $v) {
-                    $attribute_attr = [];
-                    if ($v_key === 'name') {
-                        $attribute_item['goods_attr_name'] = $v;
-                    } else {
-                        $attribute_attr['value_id'] = $v_key;
-                        $attribute_attr['value_name'] = $v;
-                        array_push($attribute_item['goods_attr_value'], $attribute_attr);
-                    }
-                }
-            }
-            array_push($attributes, $attribute_item);
-        }
-        return $attributes;
-    }
-
-    /**
-     * 解析功效
-     *
-     * @param $goods_attr
-     * @return mixed
-     */
-    private function _parse_for_efficacy($goods_attr)
-    {
-        foreach ($goods_attr as $key => $val) {
-            $attr_item['goods_attr_id'] = intval($key);
-            $attr_item['goods_attr_name'] = $val['name'];
-            if ($attr_item['goods_attr_name'] === '功效') {
-                $goods_attr_value = array();
-                foreach ($val as $id => $name) {
-                    if ($id !== 'name') {
-                        $val_item['value_id'] = intval($id);
-                        $val_item['value_name'] = $name;
-                        array_push($goods_attr_value, $val_item);
-                    }
-                }
-                $attr_item['goods_attr_value'] = $goods_attr_value;
-                break;
-            }
-        }
-        return $attr_item;
-    }
-
-    /**
-     * 商品规格序列化解析
-     *
-     * @param $goods_spec
-     * @return array
-     */
-    private function _parse_goods_spec($goods_spec)
-    {
-        $goods_spec_obj = [];
-        foreach ($goods_spec as $key => $value) {
-            $spec_item = [];
-            $spec_item['spec_value'] = $key;
-            $spec_item['spec_name'] = $value;
-            array_push($goods_spec_obj, $spec_item);
-        }
-        return $goods_spec_obj;
-    }
-
-    /**
-     * 商品详细页(未启用)
-     */
-    public function goods_bodyOp()
-    {
-        return joutput_error(errcode::ErrProtocolDisabled);
-
-        $goods_id = intval($_GET ['goods_id']);
-        $out_type = $_GET ['type'];
-        $model_goods = Model('goods');
-
-        if (empty($_GET ['goods_commonid'])) {
-            $goods_info = $model_goods->getGoodsInfoByID($goods_id, 'goods_commonid');
-        } else {
-            $goods_info['goods_commonid'] = intval($_GET ['goods_commonid']);
-        }
-        $goods_common_info = $model_goods->getGoodeCommonInfoByID($goods_info['goods_commonid']);
-
-        if ($out_type === 'json') {
-            $goods_common_info['goods_attr'] = $this->_parse_attributes(unserialize($goods_common_info['goods_attr']));
-            $goods_common_info['spec_name'] = unserialize($goods_common_info['spec_name']);
-            $goods_common_info['spec_value'] = unserialize($goods_common_info['spec_value']);
-            $goods_common_info['spec'] = $this->_parse_spec($goods_common_info['spec_name'], $goods_common_info['spec_value']);
-            $goods_common_info['goods_body'] = ''; //base64_encode($goods_common_info['goods_body']);
-            $goods_common_info['mobile_body'] = '';//base64_encode($goods_common_info['mobile_body']);
-            joutput_data($goods_common_info);
-        } else {
-            Tpl::output('goods_common_info', $goods_common_info);
-            Tpl::showpage('goods_body');
-        }
-    }
-
-    /**
-     * 获取detail(未启用)
-     */
-    public function detailOp()
-    {
-        $goods_id = intval($_GET['goods_id']);
-        if (empty($_GET['goods_id']) || $goods_id <= 0) {
-            if (!empty($_GET['goods_commonid'])) {
-                $commonid = intval($_GET['goods_commonid']);
-            }
-        } else {
-            $items = Model()->table('goods')->field('goods_commonid')->where(array('goods_id' => $goods_id))->limit(1)->select();
-            if (!empty($items) && count($items) > 0) {
-                $commonid = intval($items[0]['goods_commonid']);
-            }
-        }
-
-        if (isset($commonid) && $commonid > 0) {
-            $items = Model()->table('goods_common')->field('goods_body')->where(array('goods_commonid' => $commonid))->select();
-            if (!empty($items) && count($items) > 0) {
-                Tpl::output('goods_body', $items[0]['goods_body']);
-            }
-        }
-        Tpl::showpage('goods_detail');
-    }
-}
+<?php
+/**
+ * Created by PhpStorm.
+ * User: stanley-king
+ * Date: 16/3/18
+ * Time: 下午10:11
+ */
+
+/**
+ * 前台品牌分类
+ *
+ *
+ *
+ ***/
+
+
+defined('InShopNC') or exit('Access Invalid!');
+class goodsControl extends mobileControl
+{
+    public function __construct() {
+        parent::__construct ();
+    }
+
+    /**
+     * 单个商品信息页
+     */
+    public function indexOp()
+    {
+        $goods_id = intval($_GET['goods_id']);
+        if (empty($_GET ['goods_id']) || $goods_id < 0) {
+            return self::outerr(errcode::ErrParamter, "goods_id = {$goods_id} must be > 0.");
+        }
+        // 商品详细信息
+        $model_goods = Model('goods');
+        $goods_detail = $model_goods->getGoodsDetail($goods_id);
+        $goods_info = $goods_detail['goods_info'];
+        if (empty($goods_info)) {
+            return self::outerr(errcode::ErrGoodsNotExist);
+        }
+        $rs = $model_goods->getGoodsList(array('goods_commonid'=>$goods_info['goods_commonid']));
+        $count = 0;
+        foreach($rs as $v) {
+            $count += $v['goods_salenum'];
+        }
+        $goods_info['goods_salenum'] = $count;
+        $model_store = Model('store');
+        $store_info = $model_store->getStoreOnlineInfoByID($goods_info['store_id']);
+        //  添加 end
+
+        Tpl::output('spec_list', $goods_detail['spec_list']);
+        Tpl::output('spec_image', $goods_detail['spec_image']);
+        Tpl::output('goods_image', $goods_detail['goods_image']);
+        Tpl::output('mansong_info', $goods_detail['mansong_info']);
+        Tpl::output('gift_array', $goods_detail['gift_array']);
+
+        // 生成缓存的键值
+        $hash_key = $goods_info['goods_id'];
+        $_cache = rcache($hash_key, 'product');
+        if (empty($_cache)) { // 查询SNS中该商品的信息
+            $snsgoodsinfo = Model('sns_goods')->getSNSGoodsInfo(array('snsgoods_goodsid' => $goods_info['goods_id']), 'snsgoods_likenum,snsgoods_sharenum');
+            $data = array();
+            $data['likenum'] = $snsgoodsinfo['snsgoods_likenum'];
+            $data['sharenum'] = $snsgoodsinfo['snsgoods_sharenum'];
+            // 缓存商品信息
+            wcache($hash_key, $data, 'product');
+        }
+        $goods_info = array_merge($goods_info, $_cache);
+
+        $inform_switch = true;
+        // 检测商品是否下架,检查是否为店主本人
+        if ($goods_info['goods_state'] != 1 || $goods_info['goods_verify'] != 1 || $goods_info['store_id'] == $_SESSION['store_id']) {
+            $inform_switch = false;
+        }
+        Tpl::output('inform_switch',$inform_switch );
+
+        // 如果使用运费模板
+        if ($goods_info['transport_id'] > 0) {
+            // 取得三种运送方式默认运费
+            $model_transport = Model('transport');
+            $transport = $model_transport->getExtendList(array('transport_id' => $goods_info['transport_id'], 'is_default' => 1));
+            if (!empty($transport) && is_array($transport)) {
+                foreach ($transport as $v) {
+                    $goods_info[$v['type'] . "_price"] = $v['sprice'];
+                }
+            }
+        }
+        Tpl::output('goods', $goods_info);
+
+        //v3-b11 抢购商品是否开始
+        $IsHaveBuy=0;
+        if(!empty($_SESSION['member_id']))
+        {
+            $buyer_id=$_SESSION['member_id'];
+            $promotion_type=$goods_info["promotion_type"];
+            if($promotion_type=='groupbuy')
+            {
+                //检测是否限购数量
+                $upper_limit=$goods_info["upper_limit"];
+                if($upper_limit>0)
+                {
+                    //查询些会员的订单中,是否已买过了
+                    $model_order= Model('order');
+                    //取商品列表
+                    $order_goods_list = $model_order->getOrderGoodsList(array('goods_id'=>$goods_id,'buyer_id'=>$buyer_id,'goods_type'=>2));
+                    if($order_goods_list)
+                    {
+                        //取得上次购买的活动编号(防一个商品参加多次团购活动的问题)
+                        $promotions_id=$order_goods_list[0]["promotions_id"];
+                        //用此编号取数据,检测是否这次活动的订单商品。
+                        $model_groupbuy = Model('groupbuy');
+                        $groupbuy_info = $model_groupbuy->getGroupbuyInfo(array('groupbuy_id' => $promotions_id));
+                        if($groupbuy_info)  {
+                            $IsHaveBuy=1;
+                        } else {
+                            $IsHaveBuy=0;
+                        }
+                    }
+                }
+            }
+        }
+        Tpl::output('IsHaveBuy',$IsHaveBuy);
+        //end
+        Tpl::output('store_id', $goods_info ['store_id']);
+
+        // 输出一级地区
+        $area_list = Model('area')->getTopLevelAreas();
+
+        if (strtoupper(CHARSET) == 'GBK') {
+            $area_list = Language::getGBK($area_list);
+        }
+        Tpl::output('area_list', $area_list);
+
+        //优先得到推荐商品
+        $goods_commend_list = $model_goods->getGoodsOnlineList(array('store_id' => $goods_info['store_id'], 'goods_commend' => 1), 'goods_id,goods_name,goods_jingle,goods_image,store_id,goods_price', 0, 'rand()', 5, 'goods_commonid');
+        Tpl::output('goods_commend',$goods_commend_list);
+
+
+        // 当前位置导航
+        $nav_link_list = Model('goods_class')->getGoodsClassNav($goods_info['gc_id'], 0);
+        $nav_link_list[] = array('title' => $goods_info['goods_name']);
+        Tpl::output('nav_link_list', $nav_link_list);
+
+        //评价信息
+        $goods_evaluate_info = Model('evaluate_goods')->getEvaluateGoodsInfoByGoodsID($goods_id);
+        Tpl::output('goods_evaluate_info', $goods_evaluate_info);
+
+        $seo_param = array();
+        $seo_param['name'] = $goods_info['goods_name'];
+        $seo_param['key'] = $goods_info['goods_keywords'];
+        $seo_param['description'] = $goods_info['goods_description'];
+        Model('seo')->type('product')->param($seo_param)->show();
+        Tpl::showpage('goods');
+    }
+
+}

+ 588 - 0
mobile/control/search.php

@@ -0,0 +1,588 @@
+<?php
+/**
+ * 商品
+ *
+ * by 33hao.com 好商城V3
+ *
+ *
+ */
+//by 33hao.com
+//use Shopnc\Tpl;
+
+defined('InShopNC') or exit('Access Invalid!');
+
+class searchControl extends mobileHomeControl
+{
+    public function __construct()
+    {
+        parent::__construct();
+    }
+
+    /**
+     * 商品列表接口
+     *
+     * 请求参数:
+     * key:
+     * order: 1-升序 2-降序
+     * page: 每页数量
+     * curpage: 当前页码
+     * gc_id: 分类编码
+     * keyword:搜索关键字
+     * brand_id: 品牌
+     * efficacy_id:功效查询
+     *
+     */
+    public function goods_listOp()
+    {
+        $page = trim($_GET['page']);
+        $curpage = trim($_GET['curpage']);
+        initpage($page,$curpage);
+
+        $model_goods = Model('goods');
+        $condition = array();
+        if (!empty(trim($_GET['gc_id']))) {
+            $condition['gc_id'] = intval($_GET['gc_id']);
+        }
+        // 关键字
+        if (!empty(trim($_GET['keyword']))) {
+            $condition['goods_name|goods_jingle'] = array('like', '%' . urldecode($_GET['keyword']) . '%');
+        }
+        // 品牌查询
+        if (!empty(trim($_GET['brand_id']))) {
+            $condition['brand_id'] = intval($_GET['brand_id']);
+        }
+        // 功效查询
+        if (!empty(trim($_GET['efficacy_id']))) {
+            $condition['efficacy_id'] = intval($_GET['efficacy_id']);
+        }
+
+        //所需字段
+        $fieldstr = "goods_id,goods_commonid,store_id,brand_id,gc_id,goods_name,goods_price,goods_marketprice,goods_image,goods_salenum,evaluation_good_star,evaluation_count,goods_storage,goods_storage_alarm";
+
+        // 添加3个状态字段
+        $fieldstr .= ',is_virtual,is_presell,is_fcode,have_gift';
+
+        //排序方式
+        $order = $this->_goods_list_order($_GET['key'], $_GET['order']);
+
+        //优先从全文索引库里查找
+//        list($indexer_ids, $indexer_count) = $model_search->indexerSearch($_GET, $this->page);
+//        if (is_array($indexer_ids)) {
+//            //商品主键搜索
+//            $goods_list = $model_goods->getGoodsOnlineList(array('goods_id' => array('in', $indexer_ids)), $fieldstr, 0, $order, $this->page, null, false);
+//
+//            //如果有商品下架等情况,则删除下架商品的搜索索引信息
+//            if (count($goods_list) != count($indexer_ids)) {
+//                $model_search->delInvalidGoods($goods_list, $indexer_ids);
+//            }
+//            pagecmd('setEachNum', $this->page);
+//            pagecmd('setTotalNum', $indexer_count);
+//        } else {
+//          $goods_list = $model_goods->getGoodsListByColorDistinct($condition, $fieldstr, $order, $this->page);
+//        }
+
+        $goods_list = $model_goods->getGoodsListByColorDistinct($condition, $fieldstr, $order, $this->page);
+        $page_count = $model_goods->gettotalpage();
+        $model_goods->cls();
+
+        //处理商品列表(抢购、限时折扣、商品图片)
+        $goods_list = $this->_goods_list_extend($goods_list);
+
+        joutput_data(array('goods_list' => $goods_list, 'mobile_page' => mobile_page($page_count)));
+    }
+
+    /**
+     * 商品列表排序方式
+     */
+    private function _goods_list_order($key, $order)
+    {
+        $result = 'is_own_shop desc,goods_commonid desc';
+        if (!empty($key)) {
+
+            $sequence = 'desc';
+            if ($order == 1) {
+                $sequence = 'asc';
+            }
+
+            switch ($key) {
+                //销量
+                case '1' :
+                    $result = 'goods_salenum' . ' ' . $sequence;
+                    break;
+                //浏览量
+                case '2' :
+                    $result = 'goods_click' . ' ' . $sequence;
+                    break;
+                //价格
+                case '3' :
+                    $result = 'goods_price' . ' ' . $sequence;
+                    break;
+            }
+        }
+        return $result;
+    }
+
+    /**
+     * 处理商品列表(抢购、限时折扣、商品图片)
+     */
+    private function _goods_list_extend($goods_list)
+    {
+        $commonid_array = array();
+        $goodsid_array = array();
+        foreach ($goods_list as $key => $value) {
+            $commonid_array[] = $value['goods_commonid'];
+            $goodsid_array[] = $value['goods_id'];
+
+            // image 切换为goods_common 表中数据
+            $condition['goods_commonid'] = $value['goods_commonid'];
+            $goods_image = Model()->table('goods_common')->where($condition)->field('goods_image')->select();
+            $goods_list[$key]['goods_image'] = $goods_image[0]['goods_image'];
+        }
+
+        //促销
+        $groupbuy_list = Model('groupbuy')->getGroupbuyListByGoodsCommonIDString(implode(',', $commonid_array));
+        $xianshi_list = Model('p_xianshi_goods')->getXianshiGoodsListByGoodsString(implode(',', $goodsid_array));
+        foreach ($goods_list as $key => &$value) {
+            //抢购
+            if (isset($groupbuy_list[$value['goods_commonid']])) {
+                $goods_list[$key]['goods_price'] = $groupbuy_list[$value['goods_commonid']]['groupbuy_price'];
+                $goods_list[$key]['group_flag'] = true;
+            } else {
+                $goods_list[$key]['group_flag'] = false;
+            }
+
+            //限时折扣
+            if (isset($xianshi_list[$value['goods_id']]) && !$goods_list[$key]['group_flag']) {
+                $goods_list[$key]['goods_price'] = $xianshi_list[$value['goods_id']]['xianshi_price'];
+                $goods_list[$key]['xianshi_flag'] = true;
+            } else {
+                $goods_list[$key]['xianshi_flag'] = false;
+            }
+
+            //商品图片url
+            $goods_list[$key]['goods_image_url'] = cthumb($value['goods_image'], 360, $value['store_id']);
+
+            unset($goods_list[$key]['store_id']);
+            //unset($goods_list[$key]['goods_commonid']);
+            unset($goods_list[$key]['nc_distinct']);
+            unset($goods_list[$key]['gc_id']);
+            unset($goods_list[$key]['goods_marketprice']);
+            unset($goods_list[$key]['goods_image']);
+            unset($goods_list[$key]['goods_salenum']);
+            unset($goods_list[$key]['evaluation_good_star']);
+            unset($goods_list[$key]['evaluation_count']);
+            unset($goods_list[$key]['is_virtual']);
+            unset($goods_list[$key]['is_presell']);
+            unset($goods_list[$key]['is_fcode']);
+            unset($goods_list[$key]['have_gift']);
+            unset($goods_list[$key]['group_flag']);
+            unset($goods_list[$key]['xianshi_flag']);
+
+            // 品牌名
+            $brand = Model()->table("brand")->find($value['brand_id']);
+            if (!empty($brand)) {
+                $value['brand_name'] = $brand['brand_name'];
+            }
+
+            // 分类
+            $gc_info = Model()->table('goods_class')->find($value['gc_id']);
+            if (!empty($gc_info)) {
+                $value['gc_name'] = $gc_info['gc_name'];
+            }
+
+            // 功效列表
+            $goods_common = Model('goods');
+            $goods_common_info = $goods_common->getGoodeCommonInfoByID($value['goods_commonid']);
+            if (!empty($goods_common_info)) {
+                $value['goods_attr'] = $this->_parse_for_efficacy(unserialize($goods_common_info['goods_attr']));
+            }
+        }
+
+        return $goods_list;
+    }
+
+    /**
+     * 商品详细页扩展
+     *
+     * 输入参数:
+     * goods_id:商品id
+     *
+     */
+    public function goods_commonOp()
+    {
+        $goods_id = intval($_GET ['goods_id']);
+        if (empty($_GET ['goods_id']) || $goods_id < 0) {
+            return joutput_error(errcode::ErrParamter, "goods_id = {$goods_id} must be > 0.");
+        }
+        // 商品详细信息
+        $model_goods = Model('goods')->cls();
+        $goods_detail = $model_goods->getGoodsSku($goods_id);
+        if (empty($goods_detail)) {
+            return joutput_error(errcode::ErrGoodsNotExist);
+        }
+        //推荐商品
+        $model_store = Model('store')->cls();
+        $store_info = $model_store->getStoreInfoByID($goods_detail['goods_info']['store_id']);
+        $goods_detail['store_info']['store_id'] = $store_info['store_id'];
+        $goods_detail['store_info']['store_name'] = $store_info['store_name'];
+        $goods_detail['store_info']['member_id'] = $store_info['member_id'];
+        //显示QQ及旺旺 好商城V3
+        $goods_detail['store_info']['store_qq'] = $store_info['store_qq'];
+        $goods_detail['store_info']['store_ww'] = $store_info['store_ww'];
+        $goods_detail['store_info']['store_phone'] = $store_info['store_phone'];
+        $goods_detail['store_info']['member_name'] = $store_info['member_name'];
+        $goods_detail['store_info']['avatar'] = getMemberAvatarForID($store_info['member_id']);
+
+        //商品详细信息处理
+        $goods_detail = $this->_goods_common_extend($goods_detail);
+
+        joutput_data($goods_detail);
+    }
+
+    /**
+     * 商品详细信息处理
+     */
+    private function _goods_common_extend($goods_detail)
+    {
+        //商品链接
+        $goods_detail['goods_info']['goods_url'] = urlShop('goods', 'index', array('goods_id' => $goods_detail['request_goods_id']));
+
+        //整理数据
+        unset($goods_detail['goods_info']['goods_commonid']);
+        unset($goods_detail['goods_info']['gc_id']);
+        unset($goods_detail['goods_info']['gc_name']);
+        unset($goods_detail['goods_info']['store_name']);
+        unset($goods_detail['goods_info']['brand_id']);
+        unset($goods_detail['goods_info']['brand_name']);
+        unset($goods_detail['goods_info']['type_id']);
+        unset($goods_detail['goods_info']['goods_image']);
+        //unset($goods_detail['goods_info']['goods_body']);
+        unset($goods_detail['goods_info']['mobile_body']);
+        unset($goods_detail['goods_info']['goods_state']);
+        unset($goods_detail['goods_info']['goods_stateremark']);
+        unset($goods_detail['goods_info']['goods_verify']);
+        unset($goods_detail['goods_info']['goods_verifyremark']);
+        unset($goods_detail['goods_info']['goods_lock']);
+        unset($goods_detail['goods_info']['goods_addtime']);
+        unset($goods_detail['goods_info']['goods_edittime']);
+        unset($goods_detail['goods_info']['goods_selltime']);
+        unset($goods_detail['goods_info']['goods_show']);
+        unset($goods_detail['goods_info']['goods_commend']);
+        unset($goods_detail['goods_info']['explain']);
+        unset($goods_detail['goods_info']['cart']);
+        unset($goods_detail['goods_info']['buynow_text']);
+        unset($goods_detail['goods_info']['spec_value']);
+        unset($goods_detail['goods_info']['spec_name']);
+        unset($goods_detail['goods_info']['goods_spec']);
+        //unset($goods_detail['goods_info']['goods_attr']);
+
+        unset($goods_detail['groupbuy_info']);
+        unset($goods_detail['xianshi_info']);
+
+        return $goods_detail;
+    }
+
+    /**
+     * 商品详细页
+     *
+     * 输入参数:
+     * goods_id: 商品id
+     * from:目前说明是来自app还是h5
+     */
+    public function goods_detailOp()
+    {
+        $goods_id = intval($_GET ['goods_id']);
+        $from = $_GET['from'];
+
+        // 商品详细信息
+        $model_goods = Model('goods');
+        $goods_detail = $model_goods->getGoodsDetail($goods_id);
+        if (empty($goods_detail)) {
+            return joutput_error(errcode::ErrGoodsNotExist);
+        }
+
+        // 推荐商品
+        $model_store = Model('store');
+        $hot_sales = $model_store->getHotSalesList($goods_detail['goods_info']['store_id'], 6);
+        $goods_commend_list = array();
+        foreach ($hot_sales as $value) {
+            $goods_commend = array();
+            $goods_commend['goods_id'] = $value['goods_id'];
+            $goods_commend['goods_name'] = $value['goods_name'];
+            $goods_commend['goods_price'] = $value['goods_price'];
+            $goods_commend['goods_image_url'] = cthumb($value['goods_image'], 240);
+            $goods_commend_list[] = $goods_commend;
+        }
+        $goods_detail['goods_commend_list'] = $goods_commend_list;
+        $store_info = $model_store->getStoreInfoByID($goods_detail['goods_info']['store_id']);
+        $goods_detail['store_info']['store_id'] = $store_info['store_id'];
+        $goods_detail['store_info']['store_name'] = $store_info['store_name'];
+        $goods_detail['store_info']['member_id'] = $store_info['member_id'];
+        //显示QQ及旺旺 好商城V3
+        $goods_detail['store_info']['store_qq'] = $store_info['store_qq'];
+        $goods_detail['store_info']['store_ww'] = $store_info['store_ww'];
+        $goods_detail['store_info']['store_phone'] = $store_info['store_phone'];
+        $goods_detail['store_info']['member_name'] = $store_info['member_name'];
+        $goods_detail['store_info']['avatar'] = getMemberAvatarForID($store_info['member_id']);
+
+        //商品详细信息处理
+        $goods_detail = $this->_goods_detail_extend($goods_detail);
+
+        if ($from === 'app') {
+            $goods_detail['goods_info']['spec'] = $this->_parse_spec($goods_detail['goods_info']['spec_name'], $goods_detail['goods_info']['spec_value'], $goods_detail['spec_image'], $goods_detail['spec_list']);
+            $goods_detail['goods_info']['attributes'] = $this->_parse_attributes($goods_detail['goods_info']['goods_attr']);
+            $goods_detail['goods_info']['goods_spec_obj'] = $this->_parse_goods_spec($goods_detail['goods_info']['goods_spec']);
+            $goods_detail['UPLOAD_SITE_URL'] = $GLOBALS['setting_config']['upload_site_url'];
+        }
+        //v3-b11 抢购商品是否开始
+        $goods_info = $goods_detail['goods_info'];
+        //print_r($goods_info);
+        $IsHaveBuy = 0;
+        if (!empty($_COOKIE['username'])) {
+            $model_member = Model('member');
+            $member_info = $model_member->getMemberInfo(array('member_name' => $_COOKIE['username']));
+            $buyer_id = $member_info['member_id'];
+
+            $promotion_type = $goods_info["promotion_type"];
+
+            if ($promotion_type == 'groupbuy') {
+                //检测是否限购数量
+                $upper_limit = $goods_info["upper_limit"];
+                if ($upper_limit > 0) {
+                    //查询些会员的订单中,是否已买过了
+                    $model_order = Model('order');
+                    //取商品列表
+                    $order_goods_list = $model_order->getOrderGoodsList(array('goods_id' => $goods_id, 'buyer_id' => $buyer_id, 'goods_type' => 2));
+                    if ($order_goods_list) {
+                        //取得上次购买的活动编号(防一个商品参加多次团购活动的问题)
+                        $promotions_id = $order_goods_list[0]["promotions_id"];
+                        //用此编号取数据,检测是否这次活动的订单商品。
+                        $model_groupbuy = Model('groupbuy');
+                        $groupbuy_info = $model_groupbuy->getGroupbuyInfo(array('groupbuy_id' => $promotions_id));
+                        if ($groupbuy_info) {
+                            $IsHaveBuy = 1;
+                        } else {
+                            $IsHaveBuy = 0;
+                        }
+                    }
+                }
+            }
+        }
+        $goods_detail['IsHaveBuy'] = $IsHaveBuy;
+        //v3-b11 end
+        joutput_data($goods_detail);
+    }
+
+    /**
+     * 商品详细信息处理
+     */
+    private function _goods_detail_extend($goods_detail)
+    {
+        //整理商品规格
+        unset($goods_detail['spec_list']);
+        $goods_detail['spec_list'] = $goods_detail['spec_list_mobile'];
+        unset($goods_detail['spec_list_mobile']);
+
+        //整理商品图片
+        unset($goods_detail['goods_image']);
+        $goods_detail['goods_image'] = implode(',', $goods_detail['goods_image_mobile']);
+        unset($goods_detail['goods_image_mobile']);
+
+        //商品链接
+        $goods_detail['goods_info']['goods_url'] = urlShop('goods', 'index', array('goods_id' => $goods_detail['goods_info']['goods_id']));
+
+        //整理数据
+        unset($goods_detail['goods_info']['goods_commonid']);
+        unset($goods_detail['goods_info']['gc_id']);
+        unset($goods_detail['goods_info']['gc_name']);
+        unset($goods_detail['goods_info']['store_name']);
+        unset($goods_detail['goods_info']['brand_id']);
+        unset($goods_detail['goods_info']['brand_name']);
+        unset($goods_detail['goods_info']['type_id']);
+        unset($goods_detail['goods_info']['goods_image']);
+        unset($goods_detail['goods_info']['goods_body']);
+        unset($goods_detail['goods_info']['mobile_body']);
+        unset($goods_detail['goods_info']['goods_state']);
+        unset($goods_detail['goods_info']['goods_stateremark']);
+        unset($goods_detail['goods_info']['goods_verify']);
+        unset($goods_detail['goods_info']['goods_verifyremark']);
+        unset($goods_detail['goods_info']['goods_lock']);
+        unset($goods_detail['goods_info']['goods_addtime']);
+        unset($goods_detail['goods_info']['goods_edittime']);
+        unset($goods_detail['goods_info']['goods_selltime']);
+        unset($goods_detail['goods_info']['goods_show']);
+        unset($goods_detail['goods_info']['goods_commend']);
+        unset($goods_detail['goods_info']['explain']);
+        unset($goods_detail['goods_info']['cart']);
+        unset($goods_detail['goods_info']['buynow_text']);
+        unset($goods_detail['groupbuy_info']);
+        //unset($goods_detail['xianshi_info']);
+
+        return $goods_detail;
+    }
+
+    /**
+     * 解析spec字段
+     *
+     * @param $spec_name
+     * @param $spec_value
+     * @param array $spec_image
+     * @param array $spec_list
+     * @return array
+     */
+    private function _parse_spec($spec_name, $spec_value, $spec_image = [], $spec_list = [])
+    {
+        $spec = [];
+        foreach ($spec_name as $key => $value) {
+            $spec_item = [];
+            $spec_item['spec_id'] = $key;
+            $spec_item['spec_name'] = $value;
+            if (!empty($spec_value[$key])) {
+                $spec_item['value_list'] = [];
+                foreach ($spec_value[$key] as $v_key => $v) {
+                    $value_item = [];
+                    $value_item['value_id'] = $v_key;
+                    $value_item['value_name'] = $v;
+                    $value_item['value_image'] = empty($spec_image[$v_key]) ? '' : $spec_image[$v_key];
+                    $value_item['value'] = empty($spec_list[$v_key]) ? '' : $spec_list[$v_key];
+                    array_push($spec_item['value_list'], $value_item);
+                }
+            }
+            array_push($spec, $spec_item);
+        }
+        return $spec;
+    }
+
+    /**
+     * 解析商品属性字段
+     *
+     * @param $goods_attr
+     * @return array
+     */
+    private function _parse_attributes($goods_attr)
+    {
+        $attributes = [];
+        foreach ($goods_attr as $key => $value) {
+            $attribute_item = [];
+            $attribute_item['goods_attr_id'] = $key;
+            $attribute_item['goods_attr_value'] = [];
+            if (!empty($value)) {
+                foreach ($value as $v_key => $v) {
+                    $attribute_attr = [];
+                    if ($v_key === 'name') {
+                        $attribute_item['goods_attr_name'] = $v;
+                    } else {
+                        $attribute_attr['value_id'] = $v_key;
+                        $attribute_attr['value_name'] = $v;
+                        array_push($attribute_item['goods_attr_value'], $attribute_attr);
+                    }
+                }
+            }
+            array_push($attributes, $attribute_item);
+        }
+        return $attributes;
+    }
+
+    /**
+     * 解析功效
+     *
+     * @param $goods_attr
+     * @return mixed
+     */
+    private function _parse_for_efficacy($goods_attr)
+    {
+        foreach ($goods_attr as $key => $val) {
+            $attr_item['goods_attr_id'] = intval($key);
+            $attr_item['goods_attr_name'] = $val['name'];
+            if ($attr_item['goods_attr_name'] === '功效') {
+                $goods_attr_value = array();
+                foreach ($val as $id => $name) {
+                    if ($id !== 'name') {
+                        $val_item['value_id'] = intval($id);
+                        $val_item['value_name'] = $name;
+                        array_push($goods_attr_value, $val_item);
+                    }
+                }
+                $attr_item['goods_attr_value'] = $goods_attr_value;
+                break;
+            }
+        }
+        return $attr_item;
+    }
+
+    /**
+     * 商品规格序列化解析
+     *
+     * @param $goods_spec
+     * @return array
+     */
+    private function _parse_goods_spec($goods_spec)
+    {
+        $goods_spec_obj = [];
+        foreach ($goods_spec as $key => $value) {
+            $spec_item = [];
+            $spec_item['spec_value'] = $key;
+            $spec_item['spec_name'] = $value;
+            array_push($goods_spec_obj, $spec_item);
+        }
+        return $goods_spec_obj;
+    }
+
+    /**
+     * 商品详细页(未启用)
+     */
+    public function goods_bodyOp()
+    {
+        return joutput_error(errcode::ErrProtocolDisabled);
+
+        $goods_id = intval($_GET ['goods_id']);
+        $out_type = $_GET ['type'];
+        $model_goods = Model('goods');
+
+        if (empty($_GET ['goods_commonid'])) {
+            $goods_info = $model_goods->getGoodsInfoByID($goods_id, 'goods_commonid');
+        } else {
+            $goods_info['goods_commonid'] = intval($_GET ['goods_commonid']);
+        }
+        $goods_common_info = $model_goods->getGoodeCommonInfoByID($goods_info['goods_commonid']);
+
+        if ($out_type === 'json') {
+            $goods_common_info['goods_attr'] = $this->_parse_attributes(unserialize($goods_common_info['goods_attr']));
+            $goods_common_info['spec_name'] = unserialize($goods_common_info['spec_name']);
+            $goods_common_info['spec_value'] = unserialize($goods_common_info['spec_value']);
+            $goods_common_info['spec'] = $this->_parse_spec($goods_common_info['spec_name'], $goods_common_info['spec_value']);
+            $goods_common_info['goods_body'] = ''; //base64_encode($goods_common_info['goods_body']);
+            $goods_common_info['mobile_body'] = '';//base64_encode($goods_common_info['mobile_body']);
+            joutput_data($goods_common_info);
+        } else {
+            Tpl::output('goods_common_info', $goods_common_info);
+            Tpl::showpage('goods_body');
+        }
+    }
+
+    /**
+     * 获取detail(未启用)
+     */
+    public function detailOp()
+    {
+        $goods_id = intval($_GET['goods_id']);
+        if (empty($_GET['goods_id']) || $goods_id <= 0) {
+            if (!empty($_GET['goods_commonid'])) {
+                $commonid = intval($_GET['goods_commonid']);
+            }
+        } else {
+            $items = Model()->table('goods')->field('goods_commonid')->where(array('goods_id' => $goods_id))->limit(1)->select();
+            if (!empty($items) && count($items) > 0) {
+                $commonid = intval($items[0]['goods_commonid']);
+            }
+        }
+
+        if (isset($commonid) && $commonid > 0) {
+            $items = Model()->table('goods_common')->field('goods_body')->where(array('goods_commonid' => $commonid))->select();
+            if (!empty($items) && count($items) > 0) {
+                Tpl::output('goods_body', $items[0]['goods_body']);
+            }
+        }
+        Tpl::showpage('goods_detail');
+    }
+}

+ 5 - 4
shop/control/goods.php

@@ -18,9 +18,9 @@ class goodsControl extends BaseGoodsControl {
     /**
      * 单个商品信息页
      */
-    public function indexOp() {
+    public function indexOp()
+    {
         $goods_id = intval($_GET['goods_id']);
-
         // 商品详细信息
         $model_goods = Model('goods');
         $goods_detail = $model_goods->getGoodsDetail($goods_id);
@@ -31,12 +31,13 @@ class goodsControl extends BaseGoodsControl {
 		// by 33hao.com
 		$rs = $model_goods->getGoodsList(array('goods_commonid'=>$goods_info['goods_commonid']));
 		$count = 0;
-		foreach($rs as $v){
+		foreach($rs as $v) {
 			$count += $v['goods_salenum'];
 		}
 		$goods_info['goods_salenum'] = $count;
-		//  添加 end
+
         $this->getStoreInfo($goods_info['store_id']);
+        $store_info = Model('store')->getStoreOnlineInfoByID($goods_info['store_id']);
 
         Tpl::output('spec_list', $goods_detail['spec_list']);
         Tpl::output('spec_image', $goods_detail['spec_image']);