请选择 进入手机版 | 继续访问电脑版

博思互联建站网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

50元买空间送源码包安装 50元买1年美国空间送本站任意一款源码 快速赚取金币| 免费加入VIP

港台体验150M空间 免费备案港台空间 美国空间 com域名只需55元| pw域名38元

友情链接自助申请 - 博思建站网论坛广告位 博思建站网论坛广告位 - 博思建站网论坛广告位 博思建站网论坛 Archiver |论坛日志 | 论坛相册

搜索
热搜: 推广 免费 空间
论坛长期招聘版主 论坛专用2G双线主机,386元/年 韩国超速1G主机,免备案198元/年 精英1.2G国内外可选-特价198元/年
双线20人合租-20G仅698元/年 11G 国内外论坛专用主机126元/月 500M韩国免备案爆快 126元/年 500M国内双线主机快 126元/年
文字广告位招租 80元/月 文字广告位招租 80元/月 文字广告位招租 80元/月 文字广告位招租 80元/月
查看: 196|回复: 0

[综合其他] ecshop 后台批量上传商品 首图不能显示解决方法

[复制链接]
发表于 2022-8-12 12:41:05 | 显示全部楼层 |阅读模式

本站源码安装服务:虚拟主机安装20元   win服务器安装30元   如果是买的本站源码,虚拟主机安装只需要15元

