📄 lib_goods.php
字号:
}
if (!empty($row['thumb_url']))
{
@unlink('../' . $row['thumb_url']);
}
if (!empty($row['img_original']))
{
@unlink('../' . $row['img_original']);
}
}
/* 删除商品相册 */
$sql = "DELETE FROM " . $GLOBALS['ecs']->table('goods_gallery') . " WHERE goods_id " . db_create_in($goods_id);
$GLOBALS['db']->query($sql);
/* 删除相关表记录 */
$sql = "DELETE FROM " . $GLOBALS['ecs']->table('collect_goods') . " WHERE goods_id " . db_create_in($goods_id);
$GLOBALS['db']->query($sql);
$sql = "DELETE FROM " . $GLOBALS['ecs']->table('goods_article') . " WHERE goods_id " . db_create_in($goods_id);
$GLOBALS['db']->query($sql);
$sql = "DELETE FROM " . $GLOBALS['ecs']->table('goods_attr') . " WHERE goods_id " . db_create_in($goods_id);
$GLOBALS['db']->query($sql);
$sql = "DELETE FROM " . $GLOBALS['ecs']->table('goods_cat') . " WHERE goods_id " . db_create_in($goods_id);
$GLOBALS['db']->query($sql);
$sql = "DELETE FROM " . $GLOBALS['ecs']->table('member_price') . " WHERE goods_id " . db_create_in($goods_id);
$GLOBALS['db']->query($sql);
$sql = "DELETE FROM " . $GLOBALS['ecs']->table('group_goods') . " WHERE parent_id " . db_create_in($goods_id);
$GLOBALS['db']->query($sql);
$sql = "DELETE FROM " . $GLOBALS['ecs']->table('group_goods') . " WHERE goods_id " . db_create_in($goods_id);
$GLOBALS['db']->query($sql);
$sql = "DELETE FROM " . $GLOBALS['ecs']->table('link_goods') . " WHERE goods_id " . db_create_in($goods_id);
$GLOBALS['db']->query($sql);
$sql = "DELETE FROM " . $GLOBALS['ecs']->table('link_goods') . " WHERE link_goods_id " . db_create_in($goods_id);
$GLOBALS['db']->query($sql);
$sql = "DELETE FROM " . $GLOBALS['ecs']->table('tag') . " WHERE goods_id " . db_create_in($goods_id);
$GLOBALS['db']->query($sql);
$sql = "DELETE FROM " . $GLOBALS['ecs']->table('comment') . " WHERE comment_type = 0 AND id_value " . db_create_in($goods_id);
$GLOBALS['db']->query($sql);
/* 删除相应虚拟商品记录 */
$sql = "DELETE FROM " . $GLOBALS['ecs']->table('virtual_card') . " WHERE goods_id " . db_create_in($goods_id);
if (!$GLOBALS['db']->query($sql, 'SILENT') && $GLOBALS['db']->errno() != 1146)
{
die($GLOBALS['db']->error());
}
/* 清除缓存 */
clear_cache_files();
}
/**
* 为某商品生成唯一的货号
* @param int $goods_id 商品编号
* @return string 唯一的货号
*/
function generate_goods_sn($goods_id)
{
$goods_sn = $GLOBALS['_CFG']['sn_prefix'] . str_repeat('0', 6 - strlen($goods_id)) . $goods_id;
$sql = "SELECT goods_sn FROM " . $GLOBALS['ecs']->table('goods') .
" WHERE goods_sn LIKE '" . mysql_like_quote($goods_sn) . "%' AND goods_id <> '$goods_id' " .
" ORDER BY LENGTH(goods_sn) DESC";
$sn_list = $GLOBALS['db']->getCol($sql);
if (in_array($goods_sn, $sn_list))
{
$max = pow(10, strlen($sn_list[0]) - strlen($goods_sn) + 1) - 1;
$new_sn = $goods_sn . mt_rand(0, $max);
while (in_array($new_sn, $sn_list))
{
$new_sn = $goods_sn . mt_rand(0, $max);
}
$goods_sn = $new_sn;
}
return $goods_sn;
}
/**
* 取得通用属性和某分类的属性,以及某商品的属性值
* @param int $cat_id 分类编号
* @param int $goods_id 商品编号
* @return array 规格与属性列表
*/
function get_attr_list($cat_id, $goods_id = 0)
{
if (empty($cat_id))
{
$sql = "SELECT cat_id FROM " .$GLOBALS['ecs']->table('goods_type'). " LIMIT 1";
$cat_id = $GLOBALS['db']->getOne($sql);
}
// 查询属性值及商品的属性值
$sql = "SELECT a.attr_id, a.attr_name, a.attr_input_type, a.attr_type, a.attr_values, v.attr_value, v.attr_price ".
"FROM " .$GLOBALS['ecs']->table('attribute'). " AS a ".
"LEFT JOIN " .$GLOBALS['ecs']->table('goods_attr'). " AS v ".
"ON v.attr_id = a.attr_id AND v.goods_id = '$goods_id' ".
"WHERE a.cat_id = " . intval($cat_id) ." OR a.cat_id = 0 ".
"ORDER BY a.sort_order, a.attr_type, a.attr_id, v.attr_price, v.goods_attr_id";
$row = $GLOBALS['db']->GetAll($sql);
return $row;
}
/**
* 根据属性数组创建属性的表单
*
* @access public
* @param int $cat_id 分类编号
* @param int $goods_id 商品编号
* @return string
*/
function build_attr_html($cat_id, $goods_id = 0)
{
$attr = get_attr_list($cat_id, $goods_id);
$html = '<table width="100%" id="attrTable">';
$spec = 0;
foreach ($attr AS $key => $val)
{
$html .= "<tr><td class='label'>";
if ($val['attr_type'] == 1 || $val['attr_type'] == 2)
{
$html .= ($spec != $val['attr_id']) ?
"<a href='javascript:;' onclick='addSpec(this)'>[+]</a>" :
"<a href='javascript:;' onclick='removeSpec(this)'>[-]</a>";
$spec = $val['attr_id'];
};
$html .= "$val[attr_name]</td><td><input type='hidden' name='attr_id_list[]' value='$val[attr_id]' />";
if ($val['attr_input_type'] == 0)
{
$html .= '<input name="attr_value_list[]" type="text" value="' .htmlspecialchars($val['attr_value']). '" size="40" /> ';
}
elseif ($val['attr_input_type'] == 2)
{
$html .= '<textarea name="attr_value_list[]" rows="3" cols="40">' .htmlspecialchars($val['attr_value']). '</textarea>';
}
else
{
$html .= '<select name="attr_value_list[]">';
$html .= '<option value="">' .$GLOBALS['_LANG']['select_please']. '</option>';
$attr_values = explode("\n", $val['attr_values']);
foreach ($attr_values AS $opt)
{
$opt = trim(htmlspecialchars($opt));
$html .= ($val['attr_value'] != $opt) ?
'<option value="' . $opt . '">' . $opt . '</option>' :
'<option value="' . $opt . '" selected="selected">' . $opt . '</option>';
}
$html .= '</select> ';
}
$html .= ($val['attr_type'] == 1 || $val['attr_type'] == 2) ?
$GLOBALS['_LANG']['spec_price'].' <input type="text" name="attr_price_list[]" value="' . $val['attr_price'] . '" size="5" maxlength="10" />' :
' <input type="hidden" name="attr_price_list[]" value="0" />';
$html .= '</td></tr>';
}
$html .= '</table>';
return $html;
}
/**
* 获得指定商品相关的商品
*
* @access public
* @param integer $goods_id
* @return array
*/
function get_linked_goods($goods_id)
{
$sql = "SELECT lg.link_goods_id AS goods_id, g.goods_name, lg.is_double " .
"FROM " . $GLOBALS['ecs']->table('link_goods') . " AS lg, " .
$GLOBALS['ecs']->table('goods') . " AS g " .
"WHERE lg.goods_id = '$goods_id' " .
"AND lg.link_goods_id = g.goods_id ";
if ($goods_id == 0)
{
$sql .= " AND lg.admin_id = '$_SESSION[admin_id]'";
}
$row = $GLOBALS['db']->getAll($sql);
foreach ($row AS $key => $val)
{
$linked_type = $val['is_double'] == 0 ? $GLOBALS['_LANG']['single'] : $GLOBALS['_LANG']['double'];
$row[$key]['goods_name'] = $val['goods_name'] . " -- [$linked_type]";
unset($row[$key]['is_double']);
}
return $row;
}
/**
* 获得指定商品的配件
*
* @access public
* @param integer $goods_id
* @return array
*/
function get_group_goods($goods_id)
{
$sql = "SELECT gg.goods_id, CONCAT(g.goods_name, ' -- [', gg.goods_price, ']') AS goods_name " .
"FROM " . $GLOBALS['ecs']->table('group_goods') . " AS gg, " .
$GLOBALS['ecs']->table('goods') . " AS g " .
"WHERE gg.parent_id = '$goods_id' " .
"AND gg.goods_id = g.goods_id ";
if ($goods_id == 0)
{
$sql .= " AND gg.admin_id = '$_SESSION[admin_id]'";
}
$row = $GLOBALS['db']->getAll($sql);
return $row;
}
/**
* 获得商品的关联文章
*
* @access public
* @param integer $goods_id
* @return array
*/
function get_goods_articles($goods_id)
{
$sql = "SELECT g.article_id, a.title " .
"FROM " .$GLOBALS['ecs']->table('goods_article') . " AS g, " .
$GLOBALS['ecs']->table('article') . " AS a " .
"WHERE g.goods_id = '$goods_id' " .
"AND g.article_id = a.article_id ";
if ($goods_id == 0)
{
$sql .= " AND g.admin_id = '$_SESSION[admin_id]'";
}
$row = $GLOBALS['db']->getAll($sql);
return $row;
}
/**
* 获得商品列表
*
* @access public
* @params integer $isdelete
* @params integer $real_goods
* @return array
*/
function goods_list($is_delete, $real_goods=1)
{
/* 过滤条件 */
$param_str = '-' . $is_delete . '-' . $real_goods;
$result = get_filter($param_str);
if ($result === false)
{
$day = getdate();
$today = local_mktime(23, 59, 59, $day['mon'], $day['mday'], $day['year']);
$filter['cat_id'] = empty($_REQUEST['cat_id']) ? 0 : intval($_REQUEST['cat_id']);
$filter['intro_type'] = empty($_REQUEST['intro_type']) ? '' : trim($_REQUEST['intro_type']);
$filter['is_promote'] = empty($_REQUEST['is_promote']) ? 0 : intval($_REQUEST['is_promote']);
$filter['stock_warning'] = empty($_REQUEST['stock_warning']) ? 0 : intval($_REQUEST['stock_warning']);
$filter['brand_id'] = empty($_REQUEST['brand_id']) ? 0 : intval($_REQUEST['brand_id']);
$filter['keyword'] = empty($_REQUEST['keyword']) ? '' : trim($_REQUEST['keyword']);
if ($_REQUEST['is_ajax'] == 1)
{
$filter['keyword'] = json_str_iconv($filter['keyword']);
}
$filter['sort_by'] = empty($_REQUEST['sort_by']) ? 'goods_id' : trim($_REQUEST['sort_by']);
$filter['sort_order'] = empty($_REQUEST['sort_order']) ? 'DESC' : trim($_REQUEST['sort_order']);
$filter['extension_code'] = empty($_REQUEST['extension_code']) ? '' : trim($_REQUEST['extension_code']);
$filter['is_delete'] = $is_delete;
$filter['real_goods'] = $real_goods;
$where = $filter['cat_id'] > 0 ? " AND " . get_children($filter['cat_id']) : '';
/* 推荐类型 */
switch ($filter['intro_type'])
{
case 'is_best':
$where .= " AND is_best=1";
break;
case 'is_hot':
$where .= ' AND is_hot=1';
break;
case 'is_new':
$where .= ' AND is_new=1';
break;
case 'is_promote':
$where .= " AND is_promote = 1 AND promote_price > 0 AND promote_start_date <= '$today' AND promote_end_date >= '$today'";
break;
case 'all_type';
$where .= " AND (is_best=1 OR is_hot=1 OR is_new=1 OR (is_promote = 1 AND promote_price > 0 AND promote_start_date <= '" . $today . "' AND promote_end_date >= '" . $today . "'))";
}
/* 库存警告 */
if ($filter['stock_warning'])
{
$where .= ' AND goods_number <= warn_number ';
}
/* 品牌 */
if ($filter['brand_id'])
{
$where .= " AND brand_id='$filter[brand_id]'";
}
/* 扩展 */
if ($filter['extension_code'])
{
$where .= " AND extension_code='$filter[extension_code]'";
}
/* 关键字 */
if (!empty($filter['keyword']))
{
$where .= " AND (goods_sn LIKE '%" . mysql_like_quote($filter['keyword']) . "%' OR goods_name LIKE '%" . mysql_like_quote($filter['keyword']) . "%')";
}
if ($real_goods > -1)
{
$where .= " AND is_real='$real_goods'";
}
/* 记录总数 */
$sql = "SELECT COUNT(*) FROM " .$GLOBALS['ecs']->table('goods'). " AS g WHERE is_delete='$is_delete' $where";
$filter['record_count'] = $GLOBALS['db']->getOne($sql);
/* 分页大小 */
$filter = page_and_size($filter);
$sql = "SELECT goods_id, goods_name, goods_sn, shop_price, is_on_sale, is_best, is_new, is_hot, sort_order, goods_number, integral, " .
" (promote_price > 0 AND promote_start_date <= '$today' AND promote_end_date >= '$today') AS is_promote ".
" FROM " . $GLOBALS['ecs']->table('goods') . " AS g WHERE is_delete='$is_delete' $where" .
" ORDER BY $filter[sort_by] $filter[sort_order] ".
" LIMIT " . $filter['start'] . ",$filter[page_size]";
$filter['keyword'] = stripslashes($filter['keyword']);
set_filter($filter, $sql, $param_str);
}
else
{
$sql = $result['sql'];
$filter = $result['filter'];
}
$row = $GLOBALS['db']->getAll($sql);
return array('goods' => $row, 'filter' => $filter, 'page_count' => $filter['page_count'], 'record_count' => $filter['record_count']);
}
/**
* 格式化商品图片名称(按目录存储)
*
*/
function reformat_image_name($type, $goods_id, $source_img, $position='')
{
$rand_name = gmtime() . sprintf("%03d", mt_rand(1,999));
$img_ext = substr($source_img, strrpos($source_img, '.'));
$dir = 'images';
if (defined('IMAGE_DIR'))
{
$dir = IMAGE_DIR;
}
$sub_dir = date('Ym', gmtime());
if (!make_dir(ROOT_PATH.$dir.'/'.$sub_dir))
{
return false;
}
if (!make_dir(ROOT_PATH.$dir.'/'.$sub_dir.'/source_img'))
{
return false;
}
if (!make_dir(ROOT_PATH.$dir.'/'.$sub_dir.'/goods_img'))
{
return false;
}
if (!make_dir(ROOT_PATH.$dir.'/'.$sub_dir.'/thumb_img'))
{
return false;
}
switch($type)
{
case 'goods':
$img_name = $goods_id . '_G_' . $rand_name;
break;
case 'goods_thumb':
$img_name = $goods_id . '_thumb_G_' . $rand_name;
break;
case 'gallery':
$img_name = $goods_id . '_P_' . $rand_name;
break;
case 'gallery_thumb':
$img_name = $goods_id . '_thumb_P_' . $rand_name;
break;
}
if ($position == 'source')
{
if (move_image_file(ROOT_PATH.$source_img, ROOT_PATH.$dir.'/'.$sub_dir.'/source_img/'.$img_name.$img_ext))
{
return $dir.'/'.$sub_dir.'/source_img/'.$img_name.$img_ext;
}
}
elseif ($position == 'thumb')
{
if (move_image_file(ROOT_PATH.$source_img, ROOT_PATH.$dir.'/'.$sub_dir.'/thumb_img/'.$img_name.$img_ext))
{
return $dir.'/'.$sub_dir.'/thumb_img/'.$img_name.$img_ext;
}
}
else
{
if (move_image_file(ROOT_PATH.$source_img, ROOT_PATH.$dir.'/'.$sub_dir.'/goods_img/'.$img_name.$img_ext))
{
return $dir.'/'.$sub_dir.'/goods_img/'.$img_name.$img_ext;
}
}
return false;
}
function move_image_file($source, $dest)
{
if (@copy($source, $dest))
{
@unlink($source);
return true;
}
return false;
}
?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -