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/include/
Upload File :
Current Directory [ Writeable ] Root Directory [ Writeable ]


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







/**



 * ECSHOP 商品相关函数库



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



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



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



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



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



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



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



 * $Author: liubo $



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



*/







if (!defined('IN_ECTOUCH'))



{



    die('Hacking attempt');



}







/**



 * 商品推荐usort用自定义排序行数



 */



function goods_sort($goods_a, $goods_b)



{



    if ($goods_a['sort_order'] == $goods_b['sort_order']) {



        return 0;



    }



    return ($goods_a['sort_order'] < $goods_b['sort_order']) ? -1 : 1;







}







/**



 * 获得指定分类同级的所有分类以及该分类下的子分类



 *



 * @access  public



 * @param   integer     $cat_id     分类编号



 * @return  array



 */



function get_categories_tree($cat_id = 0)



{



    if ($cat_id > 0)



    {



        $sql = 'SELECT parent_id FROM ' . $GLOBALS['ecs']->table('category') . " WHERE cat_id = '$cat_id'";



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



    }



    else



    {



        $parent_id = 0;



    }







    /*



     判断当前分类中全是是否是底级分类,



     如果是取出底级分类上级分类,



     如果不是取当前分类及其下的子分类



    */



    $sql = 'SELECT count(*) FROM ' . $GLOBALS['ecs']->table('category') . " WHERE parent_id = '$parent_id' AND is_show = 1 ";



    if ($GLOBALS['db']->getOne($sql) || $parent_id == 0)



    {



        /* 获取当前分类及其子分类 */



        $sql = 'SELECT cat_id,cat_name ,parent_id, is_show, cat_ico, is_hot_cat ' .



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



                "WHERE parent_id = '$parent_id' AND is_show = 1 ORDER BY sort_order ASC, cat_id ASC";







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







        foreach ($res AS $row)



        {



            if ($row['is_show'])



            {



                $cat_arr[$row['cat_id']]['id']   = $row['cat_id'];



                $cat_arr[$row['cat_id']]['name'] = $row['cat_name'];



                $cat_arr[$row['cat_id']]['url']  = build_uri('category', array('cid' => $row['cat_id']), $row['cat_name']);



                $three_arr[$row['cat_id']]['ico'] = empty($row['cat_ico']) ? DATA_DIR.'/static/images/no-picture.png' : '../'.DATA_DIR.'/cat_ico/'.$row['cat_ico'];
				
				$cat_arr[$row['cat_id']]['is_hot_cat'] = $row['is_hot_cat'];



                if (isset($row['cat_id']) != NULL)



                {



                    $cat_arr[$row['cat_id']]['cat_id'] = get_child_tree($row['cat_id']);



                }



            }



        }



    }



    if(isset($cat_arr))



    {



        return $cat_arr;



    }



}







function get_child_tree($tree_id = 0)



{



    $three_arr = array();



    $sql = 'SELECT count(*) FROM ' . $GLOBALS['ecs']->table('category') . " WHERE parent_id = '$tree_id' AND is_show = 1 ";



    if ($GLOBALS['db']->getOne($sql) || $tree_id == 0)



    {



        $child_sql = 'SELECT cat_id, cat_name, parent_id, is_show, cat_ico, is_hot_cat ' .



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



                "WHERE parent_id = '$tree_id' AND is_show = 1 ORDER BY sort_order ASC, cat_id ASC";



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



        foreach ($res AS $row)



        {



            if ($row['is_show'])







               $three_arr[$row['cat_id']]['id']   = $row['cat_id'];



               $three_arr[$row['cat_id']]['name'] = $row['cat_name'];



               $three_arr[$row['cat_id']]['url']  = build_uri('category', array('cid' => $row['cat_id']), $row['cat_name']);



                $three_arr[$row['cat_id']]['ico'] = empty($row['cat_ico']) ? DATA_DIR.'/static/images/no-picture.png' : '../'.DATA_DIR.'/cat_ico/'.$row['cat_ico'];
				
				
				$three_arr[$row['cat_id']]['is_hot_cat']   = $row['is_hot_cat'];


               if (isset($row['cat_id']) != NULL)



                   {



                       $three_arr[$row['cat_id']]['cat_id'] = get_child_tree($row['cat_id']);







            }



        }



    }



    return $three_arr;



}







/**



 * 调用当前分类的销售排行榜



 *



 * @access  public



 * @param   string  $cats   查询的分类



 * @return  array



 */



function get_top10($cats = '')



{



    $cats = get_children($cats);



    $where = !empty($cats) ? "AND ($cats OR " . get_extension_goods($cats) . ") " : '';







    /* 排行统计的时间 */



    switch ($GLOBALS['_CFG']['top10_time'])



    {



        case 1: // 一年



            $top10_time = "AND o.order_sn >= '" . date('Ymd', gmtime() - 365 * 86400) . "'";



        break;



        case 2: // 半年



            $top10_time = "AND o.order_sn >= '" . date('Ymd', gmtime() - 180 * 86400) . "'";



        break;



        case 3: // 三个月



            $top10_time = "AND o.order_sn >= '" . date('Ymd', gmtime() - 90 * 86400) . "'";



        break;



        case 4: // 一个月



            $top10_time = "AND o.order_sn >= '" . date('Ymd', gmtime() - 30 * 86400) . "'";



        break;



        default:



            $top10_time = '';



    }







    $sql = 'SELECT g.goods_id, g.goods_name, g.shop_price, g.goods_thumb, SUM(og.goods_number) as goods_number ' .



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



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



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



           "WHERE g.is_on_sale = 1 AND g.is_alone_sale = 1 AND g.is_delete = 0 $where $top10_time " ;



    //判断是否启用库存,库存数量是否大于0



    if ($GLOBALS['_CFG']['use_storage'] == 1)



    {



        $sql .= " AND g.goods_number > 0 ";



    }



    $sql .= ' AND og.order_id = o.order_id AND og.goods_id = g.goods_id ' .



           "AND (o.order_status = '" . OS_CONFIRMED .  "' OR o.order_status = '" . OS_SPLITED . "') " .



           "AND (o.pay_status = '" . PS_PAYED . "' OR o.pay_status = '" . PS_PAYING . "') " .



           "AND (o.shipping_status = '" . SS_SHIPPED . "' OR o.shipping_status = '" . SS_RECEIVED . "') " .



           'GROUP BY g.goods_id ORDER BY goods_number DESC, g.goods_id DESC LIMIT ' . $GLOBALS['_CFG']['top_number'];



           



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







    for ($i = 0, $count = count($arr); $i < $count; $i++)



    {



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



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



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



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



        $arr[$i]['price'] = price_format($arr[$i]['shop_price']);



    }







    return $arr;



}







/**



 * 获得推荐商品



 *



 * @access  public



 * @param   string      $type       推荐类型,可以是 best, new, hot



 * @return  array



 */



function get_recommend_goods($type = '', $cats = '')



{



    if (!in_array($type, array('best', 'new', 'hot')))



    {



        return array();



    }







    //取不同推荐对应的商品



    static $type_goods = array();



    if (empty($type_goods[$type]))



    {



        //初始化数据



        $type_goods['best'] = array();



        $type_goods['new'] = array();



        $type_goods['hot'] = array();



        $data = read_static_cache('recommend_goods');



        if ($data === false)



        {



            $sql = 'SELECT g.goods_id, g.is_best, g.is_new, g.is_hot, g.is_promote, b.brand_name,g.sort_order ' .



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



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



               ' WHERE g.is_on_sale = 1 AND g.is_alone_sale = 1 AND g.is_delete = 0 AND (g.is_best = 1 OR g.is_new =1 OR g.is_hot = 1)'.



               ' ORDER BY g.sort_order, g.last_update DESC';



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



            //定义推荐,最新,热门,促销商品



            $goods_data['best'] = array();



            $goods_data['new'] = array();



            $goods_data['hot'] = array();



            $goods_data['brand'] = array();



            if (!empty($goods_res))



            {



                foreach($goods_res as $data)



                {



                    if ($data['is_best'] == 1)



                    {



                        $goods_data['best'][] = array('goods_id' => $data['goods_id'], 'sort_order' => $data['sort_order']);



                    }



                    if ($data['is_new'] == 1)



                    {



                        $goods_data['new'][] = array('goods_id' => $data['goods_id'], 'sort_order' => $data['sort_order']);



                    }



                    if ($data['is_hot'] == 1)



                    {



                        $goods_data['hot'][] = array('goods_id' => $data['goods_id'], 'sort_order' => $data['sort_order']);



                    }



                    if ($data['brand_name'] != '')



                    {



                        $goods_data['brand'][$data['goods_id']] = $data['brand_name'];



                    }



                }



            }



            write_static_cache('recommend_goods', $goods_data);



        }



        else



        {



            $goods_data = $data;



        }







        $time = gmtime();



        $order_type = $GLOBALS['_CFG']['recommend_order'];







        //按推荐数量及排序取每一项推荐显示的商品 order_type可以根据后台设定进行各种条件显示



        static $type_array = array();



        $type2lib = array('best'=>'recommend_best', 'new'=>'recommend_new', 'hot'=>'recommend_hot');



        if (empty($type_array))



        {



            foreach($type2lib as $key => $data)



            {



                if (!empty($goods_data[$key]))



                {



                    $num = get_library_number($data);



                    $data_count = count($goods_data[$key]);



                    $num = $data_count > $num  ? $num : $data_count;



                    if ($order_type == 0)



                    {



                        //usort($goods_data[$key], 'goods_sort');



                        $rand_key = array_slice($goods_data[$key], 0, $num);



                        foreach($rand_key as $key_data)



                        {



                            $type_array[$key][] = $key_data['goods_id'];



                        }



                    }



                    else



                    {



                        $rand_key = array_rand($goods_data[$key], $num);



                        if ($num == 1)



                        {



                            $type_array[$key][] = $goods_data[$key][$rand_key]['goods_id'];



                        }



                        else



                        {



                            foreach($rand_key as $key_data)



                            {



                                $type_array[$key][] = $goods_data[$key][$key_data]['goods_id'];



                            }



                        }



                    }



                }



                else



                {



                    $type_array[$key] = array();



                }



            }



        }







        //取出所有符合条件的商品数据,并将结果存入对应的推荐类型数组中



        $sql = 'SELECT g.goods_id, g.goods_name, g.goods_name_style, g.market_price, g.shop_price AS org_price, g.promote_price, ' .



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



                "promote_start_date, promote_end_date, g.goods_brief, g.goods_thumb, g.goods_img, RAND() AS rnd " .



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



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



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



        $type_merge = array_merge($type_array['new'], $type_array['best'], $type_array['hot']);



        $type_merge = array_unique($type_merge);



        $sql .= ' WHERE g.goods_id ' . db_create_in($type_merge);



        $sql .= ' ORDER BY g.sort_order, g.last_update DESC';







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



        foreach ($result AS $idx => $row)



        {



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



            {



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



                $goods[$idx]['promote_price'] = $promote_price > 0 ? price_format($promote_price) : '';



            }



            else



            {



                $goods[$idx]['promote_price'] = '';



            }







            $goods[$idx]['id']           = $row['goods_id'];



            $goods[$idx]['name']         = $row['goods_name'];



            $goods[$idx]['brief']        = $row['goods_brief'];



            $goods[$idx]['brand_name']   = isset($goods_data['brand'][$row['goods_id']]) ? $goods_data['brand'][$row['goods_id']] : '';



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







            $goods[$idx]['short_name']   = $GLOBALS['_CFG']['goods_name_length'] > 0 ?



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



            $goods[$idx]['short_style_name']   = add_style($goods[$idx]['short_name'],$row['goods_name_style']);



            $goods[$idx]['market_price'] = price_format($row['market_price']);



            $goods[$idx]['shop_price']   = price_format($row['shop_price']);



            $goods[$idx]['thumb']        = get_image_path($row['goods_id'], $row['goods_thumb'], true);



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



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



            if (in_array($row['goods_id'], $type_array['best']))



            {



                $type_goods['best'][] = $goods[$idx];



            }



            if (in_array($row['goods_id'], $type_array['new']))



            {



                $type_goods['new'][] = $goods[$idx];



            }



            if (in_array($row['goods_id'], $type_array['hot']))



            {



                $type_goods['hot'][] = $goods[$idx];



            }



        }



    }



    return $type_goods[$type];



}







/**



 * 获得促销商品



 *



 * @access  public



 * @return  array



 */



function get_promote_goods($cats = '')



{



    $time = gmtime();



    $order_type = $GLOBALS['_CFG']['recommend_order'];







    /* 取得促销lbi的数量限制 */



    $num = get_library_number("recommend_promotion");



    $sql = 'SELECT g.goods_id, g.goods_name, g.goods_name_style, g.market_price, g.shop_price AS org_price, g.promote_price, ' .



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



                "promote_start_date, promote_end_date, g.goods_brief, g.goods_thumb, goods_img, b.brand_name, " .



                "g.is_best, g.is_new, g.is_hot, g.is_promote, RAND() AS rnd " .



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



            'LEFT JOIN ' . $GLOBALS['ecs']->table('brand') . ' AS b ON b.brand_id = g.brand_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 g.is_on_sale = 1 AND g.is_alone_sale = 1 AND g.is_delete = 0 ' .



            " AND g.is_promote = 1 AND promote_start_date <= '$time' AND promote_end_date >= '$time' ";



    $sql .= $order_type == 0 ? ' ORDER BY g.sort_order, g.last_update DESC' : ' ORDER BY rnd';



    $sql .= " LIMIT $num ";



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







    $goods = array();



    foreach ($result AS $idx => $row)



    {



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



        {



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



            $goods[$idx]['promote_price'] = $promote_price > 0 ? price_format($promote_price) : '';



        }



        else



        {



            $goods[$idx]['promote_price'] = '';



        }







        $goods[$idx]['id']           = $row['goods_id'];



        $goods[$idx]['name']         = $row['goods_name'];



        $goods[$idx]['brief']        = $row['goods_brief'];



        $goods[$idx]['brand_name']   = $row['brand_name'];

        $goods[$idx]['promote_end_date']   = $row['promote_end_date'];



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



        $goods[$idx]['short_name']   = $GLOBALS['_CFG']['goods_name_length'] > 0 ? sub_str($row['goods_name'], $GLOBALS['_CFG']['goods_name_length']) : $row['goods_name'];



        $goods[$idx]['short_style_name']   = add_style($goods[$idx]['short_name'],$row['goods_name_style']);



        $goods[$idx]['market_price'] = price_format($row['market_price']);



        $goods[$idx]['shop_price']   = price_format($row['shop_price']);



        $goods[$idx]['thumb']        = get_image_path($row['goods_id'], $row['goods_thumb'], true);



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



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



    }







    return $goods;



}







/**



 * 获得指定分类下的推荐商品



 *



 * @access  public



 * @param   string      $type       推荐类型,可以是 best, new, hot, promote



 * @param   string      $cats       分类的ID



 * @param   integer     $brand      品牌的ID



 * @param   integer     $min        商品价格下限



 * @param   integer     $max        商品价格上限



 * @param   string      $ext        商品扩展查询



 * @return  array



 */



function get_category_recommend_goods($type = '', $cats = '', $brand = 0, $min =0,  $max = 0, $ext='')



