Server : Apache
System : Linux iZ2vcgyutqttsd1p850kl8Z 3.10.0-1160.92.1.el7.x86_64 #1 SMP Tue Jun 20 11:48:01 UTC 2023 x86_64
User : www ( 1000)
PHP Version : 5.6.40
Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Directory :  /www/wwwroot/saimikebio.com/mobile/
Upload File :
Current Directory [ Writeable ] Root Directory [ Writeable ]


Current File : /www/wwwroot/saimikebio.com/mobile/goods.php
<?php



/**

 * ECSHOP 商品详情

 * ============================================================================

 * * 版权所有 2005-2012 上海商派网络科技有限公司,并保留所有权利。

 * 网站地址: http://www.ecshop.com;

 * ----------------------------------------------------------------------------

 * 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和

 * 使用;不允许对程序代码以任何形式任何目的的再发布。

 * ============================================================================

 * $Author: liubo $

 * $Id: goods.php 17217 2011-01-19 06:29:08Z liubo $

*/



define('IN_ECTOUCH', true);



require(dirname(__FILE__) . '/include/init.php');

require(ROOT_PATH . 'include/lib_weixintong.php');

if ((DEBUG_MODE & 2) != 2)

{

    $smarty->caching = true;

}



$affiliate = unserialize($GLOBALS['_CFG']['affiliate']);

$smarty->assign('affiliate', $affiliate);
$smarty->assign('script_name',     'goods');  



/*------------------------------------------------------ */

//-- INPUT

/*------------------------------------------------------ */



$goods_id = isset($_REQUEST['id'])  ? intval($_REQUEST['id']) : 0;



/*------------------------------------------------------ */

//-- 改变属性、数量时重新计算商品价格

/*------------------------------------------------------ */



if (!empty($_REQUEST['act']) && $_REQUEST['act'] == 'price')

{

    include('include/cls_json.php');



    $json   = new JSON;

    $res    = array('err_msg' => '', 'result' => '', 'qty' => 1);



    $attr_id    = isset($_REQUEST['attr']) ? explode(',', $_REQUEST['attr']) : array();

    $number     = (isset($_REQUEST['number'])) ? intval($_REQUEST['number']) : 1;



    if ($goods_id == 0)

    {

        $res['err_msg'] = $_LANG['err_change_attr'];

        $res['err_no']  = 1;

    }

    else

    {
		//预售,检查库存是否足够--start
        if ($number == 0)
        {
            $res['qty'] = $number = 1;
        }
        else
        {
            $res['qty'] = $number;
        }
        if(empty($attr_id)){
        	$attr_id = 0;
        }
        $res['attr_num'] = get_product_attr_num($goods_id,$attr_id);

        $shop_price  = get_final_price($goods_id, $number, true, $attr_id);
        $mark_price = get_mark_price($goods_id);

		$shop_price = ($shop_price>=0) ? $shop_price : 0;

        $res['result'] = price_format($shop_price * $number);
        $res['result1'] = price_format($mark_price);
		$res['result_jf'] = floor($shop_price * $number);
		
		$current_number = $res['attr_num'];
		if($number > $current_number && !empty($current_number))
		{
			$res['err_msg'] = sprintf($_LANG['err_shortage_little'], $current_number);
			$res['qty'] = $current_number;
			$res['err_no']  = 1;
		}
		//预售,检查库存是否足够--end
   }



    die($json->encode($res));

}

/*预售信息 start*/
if (!empty($_REQUEST['act']) && $_REQUEST['act'] == 'allprice')
{
	include('includes/cls_json.php');

    $json   = new JSON;
    $res    = array('err_msg' => '', 'result' => '', 'qty' => 1);
    $number     = (isset($_REQUEST['number'])) ? intval($_REQUEST['number']) : 1;
    $attr_id    = !empty($_REQUEST['attr']) ? explode(',', $_REQUEST['attr']) : 0;
    
	if(empty($attr_id)){
       $attr_id = 0;
    }
    $res['attr_num'] = get_product_attr_num($goods_id,$attr_id);
    
    $min_price  = get_final_price($goods_id, $number, true, 0);
    $mark_price_min = get_mark_price($goods_id);

	$res['result'] = price_format($min_price * $number);
	$res['result1'] = price_format($mark_price_min * $number);

	$ret_result = array('min_price'=>$min_price,'max_price'=>$max_price);

    die($json->encode($res));
    
    
}
/*预售信息 end*/

/*------------------------------------------------------ */
/*------------------------------------------------------ */
if (!empty($_REQUEST['act']) && $_REQUEST['act'] == 'get_products_info')
{
include('include/cls_json.php');
$json = new JSON;
// $res = array('err_msg' => '', 'result' => '', 'qty' => 1);
$spce_id = $_GET['id'];
$goods_id = $_GET['goods_id'];
$row = get_products_info($goods_id,explode(",",$spce_id));
//$res = array('err_msg'=>$goods_id,'id'=>$spce_id);
die($json->encode($row));
}
/*------------------------------------------------------ */
/*------------------------------------------------------ */

/*------------------------------------------------------ */

//-- 商品购买记录ajax处理

/*------------------------------------------------------ */



if (!empty($_REQUEST['act']) && $_REQUEST['act'] == 'gotopage')

{

    include('include/cls_json.php');



    $json   = new JSON;

    $res    = array('err_msg' => '', 'result' => '');



    $goods_id   = isset($_REQUEST['id']) ? intval($_REQUEST['id']) : 0;

    $page    = (isset($_REQUEST['page'])) ? intval($_REQUEST['page']) : 1;



    if (!empty($goods_id))

    {

        $need_cache = $GLOBALS['smarty']->caching;

        $need_compile = $GLOBALS['smarty']->force_compile;



        $GLOBALS['smarty']->caching = false;

        $GLOBALS['smarty']->force_compile = true;



        /* 商品购买记录 */

        $sql = 'SELECT u.user_name, og.goods_number, oi.add_time, IF(oi.order_status IN (2, 3, 4), 0, 1) AS order_status ' .

               'FROM ' . $ecs->table('order_info') . ' AS oi LEFT JOIN ' . $ecs->table('users') . ' AS u ON oi.user_id = u.user_id, ' . $ecs->table('order_goods') . ' AS og ' .

               'WHERE oi.order_id = og.order_id AND ' . time() . ' - oi.add_time < 2592000 AND og.goods_id = ' . $goods_id . ' ORDER BY oi.add_time DESC LIMIT ' . (($page > 1) ? ($page-1) : 0) * 5 . ',5';

        $bought_notes = $db->getAll($sql);



        foreach ($bought_notes as $key => $val)

        {

            $bought_notes[$key]['add_time'] = local_date("Y-m-d G:i:s", $val['add_time']);

        }



        $sql = 'SELECT count(*) ' .

               'FROM ' . $ecs->table('order_info') . ' AS oi LEFT JOIN ' . $ecs->table('users') . ' AS u ON oi.user_id = u.user_id, ' . $ecs->table('order_goods') . ' AS og ' .

               'WHERE oi.order_id = og.order_id AND ' . time() . ' - oi.add_time < 2592000 AND og.goods_id = ' . $goods_id;

        $count = $db->getOne($sql);





        /* 商品购买记录分页样式 */

        $pager = array();

        $pager['page']         = $page;

        $pager['size']         = $size = 5;

        $pager['record_count'] = $count;

        $pager['page_count']   = $page_count = ($count > 0) ? intval(ceil($count / $size)) : 1;;

        $pager['page_first']   = "javascript:gotoBuyPage(1,$goods_id)";

        $pager['page_prev']    = $page > 1 ? "javascript:gotoBuyPage(" .($page-1). ",$goods_id)" : 'javascript:;';

        $pager['page_next']    = $page < $page_count ? 'javascript:gotoBuyPage(' .($page + 1) . ",$goods_id)" : 'javascript:;';

        $pager['page_last']    = $page < $page_count ? 'javascript:gotoBuyPage(' .$page_count. ",$goods_id)"  : 'javascript:;';



        $smarty->assign('notes', $bought_notes);

        $smarty->assign('pager', $pager);





        $res['result'] = $GLOBALS['smarty']->fetch('library/bought_notes.lbi');



        $GLOBALS['smarty']->caching = $need_cache;

        $GLOBALS['smarty']->force_compile = $need_compile;

    }



    die($json->encode($res));

}





/*------------------------------------------------------ */

//-- PROCESSOR

/*------------------------------------------------------ */

/* 判断是否为正在预售的商品 */
$pre_sale_id = is_pre_sale_goods($goods_id);
if($pre_sale_id != null)
{
	$uri = build_uri("pre_sale", array("pre_sale_id" => $pre_sale_id));
	ecs_header("Location: $uri\n");
	exit;
}
/* 判断是否为正在预售的商品 */

$cache_id = $goods_id . '-' . $_SESSION['user_rank'].'-'.$_CFG['lang'];

$cache_id = sprintf('%X', crc32($cache_id));

if (!$smarty->is_cached('goods.dwt', $cache_id))