ecshop 后台批量上传商品,之所以无法上传,是因为后台上传php文件方法中没有导入商品原图路径
将ecshop根目录中的admin/goods_batch.php文件全部修改为




  1.     <?php
  2.     /**
  3.      * ECSHOP 商品批量上传、修改
  4.      * ============================================================================
  5.      * * 版权所有 2005-2012 上海商派网络科技有限公司,并保留所有权利。
  6.      * 网站地址: http://www.ecshop.com;
  7.      * ----------------------------------------------------------------------------
  8.      * 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和
  9.      * 使用;不允许对程序代码以任何形式任何目的的再发布。
  10.      * ============================================================================
  11.      * $Author: liubo $
  12.      * $Id: goods_batch.php 17217 2011-01-19 06:29:08Z liubo $
  13.      */
  14.      
  15.     define('IN_ECS', true);
  16.      
  17.     require(dirname(__FILE__) . '/includes/init.php');
  18.     require('includes/lib_goods.php');
  19.      
  20.     /*------------------------------------------------------ */
  21.     //-- 批量上传
  22.     /*------------------------------------------------------ */
  23.      
  24.     if ($_REQUEST['act'] == 'add')
  25.     {
  26.         /* 检查权限 */
  27.         admin_priv('goods_batch');
  28.      
  29.         /* 取得分类列表 */
  30.         $smarty->assign('cat_list', cat_list());
  31.      
  32.         /* 取得可选语言 */
  33.         $dir = opendir('../languages');
  34.         $lang_list = array(
  35.             'UTF8'      => $_LANG['charset']['utf8'],
  36.             'GB2312'    => $_LANG['charset']['zh_cn'],
  37.             'BIG5'      => $_LANG['charset']['zh_tw'],
  38.         );
  39.         $download_list = array();
  40.         while (@$file = readdir($dir))
  41.         {
  42.             if ($file != '.' && $file != '..' && $file != ".svn" && $file != "_svn" && is_dir('../languages/' .$file) == true)
  43.             {
  44.                 $download_list[$file] = sprintf($_LANG['download_file'], isset($_LANG['charset'][$file]) ? $_LANG['charset'][$file] : $file);
  45.             }
  46.         }
  47.         @closedir($dir);
  48.         $data_format_array = array(
  49.                                     'ecshop'    => $_LANG['export_ecshop'],
  50.                                     'taobao'    => $_LANG['export_taobao'],
  51.                                     'paipai'    => $_LANG['export_paipai'],
  52.                                     'paipai3'   => $_LANG['export_paipai3'],
  53.                                     'taobao46'  => $_LANG['export_taobao46'],
  54.                                    );
  55.         $smarty->assign('data_format', $data_format_array);
  56.         $smarty->assign('lang_list',     $lang_list);
  57.         $smarty->assign('download_list', $download_list);
  58.      
  59.         /* 参数赋值 */
  60.         $ur_here = $_LANG['13_batch_add'];
  61.         $smarty->assign('ur_here', $ur_here);
  62.      
  63.         /* 显示模板 */
  64.         assign_query_info();
  65.         $smarty->display('goods_batch_add.htm');
  66.     }
  67.      
  68.     /*------------------------------------------------------ */
  69.     //-- 批量上传:处理
  70.     /*------------------------------------------------------ */
  71.      
  72.     elseif ($_REQUEST['act'] == 'upload')
  73.     {
  74.         /* 检查权限 */
  75.         admin_priv('goods_batch');
  76.      
  77.         /* 将文件按行读入数组,逐行进行解析 */
  78.         $line_number = 0;
  79.         $arr = array();
  80.         $goods_list = array();
  81.         $field_list = array_keys($_LANG['upload_goods']); // 字段列表
  82.         $data = file($_FILES['file']['tmp_name']);
  83.         if($_POST['data_cat'] == 'ecshop')
  84.         {
  85.             foreach ($data AS $line)
  86.             {
  87.                 // 跳过第一行
  88.                 if ($line_number == 0)
  89.                 {
  90.                     $line_number++;
  91.                     continue;
  92.                 }
  93.      
  94.                 // 转换编码
  95.                 if (($_POST['charset'] != 'UTF8') && (strpos(strtolower(EC_CHARSET), 'utf') === 0))
  96.                 {
  97.                     $line = ecs_iconv($_POST['charset'], 'UTF8', $line);
  98.                 }
  99.      
  100.                 // 初始化
  101.                 $arr    = array();
  102.                 $buff   = '';
  103.                 $quote  = 0;
  104.                 $len    = strlen($line);
  105.                 for ($i = 0; $i < $len; $i++)
  106.                 {
  107.                     $char = $line[$i];
  108.      
  109.                     if ('\\' == $char)
  110.                     {
  111.                         $i++;
  112.                         $char = $line[$i];
  113.      
  114.                         switch ($char)
  115.                         {
  116.                             case '"':
  117.                                 $buff .= '"';
  118.                                 break;
  119.                             case '\'':
  120.                                 $buff .= '\'';
  121.                                 break;
  122.                             case ',';
  123.                                 $buff .= ',';
  124.                                 break;
  125.                             default:
  126.                                 $buff .= '\\' . $char;
  127.                                 break;
  128.                         }
  129.                     }
  130.                     elseif ('"' == $char)
  131.                     {
  132.                         if (0 == $quote)
  133.                         {
  134.                             $quote++;
  135.                         }
  136.                         else
  137.                         {
  138.                             $quote = 0;
  139.                         }
  140.                     }
  141.                     elseif (',' == $char)
  142.                     {
  143.                         if (0 == $quote)
  144.                         {
  145.                             if (!isset($field_list[count($arr)]))
  146.                             {
  147.                                 continue;
  148.                             }
  149.                             $field_name = $field_list[count($arr)];
  150.                             $arr[$field_name] = trim($buff);
  151.                             $buff = '';
  152.                             $quote = 0;
  153.                         }
  154.                         else
  155.                         {
  156.                             $buff .= $char;
  157.                         }
  158.                     }
  159.                     else
  160.                     {
  161.                         $buff .= $char;
  162.                     }
  163.      
  164.                     if ($i == $len - 1)
  165.                     {
  166.                         if (!isset($field_list[count($arr)]))
  167.                         {
  168.                             continue;
  169.                         }
  170.                         $field_name = $field_list[count($arr)];
  171.                         $arr[$field_name] = trim($buff);
  172.                     }
  173.                 }
  174.                 $goods_list[] = $arr;
  175.             }
  176.         }
  177.         elseif($_POST['data_cat'] == 'taobao')
  178.         {
  179.             $id_is = 0;
  180.             foreach ($data AS $line)
  181.             {
  182.                 // 跳过第一行
  183.                 if ($line_number == 0)
  184.                 {
  185.                     $line_number++;
  186.                     continue;
  187.                 }
  188.      
  189.                 // 初始化
  190.                 $arr    = array();
  191.                 $line_list = explode("\t",$line);
  192.                 $arr['goods_name'] = trim($line_list[0],'"');
  193.      
  194.                 $max_id     = $db->getOne("SELECT MAX(goods_id) + $id_is FROM ".$ecs->table('goods'));
  195.                 $id_is++;
  196.                 $goods_sn   = generate_goods_sn($max_id);
  197.                 $arr['goods_sn'] = $goods_sn;
  198.                 $arr['brand_name'] = '';
  199.                 $arr['market_price'] = $line_list[7];
  200.                 $arr['shop_price'] = $line_list[7];
  201.                 $arr['integral'] = 0;
  202.                 $arr['original_img'] = $line_list[25];
  203.                 $arr['keywords'] = '';
  204.                 $arr['goods_brief'] = '';
  205.                 $arr['goods_desc'] = strip_tags($line_list[24]);
  206.                 $arr['goods_desc'] = substr($arr['goods_desc'], 1, -1);
  207.                 $arr['goods_number'] = $line_list[10];
  208.                 $arr['warn_number'] =1;
  209.                 $arr['is_best'] = 0;
  210.                 $arr['is_new'] = 0;
  211.                 $arr['is_hot'] = 0;
  212.                 $arr['is_on_sale'] = 1;
  213.                 $arr['is_alone_sale'] = 0;
  214.                 $arr['is_real'] = 1;
  215.      
  216.                 $goods_list[] = $arr;
  217.             }
  218.         }
  219.         elseif($_POST['data_cat'] == 'paipai')
  220.         {
  221.             $id_is = 0;
  222.             foreach ($data AS $line)
  223.             {
  224.                 // 跳过第一行
  225.                 if ($line_number == 0)
  226.                 {
  227.                     $line_number++;
  228.                     continue;
  229.                 }
  230.      
  231.                 // 初始化
  232.                 $arr    = array();
  233.                 $line_list = explode(",",$line);
  234.                 $arr['goods_name'] = trim($line_list[3],'"');
  235.      
  236.                 $max_id     = $db->getOne("SELECT MAX(goods_id) + $id_is FROM ".$ecs->table('goods'));
  237.                 $id_is++;
  238.                 $goods_sn   = generate_goods_sn($max_id);
  239.                 $arr['goods_sn'] = $goods_sn;
  240.                 $arr['brand_name'] = '';
  241.                 $arr['market_price'] = $line_list[13];
  242.                 $arr['shop_price'] = $line_list[13];
  243.                 $arr['integral'] = 0;
  244.                 $arr['original_img'] = $line_list[28];
  245.                 $arr['keywords'] = '';
  246.                 $arr['goods_brief'] = '';
  247.                 $arr['goods_desc'] = strip_tags($line_list[30]);
  248.                 $arr['goods_number'] = 100;
  249.                 $arr['warn_number'] =1;
  250.                 $arr['is_best'] = 0;
  251.                 $arr['is_new'] = 0;
  252.                 $arr['is_hot'] = 0;
  253.                 $arr['is_on_sale'] = 1;
  254.                 $arr['is_alone_sale'] = 0;
  255.                 $arr['is_real'] = 1;
  256.      
  257.                 $goods_list[] = $arr;
  258.             }
  259.         }
  260.         elseif($_POST['data_cat'] == 'paipai3')
  261.         {
  262.             $id_is = 0;
  263.             foreach ($data AS $line)
  264.             {
  265.                 // 跳过第一行
  266.                 if ($line_number == 0)
  267.                 {
  268.                     $line_number++;
  269.                     continue;
  270.                 }
  271.      
  272.                 // 初始化
  273.                 $arr    = array();
  274.                 $line_list = explode(",",$line);
  275.                 $arr['goods_name'] = trim($line_list[1],'"');
  276.      
  277.                 $max_id     = $db->getOne("SELECT MAX(goods_id) + $id_is FROM ".$ecs->table('goods'));
  278.                 $id_is++;
  279.                 $goods_sn   = generate_goods_sn($max_id);
  280.                 $arr['goods_sn'] = $goods_sn;
  281.                 $arr['brand_name'] = '';
  282.                 $arr['market_price'] = $line_list[9];
  283.                 $arr['shop_price'] = $line_list[9];
  284.                 $arr['integral'] = 0;
  285.                 $arr['original_img'] = $line_list[23];
  286.                 $arr['keywords'] = '';
  287.                 $arr['goods_brief'] = '';
  288.                 $arr['goods_desc'] = strip_tags($line_list[24]);
  289.                 $arr['goods_number'] = $line_list[5];
  290.                 $arr['warn_number'] =1;
  291.                 $arr['is_best'] = 0;
  292.                 $arr['is_new'] = 0;
  293.                 $arr['is_hot'] = 0;
  294.                 $arr['is_on_sale'] = 1;
  295.                 $arr['is_alone_sale'] = 0;
  296.                 $arr['is_real'] = 1;
  297.      
  298.                 $goods_list[] = $arr;
  299.             }
  300.         }
  301.         elseif($_POST['data_cat'] == 'taobao46')
  302.         {
  303.             $id_is = 0;
  304.             foreach ($data AS $line)
  305.             {
  306.                 // 跳过第一行
  307.                 if ($line_number == 0)
  308.                 {
  309.                     $line_number++;
  310.                     continue;
  311.                 }
  312.                 if (($_POST['charset'] == 'UTF8') && (strpos(strtolower(EC_CHARSET), 'utf') == 0))
  313.                 {
  314.                     $line = ecs_iconv($_POST['charset'], 'GBK', $line);
  315.                 }
  316.                 // 初始化
  317.                 $arr    = array();
  318.                 $line_list = explode("\t",$line);
  319.                 $arr['goods_name'] = trim($line_list[0],'"');
  320.      
  321.                 $max_id     = $db->getOne("SELECT MAX(goods_id) + $id_is FROM ".$ecs->table('goods'));
  322.                 $id_is++;
  323.                 $goods_sn   = generate_goods_sn($max_id);
  324.                 $arr['goods_sn'] = $goods_sn;
  325.                 $arr['brand_name'] = '';
  326.                 $arr['market_price'] = $line_list[7];
  327.                 $arr['shop_price'] = $line_list[7];
  328.                 $arr['integral'] = 0;
  329.                 $arr['original_img'] = str_replace('"','',$line_list[35]);
  330.                 $arr['keywords'] = '';
  331.                 $arr['goods_brief'] = '';
  332.                 $arr['goods_desc'] = strip_tags($line_list[24]);
  333.                 $arr['goods_desc'] = substr($arr['goods_desc'], 1, -1);
  334.                 $arr['goods_number'] = $line_list[10];
  335.                 $arr['warn_number'] =1;
  336.                 $arr['is_best'] = 0;
  337.                 $arr['is_new'] = 0;
  338.                 $arr['is_hot'] = 0;
  339.                 $arr['is_on_sale'] = 1;
  340.                 $arr['is_alone_sale'] = 0;
  341.                 $arr['is_real'] = 1;
  342.      
  343.                 $goods_list[] = $arr;
  344.             }
  345.         }
  346.      
  347.         $smarty->assign('goods_class', $_LANG['g_class']);
  348.         $smarty->assign('goods_list', $goods_list);
  349.      
  350.         // 字段名称列表
  351.         $smarty->assign('title_list', $_LANG['upload_goods']);
  352.      
  353.         // 显示的字段列表
  354.         $smarty->assign('field_show', array('goods_name' => true, 'goods_sn' => true, 'brand_name' => true, 'original_img' => true, 'goods_img' => true, 'goods_thumb' => true, 'market_price' => true, 'shop_price' => true));
  355.      
  356.         /* 参数赋值 */
  357.         $smarty->assign('ur_here', $_LANG['goods_upload_confirm']);
  358.      
  359.         /* 显示模板 */
  360.         assign_query_info();
  361.         $smarty->display('goods_batch_confirm.htm');
  362.     }
  363.      
  364.     /*------------------------------------------------------ */
  365.     //-- 批量上传:入库
  366.     /*------------------------------------------------------ */
  367.      
  368.     elseif ($_REQUEST['act'] == 'insert')
  369.     {
  370.         /* 检查权限 */
  371.         admin_priv('goods_batch');
  372.      
  373.         if (isset($_POST['checked']))
  374.         {
  375.             include_once(ROOT_PATH . 'includes/cls_image.php');
  376.             $image = new cls_image($_CFG['bgcolor']);
  377.      
  378.             /* 字段默认值 */
  379.             $default_value = array(
  380.                 'brand_id'      => 0,
  381.                 'original_img'  => 0,
  382.                 'goods_img'     => 0,
  383.                 'goods_number'  => 0,
  384.                 'goods_thumb'   => 0,
  385.                 'goods_weight'  => 0,
  386.                 'market_price'  => 0,
  387.                 'shop_price'    => 0,
  388.                 'warn_number'   => 0,
  389.                 'is_real'       => 1,
  390.                 'is_on_sale'    => 1,
  391.                 'is_alone_sale' => 1,
  392.                 'integral'      => 0,
  393.                 'is_best'       => 0,
  394.                 'is_new'        => 0,
  395.                 'is_hot'        => 0,
  396.                 'goods_type'    => 0,
  397.             );
  398.      
  399.             /* 查询品牌列表 */
  400.             $brand_list = array();
  401.             $sql = "SELECT brand_id, brand_name FROM " . $ecs->table('brand');
  402.             $res = $db->query($sql);
  403.             while ($row = $db->fetchRow($res))
  404.             {
  405.                 $brand_list[$row['brand_name']] = $row['brand_id'];
  406.             }
  407.      
  408.             /* 字段列表 */
  409.             $field_list = array_keys($_LANG['upload_goods']);
  410.             $field_list[] = 'goods_class'; //实体或虚拟商品
  411.      
  412.             /* 获取商品good id */
  413.             $max_id = $db->getOne("SELECT MAX(goods_id) + 1 FROM ".$ecs->table('goods'));
  414.      
  415.             /* 循环插入商品数据 */
  416.             foreach ($_POST['checked'] AS $key => $value)
  417.             {
  418.                 // 合并
  419.                 $field_arr = array(
  420.                     'cat_id'        => $_POST['cat'],
  421.                     'add_time'      => gmtime(),
  422.                     'last_update'   => gmtime(),
  423.                 );
  424.      
  425.                 foreach ($field_list AS $field)
  426.                 {
  427.                     // 转换编码
  428.                     $field_value = isset($_POST[$field][$value]) ? $_POST[$field][$value] : '';
  429.      
  430.                     /* 虚拟商品处理 */
  431.                     if ($field == 'goods_class')
  432.                     {
  433.                         $field_value = intval($field_value);
  434.                         if ($field_value == G_CARD)
  435.                         {
  436.                             $field_arr['extension_code'] = 'virtual_card';
  437.                         }
  438.                         continue;
  439.                     }
  440.      
  441.                     // 如果字段值为空,且有默认值,取默认值
  442.                     $field_arr[$field] = !isset($field_value) && isset($default_value[$field]) ? $default_value[$field] : $field_value;
  443.      
  444.                     // 特殊处理
  445.                     if (!empty($field_value))
  446.                     {
  447.                         // 图片路径
  448.                         if (in_array($field, array('original_img', 'goods_img', 'goods_thumb')))
  449.                         {
  450.                             if(strpos($field_value,'|;')>0)
  451.                             {
  452.                                 $field_value=explode(':',$field_value);
  453.                                 $field_value=$field_value['0'];
  454.                                 @copy(ROOT_PATH.'images/'.$field_value.'.tbi',ROOT_PATH.'images/'.$field_value.'.jpg');
  455.                                 if(is_file(ROOT_PATH.'images/'.$field_value.'.jpg'))
  456.                                 {
  457.                                     $field_arr[$field] =$field_value.'.jpg';
  458.                                 }
  459.                             }
  460.                             else
  461.                             {
  462.                                 $field_arr[$field] = $field_value;
  463.                             }
  464.                           }
  465.                         // 品牌
  466.                         elseif ($field == 'brand_name')
  467.                         {
  468.                             if (isset($brand_list[$field_value]))
  469.                             {
  470.                                 $field_arr['brand_id'] = $brand_list[$field_value];
  471.                             }
  472.                             else
  473.                             {
  474.                                 $sql = "INSERT INTO " . $ecs->table('brand') . " (brand_name) VALUES ('" . addslashes($field_value) . "')";
  475.                                 $db->query($sql);
  476.                                 $brand_id = $db->insert_id();
  477.                                 $brand_list[$field_value] = $brand_id;
  478.                                 $field_arr['brand_id'] = $brand_id;
  479.                             }
  480.                         }
  481.                         // 整数型
  482.                         elseif (in_array($field, array('goods_number', 'warn_number', 'integral')))
  483.                         {
  484.                             $field_arr[$field] = intval($field_value);
  485.                         }
  486.                         // 数值型
  487.                         elseif (in_array($field, array('goods_weight', 'market_price', 'shop_price')))
  488.                         {
  489.                             $field_arr[$field] = floatval($field_value);
  490.                         }
  491.                         // bool型
  492.                         elseif (in_array($field, array('is_best', 'is_new', 'is_hot', 'is_on_sale', 'is_alone_sale', 'is_real')))
  493.                         {
  494.                             $field_arr[$field] = intval($field_value) > 0 ? 1 : 0;
  495.                         }
  496.                     }
  497.      
  498.                     if ($field == 'is_real')
  499.                     {
  500.                         $field_arr[$field] = intval($_POST['goods_class'][$key]);
  501.                     }
  502.                 }
  503.      
  504.                 if (empty($field_arr['goods_sn']))
  505.                 {
  506.                     $field_arr['goods_sn'] = generate_goods_sn($max_id);
  507.                 }
  508.      
  509.                 /* 如果是虚拟商品,库存为0 */
  510.                 if ($field_arr['is_real'] == 0)
  511.                 {
  512.                     $field_arr['goods_number'] = 0;
  513.                 }
  514.                 $db->autoExecute($ecs->table('goods'), $field_arr, 'INSERT');
  515.      
  516.                 $max_id = $db->insert_id() + 1;
  517.      
  518.                 /* 如果图片不为空,修改商品图片,插入商品相册*/
  519.      
  520.                 if (!empty($field_arr['original_img']) || !empty($field_arr['goods_img']) || !empty($field_arr['goods_thumb']))
  521.                 {
  522.                     $goods_img     = '';
  523.                     $goods_thumb   = '';
  524.                     $original_img  = '';
  525.                     $goods_gallery = array();
  526.                     $goods_gallery['goods_id'] = $db->insert_id();
  527.      
  528.                     if (!empty($field_arr['original_img']))
  529.                     {
  530.                         //设置商品相册原图和商品相册图
  531.                         if ($_CFG['auto_generate_gallery'])
  532.                         {
  533.                             $ext         = substr($field_arr['original_img'], strrpos($field_arr['original_img'], '.'));
  534.                             $img         = dirname($field_arr['original_img']) . '/' . $image->random_filename() . $ext;
  535.                             $gallery_img = dirname($field_arr['original_img']) . '/' . $image->random_filename() . $ext;
  536.                             @copy(ROOT_PATH . $field_arr['original_img'], ROOT_PATH . $img);
  537.                             @copy(ROOT_PATH . $field_arr['original_img'], ROOT_PATH . $gallery_img);
  538.                             $goods_gallery['img_original'] = reformat_image_name('gallery', $goods_gallery['goods_id'], $img, 'source');
  539.                         }
  540.                         //设置商品原图
  541.                         if ($_CFG['retain_original_img'])
  542.                         {
  543.                             $original_img                  = reformat_image_name('goods', $goods_gallery['goods_id'], $field_arr['original_img'], 'source');
  544.                         }
  545.                         else
  546.                         {
  547.                             @unlink(ROOT_PATH . $field_arr['original_img']);
  548.                         }
  549.                     }
  550.      
  551.                     if (!empty($field_arr['goods_img']))
  552.                     {
  553.                         //设置商品相册图
  554.                         if ($_CFG['auto_generate_gallery'] && !empty($gallery_img))
  555.                         {
  556.                             $goods_gallery['img_url'] = reformat_image_name('gallery', $goods_gallery['goods_id'], $gallery_img, 'goods');
  557.                         }
  558.                         //设置商品图
  559.                         $goods_img                = reformat_image_name('goods', $goods_gallery['goods_id'], $field_arr['goods_img'], 'goods');
  560.                     }
  561.      
  562.                     if (!empty($field_arr['goods_thumb']))
  563.                     {
  564.                         //设置商品相册缩略图
  565.                         if ($_CFG['auto_generate_gallery'])
  566.                         {
  567.                             $ext           = substr($field_arr['goods_thumb'], strrpos($field_arr['goods_thumb'], '.'));
  568.                             $gallery_thumb = dirname($field_arr['goods_thumb']) . '/' . $image->random_filename() . $ext;
  569.                             @copy(ROOT_PATH . $field_arr['goods_thumb'], ROOT_PATH . $gallery_thumb);
  570.                             $goods_gallery['thumb_url'] = reformat_image_name('gallery_thumb', $goods_gallery['goods_id'], $gallery_thumb, 'thumb');
  571.                         }
  572.                         //设置商品缩略图
  573.                         $goods_thumb = reformat_image_name('goods_thumb', $goods_gallery['goods_id'], $field_arr['goods_thumb'], 'thumb');
  574.                     }
  575.      
  576.                     //修改商品图
  577.                     $db->query("UPDATE " . $ecs->table('goods') . " SET goods_img = '$goods_img', goods_thumb = '$goods_thumb', original_img = '$original_img' WHERE goods_id='" . $goods_gallery['goods_id'] . "'");
  578.      
  579.                     //添加商品相册图
  580.                     if ($_CFG['auto_generate_gallery'])
  581.                     {
  582.                         $db->autoExecute($ecs->table('goods_gallery'), $goods_gallery, 'INSERT');
  583.                     }
  584.                 }
  585.      
  586.             }
  587.         }
  588.      
  589.         // 记录日志
  590.         admin_log('', 'batch_upload', 'goods');
  591.      
  592.         /* 显示提示信息,返回商品列表 */
  593.         $link[] = array('href' => 'goods.php?act=list', 'text' => $_LANG['01_goods_list']);
  594.         sys_msg($_LANG['batch_upload_ok'], 0, $link);
  595.     }
  596.      
  597.     /*------------------------------------------------------ */
  598.     //-- 批量修改:选择商品
  599.     /*------------------------------------------------------ */
  600.      
  601.     elseif ($_REQUEST['act'] == 'select')
  602.     {
  603.         /* 检查权限 */
  604.         admin_priv('goods_batch');
  605.      
  606.         /* 取得分类列表 */
  607.         $smarty->assign('cat_list', cat_list());
  608.      
  609.         /* 取得品牌列表 */
  610.         $smarty->assign('brand_list', get_brand_list());
  611.      
  612.         /* 参数赋值 */
  613.         $ur_here = $_LANG['15_batch_edit'];
  614.         $smarty->assign('ur_here', $ur_here);
  615.      
  616.         /* 显示模板 */
  617.         assign_query_info();
  618.         $smarty->display('goods_batch_select.htm');
  619.     }
  620.      
  621.     /*------------------------------------------------------ */
  622.     //-- 批量修改:修改
  623.     /*------------------------------------------------------ */
  624.      
  625.     elseif ($_REQUEST['act'] == 'edit')
  626.     {
  627.         /* 检查权限 */
  628.         admin_priv('goods_batch');
  629.      
  630.         /* 取得商品列表 */
  631.         if ($_POST['select_method'] == 'cat')
  632.         {
  633.             $where = " WHERE goods_id " . db_create_in($_POST['goods_ids']);
  634.         }
  635.         else
  636.         {
  637.             $goods_sns = str_replace("\n", ',', str_replace("\r", '', $_POST['sn_list']));
  638.             $sql = "SELECT DISTINCT goods_id FROM " . $ecs->table('goods') .
  639.                     " WHERE goods_sn " . db_create_in($goods_sns);
  640.             $goods_ids = join(',', $db->getCol($sql));
  641.             $where = " WHERE goods_id " . db_create_in($goods_ids);
  642.         }
  643.         $sql = "SELECT DISTINCT goods_id, goods_sn, goods_name, market_price, shop_price, goods_number, integral, give_integral, brand_id, is_real FROM " . $ecs->table('goods') . $where;
  644.         $smarty->assign('goods_list', $db->getAll($sql));
  645.      
  646.         /* 取编辑商品的货品列表 */
  647.         $product_exists = false;
  648.         $sql = "SELECT * FROM " . $ecs->table('products') . $where;
  649.         $product_list = $db->getAll($sql);
  650.      
  651.         if (!empty($product_list))
  652.         {
  653.             $product_exists = true;
  654.             $_product_list = array();
  655.             foreach ($product_list as $value)
  656.             {
  657.                 $goods_attr = product_goods_attr_list($value['goods_id']);
  658.                 $_goods_attr_array = explode('|', $value['goods_attr']);
  659.                 if (is_array($_goods_attr_array))
  660.                 {
  661.                     $_temp = '';
  662.                     foreach ($_goods_attr_array as $_goods_attr_value)
  663.                     {
  664.                          $_temp[] = $goods_attr[$_goods_attr_value];
  665.                     }
  666.                     $value['goods_attr'] = implode(',', $_temp);
  667.                 }
  668.      
  669.                 $_product_list[$value['goods_id']][] = $value;
  670.             }
  671.             $smarty->assign('product_list', $_product_list);
  672.      
  673.             //释放资源
  674.             unset($product_list, $sql, $_product_list);
  675.         }
  676.      
  677.         $smarty->assign('product_exists', $product_exists);
  678.      
  679.         /* 取得会员价格 */
  680.         $member_price_list = array();
  681.         $sql = "SELECT DISTINCT goods_id, user_rank, user_price FROM " . $ecs->table('member_price') . $where;
  682.         $res = $db->query($sql);
  683.         while ($row = $db->fetchRow($res))
  684.         {
  685.             $member_price_list[$row['goods_id']][$row['user_rank']] = $row['user_price'];
  686.         }
  687.         $smarty->assign('member_price_list', $member_price_list);
  688.      
  689.         /* 取得会员等级 */
  690.         $sql = "SELECT rank_id, rank_name, discount " .
  691.                 "FROM " . $ecs->table('user_rank') .
  692.                 " ORDER BY discount DESC";
  693.         $smarty->assign('rank_list', $db->getAll($sql));
  694.      
  695.         /* 取得品牌列表 */
  696.         $smarty->assign('brand_list', get_brand_list());
  697.      
  698.         /* 赋值编辑方式 */
  699.         $smarty->assign('edit_method', $_POST['edit_method']);
  700.      
  701.         /* 参数赋值 */
  702.         $ur_here = $_LANG['15_batch_edit'];
  703.         $smarty->assign('ur_here', $ur_here);
  704.      
  705.         /* 显示模板 */
  706.         assign_query_info();
  707.         $smarty->display('goods_batch_edit.htm');
  708.     }
  709.      
  710.     /*------------------------------------------------------ */
  711.     //-- 批量修改:提交
  712.     /*------------------------------------------------------ */
  713.      
  714.     elseif ($_REQUEST['act'] == 'update')
  715.     {
  716.         /* 检查权限 */
  717.         admin_priv('goods_batch');
  718.      
  719.         if ($_POST['edit_method'] == 'each')
  720.         {
  721.             // 循环更新每个商品
  722.             if (!empty($_POST['goods_id']))
  723.             {
  724.                 foreach ($_POST['goods_id'] AS $goods_id)
  725.                 {
  726.                     //如果存在货品则处理货品
  727.                     if (!empty($_POST['product_number'][$goods_id]))
  728.                     {
  729.                         $_POST['goods_number'][$goods_id] = 0;
  730.                         foreach ($_POST['product_number'][$goods_id] as $key => $value)
  731.                         {
  732.                             $db->autoExecute($ecs->table('products'), array('product_number', $value), 'UPDATE', "goods_id = '$goods_id' AND product_id = " . $key);
  733.      
  734.                             $_POST['goods_number'][$goods_id] += $value;
  735.                         }
  736.                     }
  737.      
  738.                     // 更新商品
  739.                     $goods = array(
  740.                         'market_price'  => floatval($_POST['market_price'][$goods_id]),
  741.                         'shop_price'    => floatval($_POST['shop_price'][$goods_id]),
  742.                         'integral'      => intval($_POST['integral'][$goods_id]),
  743.                         'give_integral'      => intval($_POST['give_integral'][$goods_id]),
  744.                         'goods_number'  => intval($_POST['goods_number'][$goods_id]),
  745.                         'brand_id'      => intval($_POST['brand_id'][$goods_id]),
  746.                         'last_update'   => gmtime(),
  747.                     );
  748.                     $db->autoExecute($ecs->table('goods'), $goods, 'UPDATE', "goods_id = '$goods_id'");
  749.      
  750.                     // 更新会员价格
  751.                     if (!empty($_POST['rank_id']))
  752.                     {
  753.                         foreach ($_POST['rank_id'] AS $rank_id)
  754.                         {
  755.                             if (trim($_POST['member_price'][$goods_id][$rank_id]) == '')
  756.                             {
  757.                                 /* 为空时不做处理 */
  758.                                 continue;
  759.                             }
  760.      
  761.                             $rank = array(
  762.                                 'goods_id'  => $goods_id,
  763.                                 'user_rank' => $rank_id,
  764.                                 'user_price'=> floatval($_POST['member_price'][$goods_id][$rank_id]),
  765.                             );
  766.                             $sql = "SELECT COUNT(*) FROM " . $ecs->table('member_price') . " WHERE goods_id = '$goods_id' AND user_rank = '$rank_id'";
  767.                             if ($db->getOne($sql) > 0)
  768.                             {
  769.                                 if ($rank['user_price'] < 0)
  770.                                 {
  771.                                     $db->query("DELETE FROM " . $ecs->table('member_price') . " WHERE goods_id = '$goods_id' AND user_rank = '$rank_id'");
  772.                                 }
  773.                                 else
  774.                                 {
  775.                                     $db->autoExecute($ecs->table('member_price'), $rank, 'UPDATE', "goods_id = '$goods_id' AND user_rank = '$rank_id'");
  776.                                 }
  777.      
  778.                             }
  779.                             else
  780.                             {
  781.                                 if ($rank['user_price'] >= 0)
  782.                                 {
  783.                                     $db->autoExecute($ecs->table('member_price'), $rank, 'INSERT');
  784.                                 }
  785.                             }
  786.                         }
  787.                     }
  788.                 }
  789.             }
  790.         }
  791.         else
  792.         {
  793.             // 循环更新每个商品
  794.             if (!empty($_POST['goods_id']))
  795.             {
  796.                 foreach ($_POST['goods_id'] AS $goods_id)
  797.                 {
  798.                     // 更新商品
  799.                     $goods = array();
  800.                     if (trim($_POST['market_price'] != ''))
  801.                     {
  802.                         $goods['market_price'] = floatval($_POST['market_price']);
  803.                     }
  804.                     if (trim($_POST['shop_price']) != '')
  805.                     {
  806.                         $goods['shop_price'] = floatval($_POST['shop_price']);
  807.                     }
  808.                     if (trim($_POST['integral']) != '')
  809.                     {
  810.                         $goods['integral'] = intval($_POST['integral']);
  811.                     }
  812.                     if (trim($_POST['give_integral']) != '')
  813.                     {
  814.                         $goods['give_integral'] = intval($_POST['give_integral']);
  815.                     }
  816.                     if (trim($_POST['goods_number']) != '')
  817.                     {
  818.                         $goods['goods_number'] = intval($_POST['goods_number']);
  819.                     }
  820.                     if ($_POST['brand_id'] > 0)
  821.                     {
  822.                         $goods['brand_id'] = $_POST['brand_id'];
  823.                     }
  824.                     if (!empty($goods))
  825.                     {
  826.                         $db->autoExecute($ecs->table('goods'), $goods, 'UPDATE', "goods_id = '$goods_id'");
  827.                     }
  828.      
  829.                     // 更新会员价格
  830.                     if (!empty($_POST['rank_id']))
  831.                     {
  832.                         foreach ($_POST['rank_id'] AS $rank_id)
  833.                         {
  834.                             if (trim($_POST['member_price'][$rank_id]) != '')
  835.                             {
  836.                                 $rank = array(
  837.                                             'goods_id'  => $goods_id,
  838.                                             'user_rank' => $rank_id,
  839.                                             'user_price'=> floatval($_POST['member_price'][$rank_id]),
  840.                                             );
  841.      
  842.                                 $sql = "SELECT COUNT(*) FROM " . $ecs->table('member_price') . " WHERE goods_id = '$goods_id' AND user_rank = '$rank_id'";
  843.                                 if ($db->getOne($sql) > 0)
  844.                                 {
  845.                                     if ($rank['user_price'] < 0)
  846.                                     {
  847.                                         $db->query("DELETE FROM " . $ecs->table('member_price') . " WHERE goods_id = '$goods_id' AND user_rank = '$rank_id'");
  848.                                     }
  849.                                     else
  850.                                     {
  851.                                         $db->autoExecute($ecs->table('member_price'), $rank, 'UPDATE', "goods_id = '$goods_id' AND user_rank = '$rank_id'");
  852.                                     }
  853.      
  854.                                 }
  855.                                 else
  856.                                 {
  857.                                     if ($rank['user_price'] >= 0)
  858.                                     {
  859.                                         $db->autoExecute($ecs->table('member_price'), $rank, 'INSERT');
  860.                                     }
  861.                                 }
  862.                             }
  863.                         }
  864.                     }
  865.                 }
  866.             }
  867.         }
  868.      
  869.         // 记录日志
  870.         admin_log('', 'batch_edit', 'goods');
  871.      
  872.         // 提示成功
  873.         $link[] = array('href' => 'goods_batch.php?act=select', 'text' => $_LANG['15_batch_edit']);
  874.         sys_msg($_LANG['batch_edit_ok'], 0, $link);
  875.     }
  876.      
  877.     /*------------------------------------------------------ */
  878.     //-- 下载文件
  879.     /*------------------------------------------------------ */
  880.      
  881.     elseif ($_REQUEST['act'] == 'download')
  882.     {
  883.         /* 检查权限 */
  884.         admin_priv('goods_batch');
  885.      
  886.         // 文件标签
  887.         // Header("Content-type: application/octet-stream");
  888.         header("Content-type: application/vnd.ms-excel; charset=utf-8");
  889.         Header("Content-Disposition: attachment; filename=goods_list.csv");
  890.      
  891.         // 下载
  892.         if ($_GET['charset'] != $_CFG['lang'])
  893.         {
  894.             $lang_file = '../languages/' . $_GET['charset'] . '/admin/goods_batch.php';
  895.             if (file_exists($lang_file))
  896.             {
  897.                 unset($_LANG['upload_goods']);
  898.                 require($lang_file);
  899.             }
  900.         }
  901.         if (isset($_LANG['upload_goods']))
  902.         {
  903.             /* 创建字符集转换对象 */
  904.             if ($_GET['charset'] == 'zh_cn' || $_GET['charset'] == 'zh_tw')
  905.             {
  906.                 $to_charset = $_GET['charset'] == 'zh_cn' ? 'GB2312' : 'BIG5';
  907.                 echo ecs_iconv(EC_CHARSET, $to_charset, join(',', $_LANG['upload_goods']));
  908.             }
  909.             else
  910.             {
  911.                 echo join(',', $_LANG['upload_goods']);
  912.             }
  913.         }
  914.         else
  915.         {
  916.             echo 'error: $_LANG[upload_goods] not exists';
  917.         }
  918.     }
  919.      
  920.     /*------------------------------------------------------ */
  921.     //-- 取得商品
  922.     /*------------------------------------------------------ */
  923.      
  924.     elseif ($_REQUEST['act'] == 'get_goods')
  925.     {
  926.         $filter = &new stdclass;
  927.      
  928.         $filter->cat_id = intval($_GET['cat_id']);
  929.         $filter->brand_id = intval($_GET['brand_id']);
  930.         $filter->real_goods = -1;
  931.         $arr = get_goods_list($filter);
  932.      
  933.         make_json_result($arr);
  934.     }
  935.      
  936.     ?>

复制代码




回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

a

QQ|小黑屋|手机版|Archiver|博思互联建站网 ( 蜀ICP备09002004号-1 )

GMT+8, 2024-3-29 02:24 , Processed in 0.092108 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表