{



    $brand_where = ($brand > 0) ? " AND g.brand_id = '$brand'" : '';







    $price_where = ($min > 0) ? " AND g.shop_price >= $min " : '';



    $price_where .= ($max > 0) ? " AND g.shop_price <= $max " : '';







    $sql =  'SELECT g.goods_id, g.goods_name, g.goods_name_style, g.market_price, g.shop_price AS org_price, g.promote_price, ' .



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



                'promote_start_date, promote_end_date, g.goods_brief, g.goods_thumb, goods_img, b.brand_name ' .



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



            'LEFT JOIN ' . $GLOBALS['ecs']->table('brand') . ' AS b ON b.brand_id = g.brand_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 g.is_on_sale = 1 AND g.is_alone_sale = 1 AND g.is_delete = 0 ' . $brand_where . $price_where . $ext;



    $num = 0;



    $type2lib = array('best'=>'recommend_best', 'new'=>'recommend_new', 'hot'=>'recommend_hot', 'promote'=>'recommend_promotion');



    $num = get_library_number($type2lib[$type]);







    switch ($type)



    {



        case 'best':



            $sql .= ' AND is_best = 1';



            break;



        case 'new':



            $sql .= ' AND is_new = 1';



            break;



        case 'hot':



            $sql .= ' AND is_hot = 1';



            break;



        case 'promote':



            $time = gmtime();



            $sql .= " AND is_promote = 1 AND promote_start_date <= '$time' AND promote_end_date >= '$time'";



            break;



    }







    if (!empty($cats))



    {



        $sql .= " AND (" . $cats . " OR " . get_extension_goods($cats) .")";



    }







    $order_type = $GLOBALS['_CFG']['recommend_order'];



    $sql .= ($order_type == 0) ? ' ORDER BY g.sort_order, g.last_update DESC' : ' ORDER BY RAND()';



    $res = $GLOBALS['db']->selectLimit($sql, $num);







    $idx = 0;



    $goods = array();



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



    {



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



        {



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



            $goods[$idx]['promote_price'] = $promote_price > 0 ? price_format($promote_price) : '';



        }



        else



        {



            $goods[$idx]['promote_price'] = '';



        }







        $goods[$idx]['id']           = $row['goods_id'];



        $goods[$idx]['name']         = $row['goods_name'];



        $goods[$idx]['brief']        = $row['goods_brief'];



        $goods[$idx]['brand_name']   = $row['brand_name'];



        $goods[$idx]['short_name']   = $GLOBALS['_CFG']['goods_name_length'] > 0 ?



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



        $goods[$idx]['market_price'] = price_format($row['market_price']);



        $goods[$idx]['shop_price']   = price_format($row['shop_price']);



        $goods[$idx]['thumb']        = get_image_path($row['goods_id'], $row['goods_thumb'], true);



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



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







        $goods[$idx]['short_style_name'] = add_style($goods[$idx]['short_name'], $row['goods_name_style']);



        $idx++;



    }







    return $goods;



}







/**



 * 获得商品的详细信息



 *



 * @access  public



 * @param   integer     $goods_id



 * @return  void



 */



function get_goods_info($goods_id)



{



    $time = gmtime();



    $sql = 'SELECT g.*, c.measure_unit, b.brand_id, b.brand_name AS goods_brand, m.type_money AS bonus_money, ' .



                'IFNULL(AVG(r.comment_rank), 0) AS comment_rank, ' .



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



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



            'LEFT JOIN ' . $GLOBALS['ecs']->table('category') . ' AS c ON g.cat_id = c.cat_id ' .



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



            'LEFT JOIN ' . $GLOBALS['ecs']->table('comment') . ' AS r '.



                'ON r.id_value = g.goods_id AND comment_type = 0 AND r.parent_id = 0 AND r.status = 1 ' .



            'LEFT JOIN ' . $GLOBALS['ecs']->table('bonus_type') . ' AS m ' .



                "ON g.bonus_type_id = m.type_id AND m.send_start_date <= '$time' AND m.send_end_date >= '$time'" .



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



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



            "WHERE g.goods_id = '$goods_id' AND g.is_delete = 0 " .



            "GROUP BY g.goods_id";



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



    if ($row !== false)



    {



        /* 用户评论级别取整 */



        $row['comment_rank']  = ceil($row['comment_rank']) == 0 ? 5 : ceil($row['comment_rank']);







        /* 获得商品的销售价格 */



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



        $row['shop_price_formated'] = price_format($row['shop_price']);

        $row['sale_price_formated'] = price_format($row['sale_price']);/* 限时秒杀的销售价格 */





        /* 修正促销价格 */



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



        {



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



        }



        else



        {



            $promote_price = 0;



        }







        /* 处理商品水印图片 */



        $watermark_img = '';







        if ($promote_price != 0)



        {



            $watermark_img = "watermark_promote";



        }



        elseif ($row['is_new'] != 0)



        {



            $watermark_img = "watermark_new";



        }



        elseif ($row['is_best'] != 0)



        {



            $watermark_img = "watermark_best";



        }



        elseif ($row['is_hot'] != 0)



        {



            $watermark_img = 'watermark_hot';



        }







        if ($watermark_img != '')



        {



            $row['watermark_img'] =  $watermark_img;



        }







        $row['promote_price_org'] =  $promote_price;



        $row['promote_price'] =  price_format($promote_price);







        /* 修正重量显示 */



        $row['goods_weight']  = (intval($row['goods_weight']) > 0) ?



            $row['goods_weight'] . $GLOBALS['_LANG']['kilogram'] :



            ($row['goods_weight'] * 1000) . $GLOBALS['_LANG']['gram'];







        /* 修正上架时间显示 */



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







        /* 促销时间倒计时 */



        $time = gmtime();



        if ($time >= $row['promote_start_date'] && $time <= $row['promote_end_date'])



        {



             $row['gmt_end_time']  = $row['promote_end_date'];



        }



        else



        {



            $row['gmt_end_time'] = 0;



        }



        /* 限时秒杀倒计时 开始 */

        if ($time >= $row['sale_start_date'] && $time <= $row['sale_end_date'])

        {

             $row['sale_end_time']  = $row['sale_end_date'];

        }

        else

        {

            $row['sale_end_time'] = 0;

        }

        /* 限时秒杀倒计时 结束 */



        /* 是否显示商品库存数量 */



        $row['goods_number']  = ($GLOBALS['_CFG']['use_storage'] == 1) ? $row['goods_number'] : '';







        /* 修正积分:转换为可使用多少积分(原来是可以使用多少钱的积分) */



        $row['integral']      = $GLOBALS['_CFG']['integral_scale'] ? round($row['integral'] * 100 / $GLOBALS['_CFG']['integral_scale']) : 0;







        /* 修正优惠券 */



        $row['bonus_money']   = ($row['bonus_money'] == 0) ? 0 : price_format($row['bonus_money'], false);







        /* 修正商品图片 */



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



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



		/* 秒杀时间倒计时 开始 */

        if ($time >= $row['sale_start_date'] && $time <= $row['sale_end_date'])

        {

             $row['sale_end_time']  = local_date('Y, m-1, d, H, i, s',$row['sale_end_date']);

             $row['status']  = 1;//代表秒杀进行中

        }

        elseif($time < $row['sale_start_date'] && $time < $row['sale_end_date'])

        {

             $row['sale_end_time']  = local_date('Y, m-1, d, H, i, s',$row['sale_end_date']);

             $row['status']  = 0;//代表秒杀未开始

        }else{

            $row['sale_end_time'] = 0;

             $row['status']  = null;

		}

        $row['gmtime']  = local_date('Y, m-1, d, H, i, s',$time);

        $row['sale_start_time']  = local_date('Y, m-1, d, H, i, s',$row['sale_start_date']);

		/* 秒杀时间倒计时 结束 */



        return $row;



    }



    else



    {



        return false;



    }



}







/**



 * 获得商品的属性和规格



 *



 * @access  public



 * @param   integer $goods_id



 * @return  array



 */



function get_goods_properties($goods_id)

