bnbweb/admin/includes/lib_homestay.php
2022-11-15 01:31:15 +08:00

1270 lines
38 KiB
PHP
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
if (!defined('IN_ECS'))
{
die('Hacking attempt');
}
/**
* 取得推荐类型列表
* @return array 推荐类型列表
*/
function get_intro_list()
{
return array(
'is_best' => $GLOBALS['_LANG']['is_best'],
'is_new' => $GLOBALS['_LANG']['is_new'],
'is_hot' => $GLOBALS['_LANG']['is_hot'],
'is_promote' => $GLOBALS['_LANG']['is_promote'],
'all_type' => $GLOBALS['_LANG']['all_type'],
);
}
/**
* 取得重量单位列表
* @return array 重量单位列表
*/
function get_unit_list()
{
return array(
'1' => $GLOBALS['_LANG']['unit_kg'],
'0.001' => $GLOBALS['_LANG']['unit_g'],
);
}
/**
* 取得会员等级列表
* @return array 会员等级列表
*/
function get_user_rank_list()
{
$sql = "SELECT * FROM " . $GLOBALS['ecs']->table('user_rank') .
" ORDER BY min_points";
return $GLOBALS['db']->getAll($sql);
}
/**
* 取得某商品的会员价格列表
* @param int $goods_id 商品编号
* @return array 会员价格列表 user_rank => user_price
*/
function get_member_price_list($goods_id)
{
/* 取得会员价格 */
$price_list = array();
$sql = "SELECT user_rank, user_price FROM " .
$GLOBALS['ecs']->table('member_price') .
" WHERE goods_id = '$goods_id'";
$res = $GLOBALS['db']->query($sql);
while ($row = $GLOBALS['db']->fetchRow($res))
{
$price_list[$row['user_rank']] = $row['user_price'];
}
return $price_list;
}
/**
* 插入或更新商品属性
*
* @param int $goods_id 商品编号
* @param array $id_list 属性编号数组
* @param array $is_spec_list 是否规格数组 'true' | 'false'
* @param array $value_price_list 属性值数组
* @return array 返回受到影响的goods_attr_id数组
*/
function handle_goods_attr($goods_id, $id_list, $is_spec_list, $value_price_list)
{
$goods_attr_id = array();
/* 循环处理每个属性 */
foreach ($id_list AS $key => $id)
{
$is_spec = $is_spec_list[$key];
if ($is_spec == 'false')
{
$value = $value_price_list[$key];
$price = '';
}
else
{
$value_list = array();
$price_list = array();
if ($value_price_list[$key])
{
$vp_list = explode(chr(13), $value_price_list[$key]);
foreach ($vp_list AS $v_p)
{
$arr = explode(chr(9), $v_p);
$value_list[] = $arr[0];
$price_list[] = $arr[1];
}
}
$value = join(chr(13), $value_list);
$price = join(chr(13), $price_list);
}
// 插入或更新记录
$sql = "SELECT goods_attr_id FROM " . $GLOBALS['ecs']->table('goods_attr') . " WHERE goods_id = '$goods_id' AND attr_id = '$id' AND attr_value = '$value' LIMIT 0, 1";
$result_id = $GLOBALS['db']->getOne($sql);
if (!empty($result_id))
{
$sql = "UPDATE " . $GLOBALS['ecs']->table('goods_attr') . "
SET attr_value = '$value'
WHERE goods_id = '$goods_id'
AND attr_id = '$id'
AND goods_attr_id = '$result_id'";
$goods_attr_id[$id] = $result_id;
}
else
{
$sql = "INSERT INTO " . $GLOBALS['ecs']->table('goods_attr') . " (goods_id, attr_id, attr_value, attr_price) " .
"VALUES ('$goods_id', '$id', '$value', '$price')";
}
$GLOBALS['db']->query($sql);
if ($goods_attr_id[$id] == '')
{
$goods_attr_id[$id] = $GLOBALS['db']->insert_id();
}
}
return $goods_attr_id;
}
/**
* 保存某商品的会员价格
* @param int $goods_id 商品编号
* @param array $rank_list 等级列表
* @param array $price_list 价格列表
* @return void
*/
function handle_member_price($goods_id, $rank_list, $price_list)
{
/* 循环处理每个会员等级 */
foreach ($rank_list AS $key => $rank)
{
/* 会员等级对应的价格 */
$price = $price_list[$key];
// 插入或更新记录
$sql = "SELECT COUNT(*) FROM " . $GLOBALS['ecs']->table('member_price') .
" WHERE goods_id = '$goods_id' AND user_rank = '$rank'";
if ($GLOBALS['db']->getOne($sql) > 0)
{
/* 如果会员价格是小于0则删除原来价格不是则更新为新的价格 */
if ($price < 0)
{
$sql = "DELETE FROM " . $GLOBALS['ecs']->table('member_price') .
" WHERE goods_id = '$goods_id' AND user_rank = '$rank' LIMIT 1";
}
else
{
$sql = "UPDATE " . $GLOBALS['ecs']->table('member_price') .
" SET user_price = '$price' " .
"WHERE goods_id = '$goods_id' " .
"AND user_rank = '$rank' LIMIT 1";
}
}
else
{
if ($price == -1)
{
$sql = '';
}
else
{
$sql = "INSERT INTO " . $GLOBALS['ecs']->table('member_price') . " (goods_id, user_rank, user_price) " .
"VALUES ('$goods_id', '$rank', '$price')";
}
}
if ($sql)
{
$GLOBALS['db']->query($sql);
}
}
}
/**
* 保存某商品的扩展分类
* @param int $goods_id 商品编号
* @param array $cat_list 分类编号数组
* @return void
*/
function handle_other_cat($goods_id, $cat_list)
{
/* 查询现有的扩展分类 */
$sql = "SELECT cat_id FROM " . $GLOBALS['ecs']->table('goods_cat') .
" WHERE goods_id = '$goods_id'";
$exist_list = $GLOBALS['db']->getCol($sql);
/* 删除不再有的分类 */
$delete_list = array_diff($exist_list, $cat_list);
if ($delete_list)
{
$sql = "DELETE FROM " . $GLOBALS['ecs']->table('goods_cat') .
" WHERE goods_id = '$goods_id' " .
"AND cat_id " . db_create_in($delete_list);
$GLOBALS['db']->query($sql);
}
/* 添加新加的分类 */
$add_list = array_diff($cat_list, $exist_list, array(0));
foreach ($add_list AS $cat_id)
{
// 插入记录
$sql = "INSERT INTO " . $GLOBALS['ecs']->table('goods_cat') .
" (goods_id, cat_id) " .
"VALUES ('$goods_id', '$cat_id')";
$GLOBALS['db']->query($sql);
}
}
/**
* 保存某商品的关联商品
* @param int $goods_id
* @return void
*/
function handle_link_goods($goods_id)
{
$sql = "UPDATE " . $GLOBALS['ecs']->table('link_goods') . " SET " .
" goods_id = '$goods_id' " .
" WHERE goods_id = '0'" .
" AND admin_id = '$_SESSION[admin_id]'";
$GLOBALS['db']->query($sql);
$sql = "UPDATE " . $GLOBALS['ecs']->table('link_goods') . " SET " .
" link_goods_id = '$goods_id' " .
" WHERE link_goods_id = '0'" .
" AND admin_id = '$_SESSION[admin_id]'";
$GLOBALS['db']->query($sql);
}
/**
* 保存某商品的配件
* @param int $goods_id
* @return void
*/
function handle_group_goods($goods_id)
{
$sql = "UPDATE " . $GLOBALS['ecs']->table('group_goods') . " SET " .
" parent_id = '$goods_id' " .
" WHERE parent_id = '0'" .
" AND admin_id = '$_SESSION[admin_id]'";
$GLOBALS['db']->query($sql);
}
/**
* 保存某商品的关联文章
* @param int $goods_id
* @return void
*/
function handle_goods_article($goods_id)
{
$sql = "UPDATE " . $GLOBALS['ecs']->table('goods_article') . " SET " .
" goods_id = '$goods_id' " .
" WHERE goods_id = '0'" .
" AND admin_id = '$_SESSION[admin_id]'";
$GLOBALS['db']->query($sql);
}
/**
* 保存某商品的相册图片
* @param int $goods_id
* @param array $image_files
* @param array $image_descs
* @return void
*/
function handle_gallery_image($goods_id, $image_files, $image_descs, $image_urls)
{
/* 是否处理缩略图 */
$proc_thumb = (isset($GLOBALS['shop_id']) && $GLOBALS['shop_id'] > 0)? false : true;
foreach ($image_descs AS $key => $img_desc)
{
/* 是否成功上传 */
$flag = false;
if (isset($image_files['error']))
{
if ($image_files['error'][$key] == 0)
{
$flag = true;
}
}
else
{
if ($image_files['tmp_name'][$key] != 'none')
{
$flag = true;
}
}
if ($flag)
{
// 生成缩略图
if ($proc_thumb)
{
$thumb_url = $GLOBALS['image']->make_thumb($image_files['tmp_name'][$key], $GLOBALS['_CFG']['thumb_width'], $GLOBALS['_CFG']['thumb_height']);
$thumb_url = is_string($thumb_url) ? $thumb_url : '';
}
$upload = array(
'name' => $image_files['name'][$key],
'type' => $image_files['type'][$key],
'tmp_name' => $image_files['tmp_name'][$key],
'size' => $image_files['size'][$key],
);
if (isset($image_files['error']))
{
$upload['error'] = $image_files['error'][$key];
}
$img_original = $GLOBALS['image']->upload_image($upload);
if ($img_original === false)
{
sys_msg($GLOBALS['image']->error_msg(), 1, array(), false);
}
$img_url = $img_original;
if (!$proc_thumb)
{
$thumb_url = $img_original;
}
// 如果服务器支持GD 则添加水印
if ($proc_thumb && gd_version() > 0)
{
$pos = strpos(basename($img_original), '.');
$newname = dirname($img_original) . '/' . $GLOBALS['image']->random_filename() . substr(basename($img_original), $pos);
copy('../' . $img_original, '../' . $newname);
$img_url = $newname;
$GLOBALS['image']->add_watermark('../'.$img_url,'',$GLOBALS['_CFG']['watermark'], $GLOBALS['_CFG']['watermark_place'], $GLOBALS['_CFG']['watermark_alpha']);
}
/* 重新格式化图片名称 */
$img_original = reformat_image_name('gallery', $goods_id, $img_original, 'source');
$img_url = reformat_image_name('gallery', $goods_id, $img_url, 'goods');
$thumb_url = reformat_image_name('gallery_thumb', $goods_id, $thumb_url, 'thumb');
$sql = "INSERT INTO " . $GLOBALS['ecs']->table('goods_gallery') . " (goods_id, img_url, img_desc, thumb_url, img_original) " .
"VALUES ('$goods_id', '$img_url', '$img_desc', '$thumb_url', '$img_original')";
$GLOBALS['db']->query($sql);
/* 不保留商品原图的时候删除原图 */
if ($proc_thumb && !$GLOBALS['_CFG']['retain_original_img'] && !empty($img_original))
{
$GLOBALS['db']->query("UPDATE " . $GLOBALS['ecs']->table('goods_gallery') . " SET img_original='' WHERE `goods_id`='{$goods_id}'");
@unlink('../' . $img_original);
}
}
elseif (!empty($image_urls[$key]) && ($image_urls[$key] != $GLOBALS['_LANG']['img_file']) && ($image_urls[$key] != 'http://') && copy(trim($image_urls[$key]), ROOT_PATH . 'temp/' . basename($image_urls[$key])))
{
$image_url = trim($image_urls[$key]);
//定义原图路径
$down_img = ROOT_PATH . 'temp/' . basename($image_url);
// 生成缩略图
if ($proc_thumb)
{
$thumb_url = $GLOBALS['image']->make_thumb($down_img, $GLOBALS['_CFG']['thumb_width'], $GLOBALS['_CFG']['thumb_height']);
$thumb_url = is_string($thumb_url) ? $thumb_url : '';
$thumb_url = reformat_image_name('gallery_thumb', $goods_id, $thumb_url, 'thumb');
}
if (!$proc_thumb)
{
$thumb_url = htmlspecialchars($image_url);
}
/* 重新格式化图片名称 */
$img_url = $img_original = htmlspecialchars($image_url);
$sql = "INSERT INTO " . $GLOBALS['ecs']->table('goods_gallery') . " (goods_id, img_url, img_desc, thumb_url, img_original) " .
"VALUES ('$goods_id', '$img_url', '$img_desc', '$thumb_url', '$img_original')";
$GLOBALS['db']->query($sql);
@unlink($down_img);
}
}
}
/**
* 修改商品某字段值
* @param string $goods_id 商品编号,可以为多个,用 ',' 隔开
* @param string $field 字段名
* @param string $value 字段值
* @return bool
*/
function update_goods($goods_id, $field, $value)
{
if ($goods_id)
{
/* 清除缓存 */
clear_cache_files();
$sql = "UPDATE " . $GLOBALS['ecs']->table('goods') .
" SET $field = '$value' , last_update = '". gmtime() ."' " .
"WHERE goods_id " . db_create_in($goods_id);
return $GLOBALS['db']->query($sql);
}
else
{
return false;
}
}
/**
* 从回收站删除多个商品
* @param mix $goods_id 商品id列表可以逗号格开也可以是数组
* @return void
*/
function delete_goods($goods_id)
{
if (empty($goods_id))
{
return;
}
/* 取得有效商品id */
$sql = "SELECT DISTINCT goods_id FROM " . $GLOBALS['ecs']->table('goods') .
" WHERE goods_id " . db_create_in($goods_id) . " AND is_delete = 1";
$goods_id = $GLOBALS['db']->getCol($sql);
if (empty($goods_id))
{
return;
}
/* 删除商品图片和轮播图片文件 */
$sql = "SELECT goods_thumb, goods_img, original_img " .
"FROM " . $GLOBALS['ecs']->table('goods') .
" WHERE goods_id " . db_create_in($goods_id);
$res = $GLOBALS['db']->query($sql);
while ($goods = $GLOBALS['db']->fetchRow($res))
{
if (!empty($goods['goods_thumb']))
{
@unlink('../' . $goods['goods_thumb']);
}
if (!empty($goods['goods_img']))
{
@unlink('../' . $goods['goods_img']);
}
if (!empty($goods['original_img']))
{
@unlink('../' . $goods['original_img']);
}
}
/* 删除商品 */
$sql = "DELETE FROM " . $GLOBALS['ecs']->table('goods') .
" WHERE goods_id " . db_create_in($goods_id);
$GLOBALS['db']->query($sql);
/* 删除商品的货品记录 */
$sql = "DELETE FROM " . $GLOBALS['ecs']->table('products') .
" WHERE goods_id " . db_create_in($goods_id);
$GLOBALS['db']->query($sql);
/* 删除商品相册的图片文件 */
$sql = "SELECT img_url, thumb_url, img_original " .
"FROM " . $GLOBALS['ecs']->table('goods_gallery') .
" WHERE goods_id " . db_create_in($goods_id);
$res = $GLOBALS['db']->query($sql);
while ($row = $GLOBALS['db']->fetchRow($res))
{
if (!empty($row['img_url']))
{
@unlink('../' . $row['img_url']);
}
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 string $goods_sn 商品货号请在传入本参数前对本参数进行SQl脚本过滤
* @param int $goods_id 商品id默认值为0没有商品id
* @return bool true重复false不重复
*/
function check_goods_sn_exist($goods_sn, $goods_id = 0)
{
$goods_sn = trim($goods_sn);
$goods_id = intval($goods_id);
if (strlen($goods_sn) == 0)
{
return true; //重复
}
if (empty($goods_id))
{
$sql = "SELECT goods_id FROM " . $GLOBALS['ecs']->table('goods') ."
WHERE goods_sn = '$goods_sn'";
}
else
{
$sql = "SELECT goods_id FROM " . $GLOBALS['ecs']->table('goods') ."
WHERE goods_sn = '$goods_sn'
AND goods_id <> '$goods_id'";
}
$res = $GLOBALS['db']->getOne($sql);
if (empty($res))
{
return false; //不重复
}
else
{
return true; //重复
}
}
/**
* 取得通用属性和某分类的属性,以及某商品的属性值
* @param int $cat_id 分类编号
* @param int $goods_id 商品编号
* @return array 规格与属性列表
*/
function get_attr_list($cat_id, $goods_id = 0)
{
if (empty($cat_id))
{
return array();
}
// 查询属性值及商品的属性值
$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
* @return array
*/
function get_goods_type_specifications()
{
// 查询
$sql = "SELECT DISTINCT cat_id
FROM " .$GLOBALS['ecs']->table('attribute'). "
WHERE attr_type = 1";
$row = $GLOBALS['db']->GetAll($sql);
$return_arr = array();
if (!empty($row))
{
foreach ($row as $value)
{
$return_arr[$value['cat_id']] = $value['cat_id'];
}
}
return $return_arr;
}
/**
* 根据属性数组创建属性的表单
*
* @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
* @params integer $conditions
* @return array
*/
function hs_list($is_delete, $real_goods=1, $conditions = '')
{
/* 过滤条件 */
$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['keyword'] = empty($_REQUEST['keyword']) ? '' : trim($_REQUEST['keyword']);
if (isset($_REQUEST['is_ajax']) && $_REQUEST['is_ajax'] == 1)
{
$filter['keyword'] = json_str_iconv($filter['keyword']);
}
$filter['sort_by'] = empty($_REQUEST['sort_by']) ? 'id' : trim($_REQUEST['sort_by']);
$filter['sort_order'] = empty($_REQUEST['sort_order']) ? 'DESC' : trim($_REQUEST['sort_order']);
/* 关键字 */
if (!empty($filter['keyword']))
{
$where .= " AND (goods_name LIKE '%" . mysql_like_quote($filter['keyword']) . "%')";
}
$where .= $conditions;
/* 记录总数 */
$sql = "SELECT COUNT(*) FROM " .$GLOBALS['ecs']->table('hs_web'). " AS g WHERE 1 $where";
$filter['record_count'] = $GLOBALS['db']->getOne($sql);
/* 分页大小 */
$filter = page_and_size($filter);
$sql = "SELECT * " .
" FROM " . $GLOBALS['ecs']->table('hs_web') . " AS g WHERE 1 $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('homestay' => $row, 'filter' => $filter, 'page_count' => $filter['page_count'], 'record_count' => $filter['record_count']);
}
/**
* 检测商品是否有货品
*
* @access public
* @params integer $goods_id 商品id
* @params string $conditions sql条件AND语句开头
* @return string number -1错误1存在0不存在
*/
function check_goods_product_exist($goods_id, $conditions = '')
{
if (empty($goods_id))
{
return -1; //$goods_id不能为空
}
$sql = "SELECT goods_id
FROM " . $GLOBALS['ecs']->table('products') . "
WHERE goods_id = '$goods_id'
" . $conditions . "
LIMIT 0, 1";
$result = $GLOBALS['db']->getRow($sql);
if (empty($result))
{
return 0;
}
return 1;
}
/**
* 获得商品的货品总库存
*
* @access public
* @params integer $goods_id 商品id
* @params string $conditions sql条件AND语句开头
* @return string number
*/
function product_number_count($goods_id, $conditions = '')
{
if (empty($goods_id))
{
return -1; //$goods_id不能为空
}
$sql = "SELECT SUM(product_number)
FROM " . $GLOBALS['ecs']->table('products') . "
WHERE goods_id = '$goods_id'
" . $conditions;
$nums = $GLOBALS['db']->getOne($sql);
$nums = empty($nums) ? 0 : $nums;
return $nums;
}
/**
* 获得商品的规格属性值列表
*
* @access public
* @params integer $goods_id
* @return array
*/
function product_goods_attr_list($goods_id)
{
if (empty($goods_id))
{
return array(); //$goods_id不能为空
}
$sql = "SELECT goods_attr_id, attr_value FROM " . $GLOBALS['ecs']->table('goods_attr') . " WHERE goods_id = '$goods_id'";
$results = $GLOBALS['db']->getAll($sql);
$return_arr = array();
foreach ($results as $value)
{
$return_arr[$value['goods_attr_id']] = $value['attr_value'];
}
return $return_arr;
}
/**
* 获得商品已添加的规格列表
*
* @access public
* @params integer $goods_id
* @return array
*/
function get_goods_specifications_list($goods_id)
{
if (empty($goods_id))
{
return array(); //$goods_id不能为空
}
$sql = "SELECT g.goods_attr_id, g.attr_value, g.attr_id, a.attr_name
FROM " . $GLOBALS['ecs']->table('goods_attr') . " AS g
LEFT JOIN " . $GLOBALS['ecs']->table('attribute') . " AS a
ON a.attr_id = g.attr_id
WHERE goods_id = '$goods_id'
AND a.attr_type = 1
ORDER BY g.attr_id ASC";
$results = $GLOBALS['db']->getAll($sql);
return $results;
}
/**
* 获得商品的货品列表
*
* @access public
* @params integer $goods_id
* @params string $conditions
* @return array
*/
function product_list($goods_id, $conditions = '')
{
/* 过滤条件 */
$param_str = '-' . $goods_id;
$result = get_filter($param_str);
if ($result === false)
{
$day = getdate();
$today = local_mktime(23, 59, 59, $day['mon'], $day['mday'], $day['year']);
$filter['goods_id'] = $goods_id;
$filter['keyword'] = empty($_REQUEST['keyword']) ? '' : trim($_REQUEST['keyword']);
$filter['stock_warning'] = empty($_REQUEST['stock_warning']) ? 0 : intval($_REQUEST['stock_warning']);
if (isset($_REQUEST['is_ajax']) && $_REQUEST['is_ajax'] == 1)
{
$filter['keyword'] = json_str_iconv($filter['keyword']);
}
$filter['sort_by'] = empty($_REQUEST['sort_by']) ? 'product_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['page_count'] = isset($filter['page_count']) ? $filter['page_count'] : 1;
$where = '';
/* 库存警告 */
if ($filter['stock_warning'])
{
$where .= ' AND goods_number <= warn_number ';
}
/* 关键字 */
if (!empty($filter['keyword']))
{
$where .= " AND (product_sn LIKE '%" . $filter['keyword'] . "%')";
}
$where .= $conditions;
/* 记录总数 */
$sql = "SELECT COUNT(*) FROM " .$GLOBALS['ecs']->table('products'). " AS p WHERE goods_id = $goods_id $where";
$filter['record_count'] = $GLOBALS['db']->getOne($sql);
$sql = "SELECT product_id, goods_id, goods_attr, product_sn, product_number
FROM " . $GLOBALS['ecs']->table('products') . " AS g
WHERE goods_id = $goods_id $where
ORDER BY $filter[sort_by] $filter[sort_order]";
$filter['keyword'] = stripslashes($filter['keyword']);
//set_filter($filter, $sql, $param_str);
}
else
{
$sql = $result['sql'];
$filter = $result['filter'];
}
$row = $GLOBALS['db']->getAll($sql);
/* 处理规格属性 */
$goods_attr = product_goods_attr_list($goods_id);
foreach ($row as $key => $value)
{
$_goods_attr_array = explode('|', $value['goods_attr']);
if (is_array($_goods_attr_array))
{
$_temp = '';
foreach ($_goods_attr_array as $_goods_attr_value)
{
$_temp[] = $goods_attr[$_goods_attr_value];
}
$row[$key]['goods_attr'] = $_temp;
}
}
return array('product' => $row, 'filter' => $filter, 'page_count' => $filter['page_count'], 'record_count' => $filter['record_count']);
}
/**
* 取货品信息
*
* @access public
* @param int $product_id 货品id
* @param int $filed 字段
* @return array
*/
function get_product_info($product_id, $filed = '')
{
$return_array = array();
if (empty($product_id))
{
return $return_array;
}
$filed = trim($filed);
if (empty($filed))
{
$filed = '*';
}
$sql = "SELECT $filed FROM " . $GLOBALS['ecs']->table('products') . " WHERE product_id = '$product_id'";
$return_array = $GLOBALS['db']->getRow($sql);
return $return_array;
}
/**
* 检查单个商品是否存在规格
*
* @param int $goods_id 商品id
* @return bool true存在false不存在
*/
function check_goods_specifications_exist($goods_id)
{
$goods_id = intval($goods_id);
$sql = "SELECT COUNT(a.attr_id)
FROM " .$GLOBALS['ecs']->table('attribute'). " AS a, " .$GLOBALS['ecs']->table('goods'). " AS g
WHERE a.cat_id = g.goods_type
AND g.goods_id = '$goods_id'";
$count = $GLOBALS['db']->getOne($sql);
if ($count > 0)
{
return true; //存在
}
else
{
return false; //不存在
}
}
/**
* 商品的货品规格是否存在
*
* @param string $goods_attr 商品的货品规格
* @param string $goods_id 商品id
* @param int $product_id 商品的货品id默认值为0没有货品id
* @return bool true重复false不重复
*/
function check_goods_attr_exist($goods_attr, $goods_id, $product_id = 0)
{
$goods_id = intval($goods_id);
if (strlen($goods_attr) == 0 || empty($goods_id))
{
return true; //重复
}
if (empty($product_id))
{
$sql = "SELECT product_id FROM " . $GLOBALS['ecs']->table('products') ."
WHERE goods_attr = '$goods_attr'
AND goods_id = '$goods_id'";
}
else
{
$sql = "SELECT product_id FROM " . $GLOBALS['ecs']->table('products') ."
WHERE goods_attr = '$goods_attr'
AND goods_id = '$goods_id'
AND product_id <> '$product_id'";
}
$res = $GLOBALS['db']->getOne($sql);
if (empty($res))
{
return false; //不重复
}
else
{
return true; //重复
}
}
/**
* 商品的货品货号是否重复
*
* @param string $product_sn 商品的货品货号请在传入本参数前对本参数进行SQl脚本过滤
* @param int $product_id 商品的货品id默认值为0没有货品id
* @return bool true重复false不重复
*/
function check_product_sn_exist($product_sn, $product_id = 0)
{
$product_sn = trim($product_sn);
$product_id = intval($product_id);
if (strlen($product_sn) == 0)
{
return true; //重复
}
$sql="SELECT goods_id FROM ". $GLOBALS['ecs']->table('goods')."WHERE goods_sn='$product_sn'";
if($GLOBALS['db']->getOne($sql))
{
return true; //重复
}
if (empty($product_id))
{
$sql = "SELECT product_id FROM " . $GLOBALS['ecs']->table('products') ."
WHERE product_sn = '$product_sn'";
}
else
{
$sql = "SELECT product_id FROM " . $GLOBALS['ecs']->table('products') ."
WHERE product_sn = '$product_sn'
AND product_id <> '$product_id'";
}
$res = $GLOBALS['db']->getOne($sql);
if (empty($res))
{
return false; //不重复
}
else
{
return true; //重复
}
}
/**
* 格式化商品图片名称(按目录存储)
*
*/
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;
}
?>