{

    $smarty->assign('image_width',  $_CFG['image_width']);

    $smarty->assign('image_height', $_CFG['image_height']);

    $smarty->assign('helps',        get_shop_help()); // 网店帮助

    $smarty->assign('id',           $goods_id);

    $smarty->assign('type',         0);

    $smarty->assign('cfg',          $_CFG);

    $smarty->assign('promotion',       get_promotion_info($goods_id));//促销信息

    $smarty->assign('promotion_info', get_promotion_info());



    /* 获得商品的信息 */





    $goods = get_goods_info($goods_id);



    if ($goods === false)

    {

        /* 如果没有找到任何记录则跳回到首页 */

        ecs_header("Location: ./\n");

        exit;

    }

    else

    {

        if ($goods['brand_id'] > 0)

        {

            $goods['goods_brand_url'] = build_uri('brand', array('bid'=>$goods['brand_id']), $goods['goods_brand']);

        }



        $shop_price   = $goods['shop_price'];

        $linked_goods = get_linked_goods($goods_id);



        $goods['goods_style_name'] = add_style($goods['goods_name'], $goods['goods_name_style']);

        $goods['comment_count'] = get_comment_count($goods['goods_id']);



        /* 购买该商品可以得到多少钱的红包 */

        if ($goods['bonus_type_id'] > 0)

        {

            $time = gmtime();

            $sql = "SELECT type_money FROM " . $ecs->table('bonus_type') .

                    " WHERE type_id = '$goods[bonus_type_id]' " .

                    " AND send_type = '" . SEND_BY_GOODS . "' " .

                    " AND send_start_date <= '$time'" .

                    " AND send_end_date >= '$time'";

            $goods['bonus_money'] = floatval($db->getOne($sql));

            if ($goods['bonus_money'] > 0)

            {

                $goods['bonus_money'] = price_format($goods['bonus_money']);

            }

        }

		$goods['goods_desc'] = str_replace('src="/images/', 'src="'.$config['site_url'].'images/', $goods['goods_desc']); //修复产品详情的图片 by wang

        $smarty->assign('goods',              $goods);

        $smarty->assign('goods_id',           $goods['goods_id']);

        $smarty->assign('promote_end_time',   $goods['gmt_end_time']);

        $smarty->assign('sales_count',        get_goods_sales_count($goods['goods_id'])); // by wang

        $smarty->assign('categories',         get_categories_tree($goods['cat_id']));  // 分类树
		$smarty->assign('sales_count',        get_sales_counts($goods_id));



        /* meta */

        $smarty->assign('keywords',           htmlspecialchars($goods['keywords']));

        $smarty->assign('description',        htmlspecialchars($goods['goods_brief']));





        $catlist = array();

        foreach(get_parent_cats($goods['cat_id']) as $k=>$v)

        {

            $catlist[] = $v['cat_id'];

        }



        assign_template('c', $catlist);



         /* 上一个商品下一个商品 */

        $prev_gid = $db->getOne("SELECT goods_id FROM " .$ecs->table('goods'). " WHERE cat_id=" . $goods['cat_id'] . " AND goods_id > " . $goods['goods_id'] . " AND is_on_sale = 1 AND is_alone_sale = 1 AND is_delete = 0 LIMIT 1");

        if (!empty($prev_gid))

        {

            $prev_good['url'] = build_uri('goods', array('gid' => $prev_gid), $goods['goods_name']);

            $smarty->assign('prev_good', $prev_good);//上一个商品

        }



        $next_gid = $db->getOne("SELECT max(goods_id) FROM " . $ecs->table('goods') . " WHERE cat_id=".$goods['cat_id']." AND goods_id < ".$goods['goods_id'] . " AND is_on_sale = 1 AND is_alone_sale = 1 AND is_delete = 0");

        if (!empty($next_gid))

        {

            $next_good['url'] = build_uri('goods', array('gid' => $next_gid), $goods['goods_name']);

            $smarty->assign('next_good', $next_good);//下一个商品

        }



        $position = assign_ur_here($goods['cat_id'], $goods['goods_name']);



        /* current position */

        $smarty->assign('page_title',          $position['title']);                    // 页面标题

        $smarty->assign('ur_here',             $position['ur_here']);                  // 当前位置

        $properties = get_goods_properties($goods_id);  // 获得商品的规格和属性
        $smarty->assign('properties',          $properties['pro']);                              // 商品属性

		$sql = "SELECT goods_attr_id, attr_value FROM " . $GLOBALS['ecs']->table('goods_attr') . " WHERE goods_id = '$goods_id'";
		$results_goods_pro = $GLOBALS['db']->getAll($sql);
		$return_arr = array();
		foreach ($results_goods_pro as $value_gbee)
		{
			$return_arr[$value_gbee['goods_attr_id']] = $value_gbee['attr_value'];
		}
		$prod_options_arr=array();
		
		$prod_exist_arr = array();
		$sql_prod  = "select goods_attr from ". $GLOBALS['ecs']->table('products') ." where product_number>0 and goods_id='$goods_id' order by goods_attr";
		$res_prod = $db->query($sql_prod);
		while ($row_prod = $GLOBALS['db']->fetchRow($res_prod))
		{
			$prod_exist_arr[] = "|". $row_prod['goods_attr'] ."|";			
		}
		$GLOBALS['smarty']->assign('prod_exist_arr', $prod_exist_arr);

		$selected_first = array();

		foreach ($properties['spe'] AS $skey_gbee=>$sval_gbee)
		{
			$hahaha_zhyh = 0;
			$sskey_goods_pro = '-1';
			foreach ($sval_gbee['values'] AS $sskey_gbee=>$ssval_gbee)
			{				
				if ( is_exist_prod($selected_first, $ssval_gbee['id'], $prod_exist_arr))
				{ 
					$hahaha_zhyh = $hahaha_zhyh ? $hahaha_zhyh : $ssval_gbee['id'];
					$sskey_goods_pro = ($sskey_goods_pro != '-1') ? $sskey_goods_pro : $sskey_gbee;
				}
				else
				{
					$properties['spe'][$skey_gbee]['values'][$sskey_gbee]['disabled'] = "disabled";
				}

			}
			if ($hahaha_zhyh)
			{
				$selected_first[$skey_gbee] =  $hahaha_zhyh;
			}
			if ($sskey_goods_pro!='-1')
			{
				$properties['spe'][$skey_gbee]['values'][$sskey_goods_pro]['selected_key_gbee'] = "1";
			}
		}
		$smarty->assign('is_goods_page', 1);


        $smarty->assign('specification',       $properties['spe']);                              // 商品规格
        $smarty->assign('attribute_linked',    get_same_attribute_goods($properties));           // 相同属性的关联商品
        $smarty->assign('related_goods',       $linked_goods);                                   // 关联商品
        $smarty->assign('goods_article_list',  get_linked_articles($goods_id));                  // 关联文章
        $smarty->assign('fittings',            get_goods_fittings(array($goods_id)));                   // 配件
        $smarty->assign('rank_prices',         get_user_rank_prices($goods_id, $shop_price)); 


		$rank_prices=get_user_rank_prices($goods_id, $shop_price);

		$user_prices="";

		foreach($rank_prices as $k=>$v){

			

			if($_SESSION['user_rank']==$k){

				$user_prices=$v;

			}

		}



		$smarty->assign('user_prices',            $user_prices); 


		


			$is_collect=0;

			$user_id=$_SESSION['user_id'];

			$sql = "SELECT * FROM " .$GLOBALS['ecs']->table('collect_goods'). " WHERE user_id = '$user_id' and goods_id='$goods_id'";

			$is_collect = $GLOBALS['db']->getRow($sql);

			

		if(!empty($is_collect))	{

			$smarty->assign('is_collect', 1 );

		}else{

			$smarty->assign('is_collect', 0 );

		}		


		// 会员等级价格

        $smarty->assign('pictures',            get_goods_gallery($goods_id));                    // 商品相册

        $smarty->assign('bought_goods',        get_also_bought($goods_id));                      // 购买了该商品的用户还购买了哪些商品

        $smarty->assign('goods_rank',          get_goods_rank($goods_id));                       // 商品的销售排名

		$smarty->assign('hot_goods',       get_recommend_goods('hot'));

        //获取tag

        $tag_array = get_tags($goods_id);

        $smarty->assign('tags',                $tag_array);                                       // 商品的标记



        //获取关联礼包

        $package_goods_list = get_package_goods_list($goods['goods_id']);

        $smarty->assign('package_goods_list',$package_goods_list);    // 获取关联礼包



        assign_dynamic('goods');

        $volume_price_list = get_volume_price_list($goods['goods_id'], '1');

        $smarty->assign('volume_price_list',$volume_price_list);    // 商品优惠价格区间

    }

}



/* 记录浏览历史 */

if (!empty($_COOKIE['ECS']['history']))

{

    $history = explode(',', $_COOKIE['ECS']['history']);



    array_unshift($history, $goods_id);

    $history = array_unique($history);



    while (count($history) > $_CFG['history_number'])

    {

        array_pop($history);

    }



    setcookie('ECS[history]', implode(',', $history), gmtime() + 3600 * 24 * 30);

}

else

{

    setcookie('ECS[history]', $goods_id, gmtime() + 3600 * 24 * 30);

}





/* 更新点击次数 */

$db->query('UPDATE ' . $ecs->table('goods') . " SET click_count = click_count + 1 WHERE goods_id = '$_REQUEST[id]'");






		

		

		$userid=$_SESSION['user_id'];

		if(!empty($userid)){	
			$url="http://".$_SERVER['HTTP_HOST']."/mobile/goods.php?id=".$goods_id."&u=".$userid;
			//20141204新增分享返积分
			$dourl="http://".$_SERVER['HTTP_HOST']."/mobile/re_url.php?user_id=".$userid;
		}else{

			$url="";

			//20141204新增分享返积分

			$dourl="";

		}

		require_once "wxjs/jssdk.php";

		$ret = $db->getRow("SELECT  *  FROM ". $GLOBALS['ecs']->table('weixin_config'));

		$jssdk = new JSSDK($appid=$ret['appid'], $ret['appsecret']);

		$signPackage = $jssdk->GetSignPackage();

		$smarty->assign('signPackage',  $signPackage);

		$smarty->assign('userid',  $userid);

		$smarty->assign('share_info',  $share_info);	

		$smarty->assign('dourl',  $dourl);		

		$smarty->assign('url',  $url);



		$is_wechat=is_wechat_browser();
        $useryes = $db->getOne("SELECT user_id FROM ".$ecs->table('users')." WHERE user_id=".$_SESSION['user_id']." AND wxid is not null and wxch_bd ='ok'");
		$weixin_url = $db->getOne("SELECT cfg_value  FROM ". $GLOBALS['ecs']->table('weixin_cfg') ." WHERE `cfg_name` = 'weixin_url'");
		$scene_id = $_GET['u'];
		if(empty($useryes) && $is_wechat!==false){//判断如果没有关注并且是微信场景


			if(!empty($scene_id)){
				$qr_path = $db->getOne("SELECT `qr_path` FROM ". $GLOBALS['ecs']->table('weixin_qr') ." WHERE `scene_id`='$scene_id'");
				$local_file=fopen($qr_path,'r');
				if(false !==$local_file){
					$qrcodeurl="http://".$_SERVER['HTTP_HOST']."/wechat/egg/index1.php?scene_id=".$scene_id;
					$smarty->assign('qrcodeurl',  $qrcodeurl); 
					fclose($local_file);
				}else{
					$smarty->assign('qrcodeurl',  $weixin_url);
				}
			}else{
					$smarty->assign('qrcodeurl',  $weixin_url); 
			}


			//$smarty->assign('qrcodeurl',  $weixin_url);
		}elseif(empty($useryes) && $is_wechat==false){//判断如果没有关注并且不是微信场景
			$smarty->assign('qrcodeurl',  '');
		}

		


$smarty->assign('now_time',  gmtime());           // 当前系统时间

$smarty->display('goods.dwt',      $cache_id);



/*------------------------------------------------------ */

//-- PRIVATE FUNCTION

/*------------------------------------------------------ */



/**

 * 获得指定商品的关联商品

 *

 * @access  public

 * @param   integer     $goods_id

 * @return  array

 */

function get_linked_goods($goods_id)

{

    $sql = 'SELECT g.goods_id, g.goods_name, g.goods_thumb, g.goods_img, g.shop_price AS org_price, ' .

                "IFNULL(mp.user_price, g.shop_price * '$_SESSION[discount]') AS shop_price, ".

                'g.market_price, g.promote_price, g.promote_start_date, g.promote_end_date,g.bb_chicun ' .

            'FROM ' . $GLOBALS['ecs']->table('link_goods') . ' lg ' .

            'LEFT JOIN ' . $GLOBALS['ecs']->table('goods') . ' AS g ON g.goods_id = lg.link_goods_id ' .

            "LEFT JOIN " . $GLOBALS['ecs']->table('member_price') . " AS mp ".

                    "ON mp.goods_id = g.goods_id AND mp.user_rank = '$_SESSION[user_rank]' ".

            "WHERE lg.goods_id = '$goods_id' AND g.is_on_sale = 1 AND g.is_alone_sale = 1 AND g.is_delete = 0 ".

            "LIMIT " . $GLOBALS['_CFG']['related_goods_number'];

    $res = $GLOBALS['db']->query($sql);



    $arr = array();

    while ($row = $GLOBALS['db']->fetchRow($res))

    {

        $arr[$row['goods_id']]['goods_id']     = $row['goods_id'];

        $arr[$row['goods_id']]['goods_name']   = $row['goods_name'];

        $arr[$row['goods_id']]['short_name']   = $GLOBALS['_CFG']['goods_name_length'] > 0 ?

            sub_str($row['goods_name'], $GLOBALS['_CFG']['goods_name_length']) : $row['goods_name'];

        $arr[$row['goods_id']]['goods_thumb']  = get_image_path($row['goods_id'], $row['goods_thumb'], true);

        $arr[$row['goods_id']]['goods_img']    = get_image_path($row['goods_id'], $row['goods_img']);

        $arr[$row['goods_id']]['market_price'] = price_format($row['market_price']);

        $arr[$row['goods_id']]['shop_price']   = price_format($row['shop_price']);

        $arr[$row['goods_id']]['bb_chicun']    = $row['bb_chicun'];

        $arr[$row['goods_id']]['url']          = build_uri('goods', array('gid'=>$row['goods_id']), $row['goods_name']);



        if ($row['promote_price'] > 0)

        {

            $arr[$row['goods_id']]['promote_price'] = bargain_price($row['promote_price'], $row['promote_start_date'], $row['promote_end_date']);

            $arr[$row['goods_id']]['formated_promote_price'] = price_format($arr[$row['goods_id']]['promote_price']);

        }

        else

        {

            $arr[$row['goods_id']]['promote_price'] = 0;

        }

    }



    return $arr;

}



/**

 * 获得指定商品的关联文章

 *

 * @access  public

 * @param   integer     $goods_id

 * @return  void

 */

function get_linked_articles($goods_id)

{

    $sql = 'SELECT a.article_id, a.title, a.file_url, a.open_type, a.add_time ' .

            'FROM ' . $GLOBALS['ecs']->table('goods_article') . ' AS g, ' .

                $GLOBALS['ecs']->table('article') . ' AS a ' .

            "WHERE g.article_id = a.article_id AND g.goods_id = '$goods_id' AND a.is_open = 1 " .

            'ORDER BY a.add_time DESC';

    $res = $GLOBALS['db']->query($sql);



    $arr = array();

    while ($row = $GLOBALS['db']->fetchRow($res))

    {

        $row['url']         = $row['open_type'] != 1 ?

            build_uri('article', array('aid'=>$row['article_id']), $row['title']) : trim($row['file_url']);

        $row['add_time']    = local_date($GLOBALS['_CFG']['date_format'], $row['add_time']);

        $row['short_title'] = $GLOBALS['_CFG']['article_title_length'] > 0 ?

            sub_str($row['title'], $GLOBALS['_CFG']['article_title_length']) : $row['title'];



        $arr[] = $row;

    }



    return $arr;

}