{

    /* 对属性进行重新排序和分组 */

    $sql = "SELECT attr_group ".

            "FROM " . $GLOBALS['ecs']->table('goods_type') . " AS gt, " . $GLOBALS['ecs']->table('goods') . " AS g ".

            "WHERE g.goods_id='$goods_id' AND gt.cat_id=g.goods_type";

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



    if (!empty($grp))

    {

        $groups = explode("\n", strtr($grp, "\r", ''));

    }



    /* 获得商品的规格 */

    $sql = "SELECT a.attr_id, a.attr_name, a.attr_group, a.is_linked, a.attr_type, ".

                "g.goods_attr_id, g.attr_value, g.attr_price, g.attr_sort_order,g.thumb_url,g.img_url, hex_color " .

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

            'LEFT JOIN ' . $GLOBALS['ecs']->table('attribute') . ' AS a ON a.attr_id = g.attr_id ' .

            "WHERE g.goods_id = '$goods_id' " .

            'ORDER BY a.sort_order, a.attr_id, g.attr_sort_order, g.attr_price, g.goods_attr_id';

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



    $arr['pro'] = array();     // 属性

    $arr['spe'] = array();     // 规格

    $arr['lnk'] = array();     // 关联的属性



    foreach ($res AS $row)

    {

        $row['attr_value'] = str_replace("\n", '<br />', $row['attr_value']);



        if ($row['attr_type'] == 0)

        {

            $group = (isset($groups[$row['attr_group']])) ? $groups[$row['attr_group']] : $GLOBALS['_LANG']['goods_attr'];



            $arr['pro'][$group][$row['attr_id']]['name']  = $row['attr_name'];

            $arr['pro'][$group][$row['attr_id']]['value'] = $row['attr_value'];

        }

        else

        {

            $arr['spe'][$row['attr_id']]['attr_type'] = $row['attr_type'];

            $arr['spe'][$row['attr_id']]['name']     = $row['attr_name'];

            $arr['spe'][$row['attr_id']]['values'][] = array(

                                                        'label'        => $row['attr_value'],

                                                        'price'        => $row['attr_price'],

                                                        'thumb_url'        => $row['thumb_url'],

                                                        'img_url'        => $row['img_url'],

                                                        'hex_color'        => $row['hex_color'],

                                                        'format_price' => price_format(abs($row['attr_price']), false),

                                                        'id'           => $row['goods_attr_id']);

        }



        if ($row['is_linked'] == 1)

        {

            /* 如果该属性需要关联,先保存下来 */

            $arr['lnk'][$row['attr_id']]['name']  = $row['attr_name'];

            $arr['lnk'][$row['attr_id']]['value'] = $row['attr_value'];

        }

    }



    return $arr;

}







/**



 * 获得属性相同的商品



 *



 * @access  public



 * @param   array   $attr   // 包含了属性名称,ID的数组



 * @return  array



 */



function get_same_attribute_goods($attr)



{



    $lnk = array();







    if (!empty($attr))



    {



        foreach ($attr['lnk'] AS $key => $val)



        {



            $lnk[$key]['title'] = sprintf($GLOBALS['_LANG']['same_attrbiute_goods'], $val['name'], $val['value']);







            /* 查找符合条件的商品 */



            $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 ' .



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



                    'LEFT JOIN ' . $GLOBALS['ecs']->table('goods_attr') . ' as a ON g.goods_id = a.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 a.attr_id = '$key' AND g.is_on_sale=1 AND a.attr_value = '$val[value]' AND g.goods_id <> '$_REQUEST[id]' " .



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



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







            foreach ($res AS $row)



            {



                $lnk[$key]['goods'][$row['goods_id']]['goods_id']      = $row['goods_id'];



                $lnk[$key]['goods'][$row['goods_id']]['goods_name']    = $row['goods_name'];



                $lnk[$key]['goods'][$row['goods_id']]['short_name']    = $GLOBALS['_CFG']['goods_name_length'] > 0 ?



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



                $lnk[$key]['goods'][$row['goods_id']]['goods_thumb']     = (empty($row['goods_thumb'])) ? $GLOBALS['_CFG']['no_picture'] : $row['goods_thumb'];



                $lnk[$key]['goods'][$row['goods_id']]['market_price']  = price_format($row['market_price']);



                $lnk[$key]['goods'][$row['goods_id']]['shop_price']    = price_format($row['shop_price']);



                $lnk[$key]['goods'][$row['goods_id']]['promote_price'] = bargain_price($row['promote_price'],



                    $row['promote_start_date'], $row['promote_end_date']);



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



            }



        }



    }







    return $lnk;



}







/**



 * 获得指定商品的相册



 *



 * @access  public



 * @param   integer     $goods_id



 * @return  array



 */



function get_goods_gallery($goods_id)

{

    $sql = 'SELECT img_id, img_url, thumb_url, img_desc' .

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

        " WHERE goods_id = '$goods_id' ORDER BY sort_order,img_id DESC LIMIT " . $GLOBALS['_CFG']['goods_gallery_number'];

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

    /* 格式化相册图片路径 */

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

    {	

		//修改修复远程图片路径

		$flag=strstr($gallery_img['img_url'],'http');

		if(empty($flag)){

			$row[$key]['http']=0;

		}else{

			$row[$key]['http']=1;

		}

		//修改修复远程图片路径

		$row[$key]['img_url'] = get_image_path($goods_id, $gallery_img['img_url'], false, 'gallery');

        $row[$key]['thumb_url'] = get_image_path($goods_id, $gallery_img['thumb_url'], true, 'gallery');

        $row[$key]['image_width'] = $GLOBALS['_CFG']['image_width'];

        $row[$key]['image_height'] = $GLOBALS['_CFG']['image_height'];

    }

    return $row;

}



/**



 * 获得指定分类下的商品



 *



 * @access  public



 * @param   integer     $cat_id     分类ID



 * @param   integer     $num        数量



 * @param   string      $from       来自web/wap的调用



 * @param   string      $order_rule 指定商品排序规则



 * @return  array



 */



function assign_cat_goods($cat_id, $num = 0, $from = 'web', $order_rule = '')



{



    $children = get_children($cat_id);







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



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



               'g.promote_price, promote_start_date, promote_end_date, g.goods_brief, g.goods_thumb, g.goods_img ' .



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



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



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



            'WHERE g.is_on_sale = 1 AND g.is_alone_sale = 1  AND g.is_show_index = 1 AND '.



                'g.is_delete = 0 AND (' . $children . 'OR ' . get_extension_goods($children) . ') ';







    $order_rule = empty($order_rule) ? 'ORDER BY g.sort_order, g.goods_id DESC' : $order_rule;



    $sql .= $order_rule;



    if ($num > 0)



    {



        $sql .= ' LIMIT ' . $num;



    }



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







    $goods = array();



    foreach ($res AS $idx => $row)



    {



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



        {



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



            $goods[$idx]['promote_price'] = $promote_price > 0 ? price_format($promote_price) : '';



        }



        else



        {



            $goods[$idx]['promote_price'] = '';



        }







        $goods[$idx]['id']           = $row['goods_id'];



        $goods[$idx]['name']         = $row['goods_name'];



        $goods[$idx]['brief']        = $row['goods_brief'];



        $goods[$idx]['market_price'] = price_format($row['market_price']);



        $goods[$idx]['short_name']   = $GLOBALS['_CFG']['goods_name_length'] > 0 ?



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



        $goods[$idx]['shop_price']   = price_format($row['shop_price']);



        $goods[$idx]['thumb']        = get_image_path($row['goods_id'], $row['goods_thumb'], true);



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



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



    }







    if ($from == 'web')



    {



        $GLOBALS['smarty']->assign('cat_goods_' . $cat_id, $goods);



    }



    elseif ($from == 'wap')



    {



        $cat['goods'] = $goods;



    }







    /* 分类信息 */



    $sql = 'SELECT cat_name FROM ' . $GLOBALS['ecs']->table('category') . " WHERE cat_id = '$cat_id'";



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



    $cat['url']  = build_uri('category', array('cid' => $cat_id), $cat['name']);



    $cat['id']   = $cat_id;



	$cat['cat_id'] = get_child_tree($cat_id);//增加子类别调用 by Bragg







    return $cat;



}







/**



 * 获得指定的品牌下的商品



 *



 * @access  public



 * @param   integer     $brand_id       品牌的ID



 * @param   integer     $num            数量



 * @param   integer     $cat_id         分类编号



 * @param   string      $order_rule     指定商品排序规则



 * @return  void



 */



function assign_brand_goods($brand_id, $num = 0, $cat_id = 0,$order_rule = '')



