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/ |
<?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']; } ?>