/**

 * 获得指定商品的各会员等级对应的价格

 *

 * @access  public

 * @param   integer     $goods_id

 * @return  array

 */

function get_user_rank_prices($goods_id, $shop_price)

{

    $sql = "SELECT rank_id, IFNULL(mp.user_price, r.discount * $shop_price / 100) AS price, r.rank_name, r.discount " .

            'FROM ' . $GLOBALS['ecs']->table('user_rank') . ' AS r ' .

            'LEFT JOIN ' . $GLOBALS['ecs']->table('member_price') . " AS mp ".

                "ON mp.goods_id = '$goods_id' AND mp.user_rank = r.rank_id " .

            "WHERE r.show_price = 1 OR r.rank_id = '$_SESSION[user_rank]'";

    $res = $GLOBALS['db']->query($sql);



    $arr = array();

    while ($row = $GLOBALS['db']->fetchRow($res))

    {



        $arr[$row['rank_id']] = array(

                        'rank_name' => htmlspecialchars($row['rank_name']),

                        'price'     => price_format($row['price']));

    }



    return $arr;

}



/**

 * 获得购买过该商品的人还买过的商品

 *

 * @access  public

 * @param   integer     $goods_id

 * @return  array

 */

function get_also_bought($goods_id)

{

    $sql = 'SELECT COUNT(b.goods_id ) AS num, g.goods_id, g.goods_name, g.goods_thumb, g.goods_img, g.shop_price, g.promote_price, g.promote_start_date, g.promote_end_date ' .

            'FROM ' . $GLOBALS['ecs']->table('order_goods') . ' AS a ' .

            'LEFT JOIN ' . $GLOBALS['ecs']->table('order_goods') . ' AS b ON b.order_id = a.order_id ' .

            'LEFT JOIN ' . $GLOBALS['ecs']->table('goods') . ' AS g ON g.goods_id = b.goods_id ' .

            "WHERE a.goods_id = '$goods_id' AND b.goods_id <> '$goods_id' AND g.is_on_sale = 1 AND g.is_alone_sale = 1 AND g.is_delete = 0 " .

            'GROUP BY b.goods_id ' .

            'ORDER BY num DESC ' .

            'LIMIT ' . $GLOBALS['_CFG']['bought_goods'];

    $res = $GLOBALS['db']->query($sql);



    $key = 0;

    $arr = array();

    while ($row = $GLOBALS['db']->fetchRow($res))

    {

        $arr[$key]['goods_id']    = $row['goods_id'];

        $arr[$key]['goods_name']  = $row['goods_name'];

        $arr[$key]['short_name']  = $GLOBALS['_CFG']['goods_name_length'] > 0 ?

            sub_str($row['goods_name'], $GLOBALS['_CFG']['goods_name_length']) : $row['goods_name'];

        $arr[$key]['goods_thumb'] = get_image_path($row['goods_id'], $row['goods_thumb'], true);

        $arr[$key]['goods_img']   = get_image_path($row['goods_id'], $row['goods_img']);

        $arr[$key]['shop_price']  = price_format($row['shop_price']);

        $arr[$key]['url']         = build_uri('goods', array('gid'=>$row['goods_id']), $row['goods_name']);



        if ($row['promote_price'] > 0)

        {

            $arr[$key]['promote_price'] = bargain_price($row['promote_price'], $row['promote_start_date'], $row['promote_end_date']);

            $arr[$key]['formated_promote_price'] = price_format($arr[$key]['promote_price']);

        }

        else

        {

            $arr[$key]['promote_price'] = 0;

        }



        $key++;

    }



    return $arr;

}



/**

 * 获得指定商品的销售排名

 *

 * @access  public

 * @param   integer     $goods_id

 * @return  integer

 */

function get_goods_rank($goods_id)