{



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



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



                'g.promote_price, g.promote_start_date, g.promote_end_date, g.goods_brief, g.goods_thumb, g.goods_img ' .



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



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



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



            "WHERE g.is_on_sale = 1 AND g.is_alone_sale = 1 AND g.is_delete = 0 AND g.brand_id = '$brand_id'";







    if ($cat_id > 0)



    {



        $sql .= get_children($cat_id);



    }







    $order_rule = empty($order_rule) ? ' ORDER BY g.sort_order, g.goods_id DESC' : $order_rule;



    $sql .= $order_rule;



    if ($num > 0)



    {



        $res = $GLOBALS['db']->selectLimit($sql, $num);



    }



    else



    {



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



    }







    $idx = 0;



    $goods = array();



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



    {



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



        {



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



        }



        else



        {



            $promote_price = 0;



        }







        $goods[$idx]['id']            = $row['goods_id'];



        $goods[$idx]['name']          = $row['goods_name'];



        $goods[$idx]['short_name']    = $GLOBALS['_CFG']['goods_name_length'] > 0 ?



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



        $goods[$idx]['market_price']  = price_format($row['market_price']);



        $goods[$idx]['shop_price']    = price_format($row['shop_price']);



        $goods[$idx]['promote_price'] = $promote_price > 0 ? price_format($promote_price) : '';



        $goods[$idx]['brief']         = $row['goods_brief'];



        $goods[$idx]['thumb']         = get_image_path($row['goods_id'], $row['goods_thumb'], true);



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



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







        $idx++;



    }







    /* 分类信息 */



    $sql = 'SELECT brand_name FROM ' . $GLOBALS['ecs']->table('brand') . " WHERE brand_id = '$brand_id'";







    $brand['id']   = $brand_id;



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



    $brand['url']  = build_uri('brand', array('bid' => $brand_id), $brand['name']);







    $brand_goods = array('brand' => $brand, 'goods' => $goods);







    return $brand_goods;



}







/**



 * 获得所有扩展分类属于指定分类的所有商品ID



 *



 * @access  public



 * @param   string $cat_id     分类查询字符串



 * @return  string



 */



function get_extension_goods($cats)



{



    $extension_goods_array = '';



    $sql = 'SELECT goods_id FROM ' . $GLOBALS['ecs']->table('goods_cat') . " AS g WHERE $cats";



    $extension_goods_array = $GLOBALS['db']->getCol($sql);



    return db_create_in($extension_goods_array, 'g.goods_id');



}







/**



 * 判断某个商品是否正在特价促销期



 *



 * @access  public



 * @param   float   $price      促销价格



 * @param   string  $start      促销开始日期



 * @param   string  $end        促销结束日期



 * @return  float   如果还在促销期则返回促销价,否则返回0



 */



function bargain_price($price, $start, $end)



{



    if ($price == 0)



    {



        return 0;



    }



    else



    {



        $time = gmtime();



        if ($time >= $start && $time <= $end)



        {



            return $price;



        }



        else



        {



            return 0;



        }



    }



}







/**



 * 获得指定的规格的价格



 *



 * @access  public



 * @param   mix     $spec   规格ID的数组或者逗号分隔的字符串



 * @return  void



 */



function spec_price($spec)



{



    if (!empty($spec))



    {



        if(is_array($spec))



        {



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



            {



                $spec[$key]=addslashes($val);



            }



        }



        else



        {



            $spec=addslashes($spec);



        }







        $where = db_create_in($spec, 'goods_attr_id');







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



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



    }



    else



    {



        $price = 0;



    }







    return $price;



}







/**



 * 取得团购活动信息



 * @param   int     $group_buy_id   团购活动id



 * @param   int     $current_num    本次购买数量(计算当前价时要加上的数量)



 * @return  array



 *                  status          状态:



 */



function group_buy_info($group_buy_id, $current_num = 0)

{

    /* 取得团购活动信息 */

    $group_buy_id = intval($group_buy_id);

    $sql = "SELECT b.*,g.*, b.act_id AS group_buy_id, b.act_desc AS group_buy_desc, b.start_time AS start_date, b.end_time AS end_date " .

            "FROM " . $GLOBALS['ecs']->table('goods_activity') . " AS b " .

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

            "WHERE act_id = '$group_buy_id' " .

            "AND act_type = '" . GAT_GROUP_BUY . "'";

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



    /* 如果为空,返回空数组 */

    if (empty($group_buy))

    {

        return array();

    }



    $ext_info = unserialize($group_buy['ext_info']);

    $group_buy = array_merge($group_buy, $ext_info);



    /* 格式化时间 */



    $group_buy['formated_start_date'] = local_date('Y-m-d H:i', $group_buy['start_time']);



    $group_buy['formated_end_date'] = local_date('Y-m-d H:i', $group_buy['end_time']);







    /* 格式化保证金 */



    $group_buy['formated_deposit'] = price_format($group_buy['deposit'], false);







    /* 处理价格阶梯 */



    $price_ladder = $group_buy['price_ladder'];



    if (!is_array($price_ladder) || empty($price_ladder))



    {



        $price_ladder = array(array('amount' => 0, 'price' => 0));



    }



    else



    {



        foreach ($price_ladder as $key => $amount_price)



        {



            $price_ladder[$key]['formated_price'] = price_format($amount_price['price'], false);



        }



    }



    $group_buy['price_ladder'] = $price_ladder;







    /* 统计信息 */



    $stat = group_buy_stat($group_buy_id, $group_buy['deposit']);



    $group_buy = array_merge($group_buy, $stat);







    /* 计算当前价 */



    $cur_price  = $price_ladder[0]['price']; // 初始化



    $cur_amount = $stat['valid_goods'] + $current_num; // 当前数量



    foreach ($price_ladder as $amount_price)



    {



        if ($cur_amount >= $amount_price['amount'])



        {



            $cur_price = $amount_price['price'];



        }



        else



        {



            break;



        }



    }



    $group_buy['cur_price'] = $cur_price;



    $group_buy['formated_cur_price'] = price_format($cur_price, false);







    /* 最终价 */



    $group_buy['trans_price'] = $group_buy['cur_price'];



    $group_buy['formated_trans_price'] = $group_buy['formated_cur_price'];



    $group_buy['trans_amount'] = $group_buy['valid_goods'];







    /* 状态 */



    $group_buy['status'] = group_buy_status($group_buy);



    if (isset($GLOBALS['_LANG']['gbs'][$group_buy['status']]))



    {



        $group_buy['status_desc'] = $GLOBALS['_LANG']['gbs'][$group_buy['status']];



    }







    $group_buy['start_time'] = $group_buy['formated_start_date'];



    $group_buy['end_time'] = $group_buy['formated_end_date'];







    return $group_buy;



}







/*



 * 取得某团购活动统计信息



 * @param   int     $group_buy_id   团购活动id



 * @param   float   $deposit        保证金



 * @return  array   统计信息



 *                  total_order     总订单数



 *                  total_goods     总商品数



 *                  valid_order     有效订单数



 *                  valid_goods     有效商品数



 */



function group_buy_stat($group_buy_id, $deposit)



{



    $group_buy_id = intval($group_buy_id);







    /* 取得团购活动商品ID */



    $sql = "SELECT goods_id " .



           "FROM " . $GLOBALS['ecs']->table('goods_activity') .



           "WHERE act_id = '$group_buy_id' " .



           "AND act_type = '" . GAT_GROUP_BUY . "'";



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







    /* 取得总订单数和总商品数 */



    $sql = "SELECT COUNT(*) AS total_order, SUM(g.goods_number) AS total_goods " .



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



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



            " WHERE o.order_id = g.order_id " .



            "AND o.extension_code = 'group_buy' " .



            "AND o.extension_id = '$group_buy_id' " .



            "AND g.goods_id = '$group_buy_goods_id' " .



            "AND (order_status = '" . OS_CONFIRMED . "' OR order_status = '" . OS_UNCONFIRMED . "')";



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



    if ($stat['total_order'] == 0)



    {



        $stat['total_goods'] = 0;



    }







    /* 取得有效订单数和有效商品数 */



    $deposit = floatval($deposit);



    if ($deposit > 0 && $stat['total_order'] > 0)



    {



        $sql .= " AND (o.money_paid + o.surplus) >= '$deposit'";



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



        $stat['valid_order'] = $row['total_order'];



        if ($stat['valid_order'] == 0)



        {



            $stat['valid_goods'] = 0;



        }



        else



        {



            $stat['valid_goods'] = $row['total_goods'];



        }



    }



    else



    {



        $stat['valid_order'] = $stat['total_order'];



        $stat['valid_goods'] = $stat['total_goods'];



    }







    return $stat;



}







/**



 * 获得团购的状态



 *



 * @access  public



 * @param   array



 * @return  integer



 */



function group_buy_status($group_buy)



{



    $now = gmtime();



    if ($group_buy['is_finished'] == 0)



    {



        /* 未处理 */



        if ($now < $group_buy['start_time'])



        {



            $status = GBS_PRE_START;



        }



        elseif ($now > $group_buy['end_time'])



        {



            $status = GBS_FINISHED;



        }



        else



        {



            if ($group_buy['restrict_amount'] == 0 || $group_buy['valid_goods'] < $group_buy['restrict_amount'])



            {



                $status = GBS_UNDER_WAY;



            }



            else



            {



                $status = GBS_FINISHED;



            }



        }



    }



    elseif ($group_buy['is_finished'] == GBS_SUCCEED)



    {



        /* 已处理,团购成功 */



        $status = GBS_SUCCEED;



    }



    elseif ($group_buy['is_finished'] == GBS_FAIL)



    {



        /* 已处理,团购失败 */



        $status = GBS_FAIL;



    }







    return $status;



}







/**



 * 取得拍卖活动信息



 * @param   int     $act_id     活动id



 * @return  array



 */



function auction_info($act_id, $config = false)



{



    $sql = "SELECT * FROM " . $GLOBALS['ecs']->table('goods_activity') . " WHERE act_id = '$act_id'";



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



    if ($auction['act_type'] != GAT_AUCTION)



    {



        return array();



    }



    $auction['status_no'] = auction_status($auction);



    if ($config == true)



    {







        $auction['start_time'] = local_date('Y-m-d H:i', $auction['start_time']);



        $auction['end_time'] = local_date('Y-m-d H:i', $auction['end_time']);



    }



    else



    {



        $auction['start_time'] = local_date($GLOBALS['_CFG']['time_format'], $auction['start_time']);



        $auction['end_time'] = local_date($GLOBALS['_CFG']['time_format'], $auction['end_time']);



    }



    $ext_info = unserialize($auction['ext_info']);



    $auction = array_merge($auction, $ext_info);



    $auction['formated_start_price'] = price_format($auction['start_price']);



    $auction['formated_end_price'] = price_format($auction['end_price']);



    $auction['formated_amplitude'] = price_format($auction['amplitude']);



    $auction['formated_deposit'] = price_format($auction['deposit']);







    /* 查询出价用户数和最后出价 */



    $sql = "SELECT COUNT(DISTINCT bid_user) FROM " . $GLOBALS['ecs']->table('auction_log') .



            " WHERE act_id = '$act_id'";



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



    if ($auction['bid_user_count'] > 0)



    {



        $sql = "SELECT a.*, u.user_name " .



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



                        $GLOBALS['ecs']->table('users') . " AS u " .



                "WHERE a.bid_user = u.user_id " .



                "AND act_id = '$act_id' " .



                "ORDER BY a.log_id DESC";



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



        $row['formated_bid_price'] = price_format($row['bid_price'], false);



        $row['bid_time'] = local_date($GLOBALS['_CFG']['time_format'], $row['bid_time']);



        $auction['last_bid'] = $row;



    }







    /* 查询已确认订单数 */



    if ($auction['status_no'] > 1)



    {



        $sql = "SELECT COUNT(*)" .



                " FROM " . $GLOBALS['ecs']->table('order_info') .



                " WHERE extension_code = 'auction'" .



                " AND extension_id = '$act_id'" .



                " AND order_status " . db_create_in(array(OS_CONFIRMED, OS_UNCONFIRMED));



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



    }



    else



    {



        $auction['order_count'] = 0;



    }







    /* 当前价 */



    $auction['current_price'] = isset($auction['last_bid']) ? $auction['last_bid']['bid_price'] : $auction['start_price'];



    $auction['formated_current_price'] = price_format($auction['current_price'], false);







    return $auction;



}







/**



 * 取得拍卖活动出价记录



 * @param   int     $act_id     活动id



 * @return  array



 */



function auction_log($act_id)



{



    $log = array();



    $sql = "SELECT a.*, u.user_name " .



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



                      $GLOBALS['ecs']->table('users') . " AS u " .



            "WHERE a.bid_user = u.user_id " .



            "AND act_id = '$act_id' " .



            "ORDER BY a.log_id DESC";



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



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



    {



        $row['bid_time'] = local_date($GLOBALS['_CFG']['time_format'], $row['bid_time']);



        $row['formated_bid_price'] = price_format($row['bid_price'], false);



        $log[] = $row;



    }







    return $log;



}







/**



 * 计算拍卖活动状态(注意参数一定是原始信息)



 * @param   array   $auction    拍卖活动原始信息



 * @return  int



 */



function auction_status($auction)



{



    $now = gmtime();



    if ($auction['is_finished'] == 0)



    {



        if ($now < $auction['start_time'])



        {



            return PRE_START; // 未开始



        }



        elseif ($now > $auction['end_time'])



        {



            return FINISHED; // 已结束,未处理



        }



        else



        {



            return UNDER_WAY; // 进行中



        }



    }



    elseif ($auction['is_finished'] == 1)



    {



        return FINISHED; // 已结束,未处理



    }



    else



    {



        return SETTLED; // 已结束,已处理



    }



}







/**



 * 取得商品信息



 * @param   int     $goods_id   商品id



 * @return  array



 */



function goods_info($goods_id)



{



    $sql = "SELECT g.*, b.brand_name " .



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



                "LEFT JOIN " . $GLOBALS['ecs']->table('brand') . " AS b ON g.brand_id = b.brand_id " .



            "WHERE g.goods_id = '$goods_id'";



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



    if (!empty($row))



    {



        /* 修正重量显示 */



        $row['goods_weight'] = (intval($row['goods_weight']) > 0) ?



            $row['goods_weight'] . $GLOBALS['_LANG']['kilogram'] :



            ($row['goods_weight'] * 1000) . $GLOBALS['_LANG']['gram'];







        /* 修正图片 */



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



    }







    return $row;



}







/**



 * 取得优惠活动信息



 * @param   int     $act_id     活动id



 * @return  array



 */



function favourable_info($act_id)



{



    $sql = "SELECT * FROM " . $GLOBALS['ecs']->table('favourable_activity') .



            " WHERE act_id = '$act_id'";



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



    if (!empty($row))



    {



        $row['start_time'] = local_date($GLOBALS['_CFG']['time_format'], $row['start_time']);



        $row['end_time'] = local_date($GLOBALS['_CFG']['time_format'], $row['end_time']);



        $row['formated_min_amount'] = price_format($row['min_amount']);



        $row['formated_max_amount'] = price_format($row['max_amount']);



        $row['gift'] = unserialize($row['gift']);



        if ($row['act_type'] == FAT_GOODS)



        {



            $row['act_type_ext'] = round($row['act_type_ext']);



        }



    }







    return $row;



}







/**



 * 批发信息



 * @param   int     $act_id     活动id



 * @return  array



 */



function wholesale_info($act_id)



{



    $sql = "SELECT * FROM " . $GLOBALS['ecs']->table('wholesale') .



            " WHERE act_id = '$act_id'";



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



    if (!empty($row))



    {



        $row['price_list'] = unserialize($row['prices']);



    }







    return $row;



}







/**



 * 添加商品名样式



 * @param   string     $goods_name     商品名称



 * @param   string     $style          样式参数



 * @return  string



 */



function add_style($goods_name, $style)