{

    /* 统计时间段 */

    $period = intval($GLOBALS['_CFG']['top10_time']);

    if ($period == 1) // 一年

    {

        $ext = " AND o.add_time > '" . local_strtotime('-1 years') . "'";

    }

    elseif ($period == 2) // 半年

    {

        $ext = " AND o.add_time > '" . local_strtotime('-6 months') . "'";

    }

    elseif ($period == 3) // 三个月

    {

        $ext = " AND o.add_time > '" . local_strtotime('-3 months') . "'";

    }

    elseif ($period == 4) // 一个月

    {

        $ext = " AND o.add_time > '" . local_strtotime('-1 months') . "'";

    }

    else

    {

        $ext = '';

    }



    /* 查询该商品销量 */

    $sql = 'SELECT IFNULL(SUM(g.goods_number), 0) ' .

        'FROM ' . $GLOBALS['ecs']->table('order_info') . ' AS o, ' .

            $GLOBALS['ecs']->table('order_goods') . ' AS g ' .

        "WHERE o.order_id = g.order_id " .

        "AND o.order_status = '" . OS_CONFIRMED . "' " .

        "AND o.shipping_status " . db_create_in(array(SS_SHIPPED, SS_RECEIVED)) .

        " AND o.pay_status " . db_create_in(array(PS_PAYED, PS_PAYING)) .

        " AND g.goods_id = '$goods_id'" . $ext;

    $sales_count = $GLOBALS['db']->getOne($sql);



    if ($sales_count > 0)

    {

        /* 只有在商品销售量大于0时才去计算该商品的排行 */

        $sql = 'SELECT DISTINCT SUM(goods_number) AS num ' .

                'FROM ' . $GLOBALS['ecs']->table('order_info') . ' AS o, ' .

                    $GLOBALS['ecs']->table('order_goods') . ' AS g ' .

                "WHERE o.order_id = g.order_id " .

                "AND o.order_status = '" . OS_CONFIRMED . "' " .

                "AND o.shipping_status " . db_create_in(array(SS_SHIPPED, SS_RECEIVED)) .

                " AND o.pay_status " . db_create_in(array(PS_PAYED, PS_PAYING)) . $ext .

                " GROUP BY g.goods_id HAVING num > $sales_count";

        $res = $GLOBALS['db']->query($sql);



        $rank = $GLOBALS['db']->num_rows($res) + 1;



        if ($rank > 10)

        {

            $rank = 0;

        }

    }

    else

    {

        $rank = 0;

    }



    return $rank;

}



/**

 * 获得商品选定的属性的附加总价格

 *

 * @param   integer     $goods_id

 * @param   array       $attr

 *

 * @return  void

 */

function get_attr_amount($goods_id, $attr)

{

    $sql = "SELECT SUM(attr_price) FROM " . $GLOBALS['ecs']->table('goods_attr') .

        " WHERE goods_id='$goods_id' AND " . db_create_in($attr, 'goods_attr_id');



    return $GLOBALS['db']->getOne($sql);

}



/**

 * 取得跟商品关联的礼包列表

 *

 * @param   string  $goods_id    商品编号

 *

 * @return  礼包列表

 */

function get_package_goods_list($goods_id)

{

    $now = gmtime();

    $sql = "SELECT pg.goods_id, ga.act_id, ga.act_name, ga.act_desc, ga.goods_name, ga.start_time,

                   ga.end_time, ga.is_finished, ga.ext_info

            FROM " . $GLOBALS['ecs']->table('goods_activity') . " AS ga, " . $GLOBALS['ecs']->table('package_goods') . " AS pg

            WHERE pg.package_id = ga.act_id

            AND ga.start_time <= '" . $now . "'

            AND ga.end_time >= '" . $now . "'

            AND pg.goods_id = " . $goods_id . "

            GROUP BY ga.act_id

            ORDER BY ga.act_id ";

    $res = $GLOBALS['db']->getAll($sql);



    foreach ($res as $tempkey => $value)

    {

        $subtotal = 0;

        $row = unserialize($value['ext_info']);

        unset($value['ext_info']);

        if ($row)

        {

            foreach ($row as $key=>$val)

            {

                $res[$tempkey][$key] = $val;

            }

        }



        $sql = "SELECT pg.package_id, pg.goods_id, pg.goods_number, pg.admin_id, p.goods_attr, g.goods_sn, g.goods_name, g.market_price, g.goods_thumb, IFNULL(mp.user_price, g.shop_price * '$_SESSION[discount]') AS rank_price

                FROM " . $GLOBALS['ecs']->table('package_goods') . " AS pg

                    LEFT JOIN ". $GLOBALS['ecs']->table('goods') . " AS g

                        ON g.goods_id = pg.goods_id

                    LEFT JOIN ". $GLOBALS['ecs']->table('products') . " AS p

                        ON p.product_id = pg.product_id

                    LEFT JOIN " . $GLOBALS['ecs']->table('member_price') . " AS mp

                        ON mp.goods_id = g.goods_id AND mp.user_rank = '$_SESSION[user_rank]'

                WHERE pg.package_id = " . $value['act_id']. "

                ORDER BY pg.package_id, pg.goods_id";



        $goods_res = $GLOBALS['db']->getAll($sql);



        foreach($goods_res as $key => $val)

        {

            $goods_id_array[] = $val['goods_id'];

            $goods_res[$key]['goods_thumb']  = get_image_path($val['goods_id'], $val['goods_thumb'], true);

            $goods_res[$key]['market_price'] = price_format($val['market_price']);

            $goods_res[$key]['rank_price']   = price_format($val['rank_price']);

            $subtotal += $val['rank_price'] * $val['goods_number'];

        }



        /* 取商品属性 */

        $sql = "SELECT ga.goods_attr_id, ga.attr_value

                FROM " .$GLOBALS['ecs']->table('goods_attr'). " AS ga, " .$GLOBALS['ecs']->table('attribute'). " AS a

                WHERE a.attr_id = ga.attr_id

                AND a.attr_type = 1

                AND " . db_create_in($goods_id_array, 'goods_id');

        $result_goods_attr = $GLOBALS['db']->getAll($sql);



        $_goods_attr = array();

        foreach ($result_goods_attr as $value)

        {

            $_goods_attr[$value['goods_attr_id']] = $value['attr_value'];

        }



        /* 处理货品 */

        $format = '[%s]';

        foreach($goods_res as $key => $val)

        {

            if ($val['goods_attr'] != '')

            {

                $goods_attr_array = explode('|', $val['goods_attr']);



                $goods_attr = array();

                foreach ($goods_attr_array as $_attr)

                {

                    $goods_attr[] = $_goods_attr[$_attr];

                }



                $goods_res[$key]['goods_attr_str'] = sprintf($format, implode(',', $goods_attr));

            }

        }



        $res[$tempkey]['goods_list']    = $goods_res;

        $res[$tempkey]['subtotal']      = price_format($subtotal);

        $res[$tempkey]['saving']        = price_format(($subtotal - $res[$tempkey]['package_price']));

        $res[$tempkey]['package_price'] = price_format($res[$tempkey]['package_price']);

    }



    return $res;

}