{



    $goods_style_name = $goods_name;







    $arr   = explode('+', $style);







    $font_color     = !empty($arr[0]) ? $arr[0] : '';



    $font_style = !empty($arr[1]) ? $arr[1] : '';







    if ($font_color!='')



    {



        $goods_style_name = '<font color=' . $font_color . '>' . $goods_style_name . '</font>';



    }



    if ($font_style != '')



    {



        $goods_style_name = '<' . $font_style .'>' . $goods_style_name . '</' . $font_style . '>';



    }



    return $goods_style_name;



}







/**



 * 取得商品属性



 * @param   int     $goods_id   商品id



 * @return  array



 */



function get_goods_attr($goods_id)



{



    $attr_list = array();



    $sql = "SELECT a.attr_id, a.attr_name " .



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



            "WHERE g.goods_id = '$goods_id' " .



            "AND g.goods_type = a.cat_id " .



            "AND a.attr_type = 1";



    $attr_id_list = $GLOBALS['db']->getCol($sql);



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



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



    {



        if (defined('ECS_ADMIN'))



        {



            $attr['goods_attr_list'] = array(0 => $GLOBALS['_LANG']['select_please']);



        }



        else



        {



            $attr['goods_attr_list'] = array();



        }



        $attr_list[$attr['attr_id']] = $attr;



    }







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



            "FROM " . $GLOBALS['ecs']->table('goods_attr') .



            " WHERE goods_id = '$goods_id' " .



            "AND attr_id " . db_create_in($attr_id_list);



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



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



    {



        $attr_list[$goods_attr['attr_id']]['goods_attr_list'][$goods_attr['goods_attr_id']] = $goods_attr['attr_value'];



    }







    return $attr_list;



}







/**



 * 获得购物车中商品的配件



 *



 * @access  public



 * @param   array     $goods_list



 * @return  array



 */



function get_goods_fittings($goods_list = array())



{



    $temp_index = 0;



    $arr        = array();







    $sql = 'SELECT gg.parent_id, ggg.goods_name AS parent_name, gg.goods_id, gg.goods_price, 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 ".



            'FROM ' . $GLOBALS['ecs']->table('group_goods') . ' AS gg ' .



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



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



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



            "LEFT JOIN " . $GLOBALS['ecs']->table('goods') . " AS ggg ON ggg.goods_id = gg.parent_id ".



            "WHERE gg.parent_id " . db_create_in($goods_list) . " AND g.is_delete = 0 AND g.is_on_sale = 1 ".



            "ORDER BY gg.parent_id, gg.goods_id";







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







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



    {



        $arr[$temp_index]['parent_id']         = $row['parent_id'];//配件的基本件ID



        $arr[$temp_index]['parent_name']       = $row['parent_name'];//配件的基本件的名称



        $arr[$temp_index]['parent_short_name'] = $GLOBALS['_CFG']['goods_name_length'] > 0 ?



            sub_str($row['parent_name'], $GLOBALS['_CFG']['goods_name_length']) : $row['parent_name'];//配件的基本件显示的名称



        $arr[$temp_index]['goods_id']          = $row['goods_id'];//配件的商品ID



        $arr[$temp_index]['goods_name']        = $row['goods_name'];//配件的名称



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



            sub_str($row['goods_name'], $GLOBALS['_CFG']['goods_name_length']) : $row['goods_name'];//配件显示的名称



        $arr[$temp_index]['fittings_price']    = price_format($row['goods_price']);//配件价格



        $arr[$temp_index]['shop_price']        = price_format($row['shop_price']);//配件原价格



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



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



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



        $temp_index ++;



    }







    return $arr;



}







/**



 * 取指定规格的货品信息



 *



 * @access      public



 * @param       string      $goods_id



 * @param       array       $spec_goods_attr_id



 * @return      array



 */



function get_products_info($goods_id, $spec_goods_attr_id)



{



    $return_array = array();







    if (empty($spec_goods_attr_id) || !is_array($spec_goods_attr_id) || empty($goods_id))



    {



        return $return_array;



    }







    $goods_attr_array = sort_goods_attr_id_array($spec_goods_attr_id);







    if(isset($goods_attr_array['sort']))



    {



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







        $sql = "SELECT * FROM " .$GLOBALS['ecs']->table('products'). " WHERE goods_id = '$goods_id' AND goods_attr = '$goods_attr' LIMIT 0, 1";



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



    }



    return $return_array;



}



/* 代码增加_start */

function  is_exist_prod($first_arr, $one, $prod_exist_arr)

{

	if (empty($prod_exist_arr))

	{

		return 0;

	}

	$first_arr[]=$one;



	$all_valid =0;

	foreach($prod_exist_arr AS $item_exist)

	{		

		$first_exist=1;

		foreach($first_arr AS $first)

		{			

			if (!strstr($item_exist, '|'. $first .'|'))

			{

				$first_exist=0;

				break;

			}

		}

		if($first_exist)

		{

			$all_valid=1;

			break;

		}

	}

	return $all_valid;

}



 /* 商品累计销量带自定义_新增加 */  

function get_sales_counts($goods_id)  

{  

    /* 查询该商品的自定义销量 */  

    $sales_base = $GLOBALS['db']->getOne('SELECT sales_volume_base FROM '.$GLOBALS['ecs']->table('goods').' WHERE goods_id = '.$goods_id);  

    /* 查询该商品的实际销量 */  

    $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.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'" ;

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

    /* 商品累计销量默认显示方式 */  

    if ($GLOBALS['_CFG']['show_sales_type'])  

    {  

        $row['sales_volume_total'] =  $sales_count; //实际销量  

    }  

    else  

    {  

        $row['sales_volume_total'] =  $sales_base + $sales_count; //自定义销量+实际销量  

    }  

    return ($row['sales_volume_total']);  

}



//-------------------------------------------------------------------------------

// 预售活动

//-------------------------------------------------------------------------------



/**

 * 判断当前商品是否为预售商品

 * @param unknown $goods_id

 * @return int pre_sale_id

 */

function is_pre_sale_goods($goods_id)

{

	$sql = "SELECT act_id " .

			"FROM " . $GLOBALS['ecs']->table('goods_activity') . " AS b " .

			"WHERE goods_id = '$goods_id' " .

			"AND is_finished < ".PSS_FINISHED." " .

			"AND act_type = '" . GAT_PRE_SALE . "'";

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



	if(empty($pre_sale_id))

	{

		return null;

	}



	return $pre_sale_id;

}



/**

 * 根据预售活动编号取得预售活动信息

 * @param   int     $pre_sale_id    预售活动id

 * @param   int     $current_num    本次购买数量(计算当前价时要加上的数量)

 * @return  array

 *                  status	状态:</br>

 *                  formated_start_date	格式化预售开始时间</br>

 *                  formated_end_date	格式化预售结束时间</br>

 *                  formated_retainage_start	尾款支付开始时间</br>

 *                  formated_retainage_end	尾款支付结束时间</br>

 *                  formated_deposit	格式化后的保证金</br>

 *                  formated_sale_price	格式化后的预售价格</br>

 *                  price_ladder	阶梯价格[amount: 数量, price: 价格, formated_price: 格式化后的价格]</br>

 *                  total_order	总订单数</br>

 *                  total_goods	总商品数</br>

 *                  valid_order	有效订单数</br>

 *                  valid_goods	有效商品数</br>

 *                  cur_price	当前阶梯价格</br>

 *                  formated_cur_price	格式化后的当前阶梯价格</br>

 *                  cur_amount	当前阶梯数量</br>

 *                  gift_integral	赠送积分</br>

 *                  status	预售活动状态</br>

 */

function pre_sale_info($pre_sale_id, $current_num = 0)

{

	/* 取得团购活动信息 */

	$pre_sale_id = intval($pre_sale_id);

	$sql = "SELECT b.*,g.*, b.act_id AS pre_sale_id, b.act_desc AS pre_sale_desc, b.start_time, b.end_time " .

			"FROM " . $GLOBALS['ecs']->table('goods_activity') . " AS b " .

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

			"WHERE act_id = '$pre_sale_id' " .

			"AND act_type = '" . GAT_PRE_SALE . "'";

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



	/* 如果为空,返回空数组 */

	if (empty($pre_sale))

	{

		return array();

	}



	$ext_info = unserialize($pre_sale['ext_info']);

	$pre_sale = array_merge($pre_sale, $ext_info);



	/* 格式化时间 */

	$pre_sale['formated_start_date'] = local_date('Y-m-d H:i', $pre_sale['start_time']);

	$pre_sale['formated_end_date'] = local_date('Y-m-d H:i', $pre_sale['end_time']);



	// 尾款支付的开始和结束时间

	$pre_sale['formated_retainage_start'] = local_date('Y-m-d H:i', $pre_sale['retainage_start']);

	$pre_sale['formated_retainage_end'] = local_date('Y-m-d H:i', $pre_sale['retainage_end']);



	/* 格式化预售价格和保证金 */

	$pre_sale['formated_sale_price'] = price_format($pre_sale['sale_price'], false);

	$pre_sale['formated_deposit'] = price_format($pre_sale['deposit'], false);



	// 本地时间,用于倒计时显示,符合JS格式

	$pre_sale['local_start_date'] = local_date('Y, m-1, d, H, i, s', $pre_sale['start_time']);

	$pre_sale['local_end_date'] = local_date('Y, m-1, d, H, i, s', $pre_sale['end_time']);



	/* 处理价格阶梯 */

	$price_ladder = $pre_sale['price_ladder'];



	/* 价格阶梯必须为有效,而且一定会有价格阶梯 */

	if (!is_array($price_ladder) || empty($price_ladder))

	{

		// 如果阶梯价格设置为空则设置默认值

		// 这种情况应该不允许出现

		$price_ladder = array(array('amount' => 0, 'price' => 0));

	}

	else

	{

		// 遍历阶梯价格

		foreach ($price_ladder as $key => $amount_price)

		{

			// 格式化每一个阶梯价格

			$price_ladder[$key]['formated_price'] = price_format($amount_price['price'], false);

		}

	}

	$pre_sale['price_ladder'] = $price_ladder;

	$pre_sale['price_ladder_count'] = count($price_ladder);



	/* 统计信息 */

	$stat = pre_sale_stat($pre_sale_id, $pre_sale['deposit']);

	// 合并统计信息

	$pre_sale = array_merge($pre_sale, $stat);



	/* 计算当前价 */

	$cur_price  = $price_ladder[0]['price']; // 初始化

	$cur_amount = $stat['valid_order'] + $current_num; // 当前数量

	// 计算最低价格

	foreach ($price_ladder as $amount_price)

	{

		if ($cur_amount >= $amount_price['amount'])

		{

			$cur_price = $amount_price['price'];

		}

		else

		{

			break;

		}

	}



	// 获取商品描述

	$pre_sale['goods_desc'] = $GLOBALS['db']->getOne("select goods_desc from ".$GLOBALS['ecs']->table('goods')." where goods_id=".$pre_sale['goods_id']);

	$pre_sale['cur_price'] = $cur_price;

	$pre_sale['$cur_amount'] = $cur_amount;

	$pre_sale['formated_cur_price'] = price_format($cur_price, false);



	// 计算折扣

	if ($pre_sale['shop_price'] == 0)

	{

		$pre_sale['zhekou'] = 0;

	}

	else

	{

		$pre_sale['zhekou'] = number_format(intval($pre_sale['cur_price'])/intval($pre_sale['shop_price']),2) * 100;

	}



	// 计算节省金额

	$pre_sale['jiesheng'] = $pre_sale['shop_price'] - $pre_sale['cur_price'];



	/* 最终价 */

	$pre_sale['trans_price'] = $pre_sale['cur_price'];

	$pre_sale['formated_trans_price'] = $pre_sale['formated_cur_price'];

	$pre_sale['trans_amount'] = $pre_sale['valid_goods'];



	/* 状态 */

	$status = pre_sale_status($pre_sale);

	$pre_sale['status'] = pre_sale_status($pre_sale);

	$pre_sale['cur_status'] = $GLOBALS['_LANG']['pss'][$status];

	if (isset($GLOBALS['_LANG']['gbs'][$pre_sale['status']]))

	{

		$pre_sale['status_desc'] = $GLOBALS['_LANG']['gbs'][$group_buy['status']];

	}



	$pre_sale['start_time'] = $pre_sale['formated_start_date'];

	$pre_sale['end_time'] = $pre_sale['formated_end_date'];



	$pre_sale['retainage_start'] = $pre_sale['formated_retainage_start'];

	$pre_sale['retainage_end'] = $pre_sale['formated_retainage_end'];



	return $pre_sale;

}



/**

 * 取得某预售活动统计信息

 * @param   int     $pre_sale_id    预售活动id

 * @param   float   $deposit        保证金

 * @return  array   统计信息

 *                  total_order     总订单数</br>

 *                  total_goods     总商品数</br>

 *                  valid_order     有效订单数</br>

 *                  valid_goods     有效商品数</br>

 */

function pre_sale_stat($pre_sale_id, $deposit)

{

	$pre_sale_id = intval($pre_sale_id);



	/* 取得预售活动商品ID */

	$sql = "SELECT goods_id " .

			"FROM " . $GLOBALS['ecs']->table('goods_activity') .

			"WHERE act_id = '$pre_sale_id' " .

			"AND act_type = '" . GAT_PRE_SALE . "'";

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



	/* 取得总订单数和总商品数 */

	$sql = "SELECT COUNT(*) AS total_order, SUM(g.goods_number) AS total_goods " .

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

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

			" WHERE o.order_id = g.order_id " .

			"AND o.extension_code = '" . PRE_SALE_CODE . "' " .

			"AND o.extension_id = '$pre_sale_id' " .

			"AND g.goods_id = '$pre_sale_goods_id' " .

			"AND (order_status = '" . OS_CONFIRMED . "' OR order_status = '" . OS_UNCONFIRMED . "')";

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

	if ($stat['total_order'] == 0)

	{

		$stat['total_goods'] = 0;

	}



	/* 取得有效订单数和有效商品数 */

	$deposit = floatval($deposit);

	if ($deposit > 0 && $stat['total_order'] > 0)

	{

		$sql .= " AND (o.money_paid + o.surplus) >= '$deposit'";

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

		$stat['valid_order'] = $row['total_order'];

		if ($stat['valid_order'] == 0)

		{

			$stat['valid_goods'] = 0;

		}

		else

		{

			$stat['valid_goods'] = $row['total_goods'];

		}

	}

	else

	{

		$stat['valid_order'] = $stat['total_order'];

		$stat['valid_goods'] = $stat['total_goods'];

	}



	return $stat;

}



/**

 * 获得预售的状态

 *

 * @access  public

 * @param   array

 * @return  integer

 */

function pre_sale_status($pre_sale)

{

	$now = gmtime();

	if ($pre_sale['is_finished'] == 0)

	{

		/* 未处理 */

		if ($now < $pre_sale['start_time'])

		{

			$status = PSS_PRE_START;

		}

		elseif ($now > $pre_sale['end_time'])

		{

			$status = PSS_FINISHED;

		}

		else

		{

			if ($pre_sale['restrict_amount'] == 0 || $pre_sale['valid_goods'] < $pre_sale['restrict_amount'])

			{

				$status = PSS_UNDER_WAY;

			}

			else

			{

				$status = PSS_FINISHED;

			}

		}

	}

	elseif ($pre_sale['is_finished'] == PSS_SUCCEED)

	{

		/* 已处理,团购成功 */

		$status = PSS_SUCCEED;

	}

	elseif ($pre_sale['is_finished'] == PSS_FAIL)

	{

		/* 已处理,团购失败 */

		$status = PSS_FAIL;

	}



	return $status;

}



/**

 * 获取指定商品的评论数量

 *

 * @param int $goods_id

 *        	商品编号

 * @return number

 */

function goods_comment_count ($goods_id)

{

	$sql = "select count(*) from " . $GLOBALS['ecs']->table('comment') . " where id_value = '$goods_id' and status = 1 and parent_id = 0";

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

	return intval($count);

}



?>