// 获取商品的销量 by wang

function get_goods_sales_count($goods_id)

{

    /* 统计时间段 */

    //$period = intval($GLOBALS['_CFG']['top10_time']);

    $period = 4; //近一个月(30天)

    if ($period == 1) { // 一年

        $ext = " AND o.add_time > '" . local_strtotime('-1 years') . "'";

    } elseif ($period == 2) { // 半年

        $ext = " AND o.add_time > '" . local_strtotime('-6 months') . "'";

    } elseif ($period == 3) { // 三个月

        $ext = " AND o.add_time > '" . local_strtotime('-3 months') . "'";

    } elseif ($period == 4) { // 一个月

        $ext = " AND o.add_time > '" . local_strtotime('-1 months') . "'";

    } else {

        $ext = '';

    }



    /* 查询该商品销量 */

    $sql = 'SELECT IFNULL(SUM(g.goods_number), 0) ' .

        'FROM ' . $GLOBALS['ecs']->table('order_info') . ' AS o, ' .

            $GLOBALS['ecs']->table('order_goods') . ' AS g ' .

        "WHERE o.order_id = g.order_id " .

        "AND o.order_status " . db_create_in(array(OS_CONFIRMED, OS_SPLITED)) .

        "AND o.shipping_status " . db_create_in(array(SS_SHIPPED, SS_RECEIVED)) .

        " AND o.pay_status " . db_create_in(array(PS_PAYED, PS_PAYING)) .

        " AND g.goods_id = '$goods_id'" . $ext;

    $sales_count = $GLOBALS['db']->getOne($sql);



    return intval($sales_count);

}



// 统计商品的评论数

function get_comment_count($goods_id){

    $sql = 'SELECT count(*) FROM '.$GLOBALS['ecs']->table('comment').' where status=1 and id_value='.$goods_id;

    $res = $GLOBALS['db']->getOne($sql);

    return intval($res);

}

/**
 * 获取相关属性的库存
 * @param int $goodid 商品id
 * @param string(array) $attrids 商品属性id的数组或者逗号分开的字符串
 */
function get_product_attr_num($goodid,$attrids=0){
	$ret = array();
	
	/* 判断商品是否参与预售活动,如果参与则获取商品的(预售库存-已售出的数量) */
	if(!empty($_REQUEST['pre_sale_id']))
	{
		$pre_sale = pre_sale_info($_REQUEST['pre_sale_id'], $goods_num);
		//如果预售为空或者预售库存小于等于0则认为不限购
		if(!empty($pre_sale) && $pre_sale['restrict_amount'] > 0){
			
			$product_num = $pre_sale['restrict_amount'] - $pre_sale['valid_goods'];
			
			return $product_num;
		}
	}
	
	if(empty($attrids)){
		$ginfo = get_goods_attr_value($goodid,'goods_number');
		return $ginfo['goods_number'];
	}
	if(!is_array($attrids)){
		$attrids = explode(',',$attrids);
	}

	$goods_attr_array = sort_goods_attr_id_array($attrids);

    if(isset($goods_attr_array['sort']))
    {
        $goods_attr = implode('|', $goods_attr_array['sort']);

		$sql = "SELECT product_id, goods_id, goods_attr, product_sn, product_number
                FROM " . $GLOBALS['ecs']->table('products') . " 
                WHERE goods_id = $goodid AND goods_attr = '".$goods_attr."' LIMIT 0, 1";
		$row = $GLOBALS['db']->getRow($sql);
		
		return $row['product_number'];
    }
}

/**
 * 获取商品的相关信息
 * @param int $goodsid 商品id
 * @param string $name  要获取商品的属性名称,多个,就用逗号分隔
 */
function get_goods_attr_value($goodsid,$name='goods_sn,goods_name')
{
	$sql = "select ".$name." from ". $GLOBALS['ecs']->table('goods') ." where goods_id=".$goodsid;
	$row = $GLOBALS['db']->getRow($sql);
	return $row;
}

function get_mark_price($goods_id)
{
	$sql = "SELECT market_price".
           " FROM " .$GLOBALS['ecs']->table('goods').
           " WHERE goods_id = '$goods_id'";
	$res = $GLOBALS['db']->getRow($sql);
	return $res['market_price'];
}

?>