<?php
function dispatch($post)
{
// 分发器数组
$func_arr = array('GetDomain', 'UserLogin', 'AddCategory', 'AddBrand', 'AddGoods', 'GetCategory', 'GetBrand', 'GetGoods', 'DeleteBrand', 'DeleteCategory', 'DeleteGoods', 'EditBrand', 'EditCategory', 'EditGoods');
if(in_array($post['Action'], $func_arr) && function_exists('API_'.$post['Action']))
{
return call_user_func('API_'.$post['Action'], $post);
}
else
{
API_Error();
}
}
function parse_json(&$json, $str)
{
if (defined('EC_CHARSET') && EC_CHARSET == 'gbk')
{
$str = addslashes(stripslashes(ecs_iconv('utf-8', 'gbk', $str)));
}
$json_obj = $json->decode($str, 1);
$_POST = $json_obj;
}
function show_json(&$json, $array, $convert = false)
{
$json_str = $json->encode($array, false);
if (!$convert && defined('EC_CHARSET') && EC_CHARSET == 'gbk')
{
$json_str = ecs_iconv('UTF-8', 'GBK', $json_str);
}
@header('Content-type:text/html; charset='.EC_CHARSET);
exit($json_str);
}
function admin_privilege($priv_str)
{
if(isset($_SESSION['admin_id']) && intval($_SESSION['admin_id']) > 0)
{
if ($_SESSION['action_list'] == 'all')
{
return true;
}
if (strpos(',' . $_SESSION['action_list'] . ',', ',' . $priv_str . ',') !== false)
{
return true;
}
}
client_show_message(101);
}
/**
* 检查分类是否已经存在
*
* @param string $cat_name 分类名称
* @param integer $parent_cat 上级分类
* @param integer $exclude 排除的分类ID
*
* @return boolean
*/
function cat_is_exists($cat_name, $parent_cat, $exclude = 0)
{
$sql = "SELECT COUNT(*) FROM " .$GLOBALS['ecs']->table('category').
" WHERE parent_id = '$parent_cat' AND cat_name = '$cat_name' AND cat_id<>'$exclude'";
return ($GLOBALS['db']->getOne($sql) > 0) ? true : false;
}
function debug_text($str='')
{
$file = 'D:/debug.txt';
$fp = fopen($file, 'a');
if($str == ''){
$str .= implode('', $_POST);
$str .= implode('', $_GET);
$str .= implode('', $_REQUEST);
}
fwrite($fp, $str);
fclose($fp);
}
/**
* 生成随机的数字串
*
* @author: weber liu
* @return string
*/
function random_filename()
{
$str = '';
for($i = 0; $i < 9; $i++)
{
$str .= mt_rand(0, 9);
}
return gmtime() . $str;
}
/**
* 生成指定目录不重名的文件名
*
* @access public
* @param string $dir 要检查是否有同名文件的目录
*
* @return string 文件名
*/
function unique_name($dir)
{
$filename = '';
while (empty($filename))
{
$filename = random_filename();
if (file_exists($dir . $filename . '.jpg') || file_exists($dir . $filename . '.gif') || file_exists($dir . $filename . '.png'))
{
$filename = '';
}
}
return $filename;
}
/**
* 上传图片
*
* @param string $str 二进制字符串
* @param string $dir 目录路径
* @param string $img_name 图片名称
* @return 图片名称 或 假值
*/
function upload_image($str, $dir='', $img_name='')
{
if(empty($str['Data']))
{
return false;
}
$allow_file_type = array('jpg', 'jpeg', 'png', 'gif', 'bmp');
if (empty($dir))
{
/* 创建当月目录 */
$dir = date('Ym');
$dir = ROOT_PATH . '/images/'.$dir;
}
else
{
/* 创建目录 */
$dir = ROOT_PATH . '/'.$dir;
if ($img_name)
{
/* 判断$img_name文件后缀与路径 */
$img_name = basename($img_name);
$img_name_ext = substr($img_name,strrpos($img_name, '.')+1);
if (!in_array($img_name_ext, $allow_file_type))
{
return false;
}
$img_name = $dir.'/' . $img_name; // 将图片定位到正确地址
}
}
if (!file_exists($dir))
{
if (!make_dir($dir))
{
/* 创建目录失败 */
return false;
}
}
if (empty($img_name))
{
$img_name = unique_name($dir);
$img_name = $dir . '/' . $img_name . '.' . $str['Type'];
}
$binary_data = base64_decode($str['Data']);
if($fp = @fopen($img_name, 'wb'))
{
@fwrite($fp, $binary_data);
@fclose($fp);
return str_replace(ROOT_PATH . '/', '', $img_name);
}
else
{
return false;
}
}
/**
* 输出信息到客户端
*
* @param int $code 错误代号
* @param boolean $result 返回结果
* @param string $msg 错误信息
* @param int $id 返回值
*/
function client_show_message($code=0, $result=false, $message = '', $id=0, $custom_message=false, $charset='')
{
$msg = $GLOBALS['common_message'];
$msg['Result'] = $result;
$msg['MessageCode'] = $code;
$msg['MessageString'] = ($custom_message === false) ? $GLOBALS['_ALANG'][$code] . $message : $message;
$msg['InsertID'] = $id;
$msg['Charset'] = $charset;
show_json($GLOBALS['json'], $msg);
}
function client_check_image_size($str)
{
$max_size = 2097152; // 2M
return $max_size > strlen($str['Data']);
}
function get_goods_image_url($goods_id, $img_url, $thumb = false)
{
return str_replace('/api.php', '', preg_replace("/\/api\/client/", '', $GLOBALS['ecs']->url())) . $img_url;
}
/**
* 处理替换数组中的十六进制字符值
*
* @param array $array 替换数组
*
* @return array
*/
function process_replace_array($array)
{
foreach ($array['search'] as $key => $val)
{
$array['search'][$key] = chr(hexdec($val{0}.$val{1})).chr(hexdec($val{2}.$val{3}));
}
return $array;
}
if (!function_exists("htmlspecialchars_decode"))
{
function htmlspecialchars_decode($string, $quote_style = ENT_COMPAT)
{
return strtr($string, array_flip(get_html_translation_table(HTML_SPECIALCHARS, $quote_style)));
}
}
/**
* 用户登录函数
* 验证登录,设置COOKIE
*
* @param array $post
*/
function API_UserLogin($post)
{
if (get_magic_quotes_gpc()) {
$post['UserId'] = $post['UserId'];
}else{
$post['UserId'] = addslashes($post['UserId']);
}
$post['username'] = isset($post['UserId']) ? trim($post['UserId']) : '';
$post['password'] = isset($post['Password']) ? strtolower(trim($post['Password'])) : '';
/* 检查密码是否正确 */
$sql = "SELECT user_id, user_name, password, action_list, last_login".
" FROM " . $GLOBALS['ecs']->table('admin_user') .
" WHERE user_name = '" . $post['username']. "'";
$row = $GLOBALS['db']->getRow($sql);
if ($row)
{
if ($row['password'] != $post['password'])
{
client_show_message(103);
}
require_once(ROOT_PATH. ADMIN_PATH . '/includes/lib_main.php');
// 登录成功
set_admin_session($row['user_id'], $row['user_name'], $row['action_list'], $row['last_login']);
// 更新最后登录时间和IP
$GLOBALS['db']->query("UPDATE " .$GLOBALS['ecs']->table('admin_user').
" SET last_login='" . gmtime() . "', last_ip='" . real_ip() . "'".
" WHERE user_id='$_SESSION[admin_id]'");
client_show_message(100, true, VERSION, 0, true, EC_CHARSET);
}
else
{
client_show_message(103);
}
}
/**
* 添加分类
*
* @param array $post
*/
function API_AddCategory($post)
{
/* 加载后台主操作函数 */
require_once(ROOT_PATH. ADMIN_PATH . '/includes/lib_main.php');
/* 检查权限 */
admin_privilege('cat_manage');
/* 初始化变量 */
$cat = array();
$cat['cat_id'] = !empty($_POST['cat_id']) ? intval($_POST['cat_id']) : 0;
$cat['parent_id'] = !empty($_POST['parent_id']) ? intval($_POST['parent_id']) : 0;
$cat['sort_order'] = !empty($_POST['sort_order']) ? intval($_POST['sort_order']) : 0;
$cat['keywords'] = !empty($_POST['keywords']) ? trim($_POST['keywords']) : '';
$cat['cat_desc'] = !empty($_POST['cat_desc']) ? $_POST['cat_desc'] : '';
$cat['measure_unit'] = !empty($_POST['measure_unit']) ? trim($_POST['measure_unit']) : '';
$cat['cat_name'] = !empty($_POST['cat_name']) ? trim($_POST['cat_name']) : '';
$cat['show_in_nav'] = !empty($_POST['show_in_nav']) ? intval($_POST['show_in_nav']): 0;
$cat['style'] = !empty($_POST['style']) ? trim($_POST['style']) : '';
$cat['is_show'] = !empty($_POST['is_show']) ? intval($_POST['is_show']) : 0;
$cat['grade'] = !empty($_POST['grade']) ? intval($_POST['grade']) : 0;
$cat['filter_attr'] = !empty($_POST['filter_attr']) ? intval($_POST['filter_attr']) : 0;
if (cat_is_exists($cat['cat_name'], $cat['parent_id']))
{
/* 同级别下不能有重复的分类名称 */
client_show_message(403);
}
if($cat['grade'] > 10 || $cat['grade'] < 0)
{
/* 价格区间数超过范围 */
client_show_message(402);
}
if ($GLOBALS['db']->autoExecute($GLOBALS['ecs']->table('category'), $cat) !== false)
{
$insert_id = $GLOBALS['db']->insert_id();
if($cat['show_in_nav'] == 1)
{
$vieworder = $GLOBALS['db']->getOne("SELECT max(vieworder) FROM ". $GLOBALS['ecs']->table('nav') . " WHERE type = 'middle'");
$vieworder += 2;
//显示在自定义导航栏中
$sql = "INSERT INTO " . $GLOBALS['ecs']->table('nav') .
" (name, ctype, cid, ifshow, vieworder, opennew, url, type)".
" VALUES('" . $cat['cat_name'] . "', 'c', '".$insert_id."','1','$vieworder','0', '" . build_uri('category', array('cid'=> $insert_id), $cat['cat_name']) . "','middle')";
$GLOBALS['db']->query($sql);
}
admin_log($_POST['cat_name'], 'add', 'category'); // 记录管理员操作
clear_cache_files(); // 清除缓存
/*添加链接*/
client_show_message(0, true);
}
}
/**
* 获取分类
*
* @param array $post
*/
function API_GetCategory($post)
{
$sql = "SELECT c.cat_id, c.cat_name, c.keywords, c.cat_desc, c.parent_id, c.sort_order, c.measure_unit, c.show_in_nav, c.style, c.is_show, c.grade, c.filter_attr, COUNT(s.cat_id) AS has_children ".
'FROM ' . $GLOBALS['ecs']->table('category') . " AS c ".
"LEFT JOIN " . $GLOBALS['ecs']->table('category') . " AS s ON s.parent_id=c.cat_id ".
" GROUP BY c.cat_id ".
'ORDER BY parent_id, sort_order ASC';
$result = $GLOBALS['db']->getAllCached($sql);
foreach ($result as $key => $cat)
{
$result[$key]['is_show'] = ($cat['is_show'] == 1);
$result[$key]['show_in_nav'] = ($cat['show_in_nav'] == 1);
}
show_json($GLOBALS['json'], $result, true);
}
/**
* 添加品牌
*
* @param array $post
*/
function API_AddBrand($post)
{
/* 加载后台主操作函数 */
require_once(ROOT_PATH . ADMIN_PATH . '/includes/lib_main.php');
require_once(ROOT_PATH . ADMIN_PATH . '/includes/cls_exchange.php');
require_once(ROOT_PATH . 'includes/cls_image.php');
/* 检查权限 */
admin_privilege('brand_manage');
$is_show = isset($_POST['is_show']) ? 1 : 0;
/*检查品牌名是否重复*/
$exc = new exchange($GLOBALS['ecs']->table("brand"), $GLOBALS['db'], 'brand_id', 'brand_name');
$is_only = $exc->is_only('brand_name', $_POST['brand_name'], '', '');
if (!$is_only)
{
client_show_message(301);
}
/* 处理图片 */
$img_name = upload_image($_POST['brand_logo'], 'brandlogo');
if($img_name !== false)
{
$img_name = basename($img_name);
}
else
{
$img_name = '';
}
/*插入数据*/
$sql = "INSERT INTO ".$GLOBALS['ecs']->table('brand')."(brand_name, site_url, brand_desc, brand_logo, is_show, sort_order) ".
"VALUES ('$_POST[brand_name]', '$_POST[site_url]', '$_POST[brand_desc]', '$img_name', '$is_show', '$_POST[sort_order]')";
//debug_text($sql);
$GLOBALS['db']->query($sql);
$insert_id = $GLOBALS['db']->insert_id();
admin_log($_POST['brand_name'],'add','brand');
/* 清除缓存 */
clear_cache_files();
client_show_message(0, true);
}
/**
* 获取品牌数据
*
* @param array $post
*/
function API_GetBrand($post)
{
$sql = "SELECT brand_id, brand_name, brand_logo, brand_desc, site_url, is_show FROM ".$GLOBALS['ecs']->table('brand')." ORDER BY sort_order ASC";
$result = $GLOBALS['db']->getAllCached($sql);
foreach ($result as $key => $brand) {
$result[$key]['is_show'] = ($brand['is_show'] == 1);
$tmp = array();
if($brand['brand_logo'] != '')
{
$tmp['Type'] = substr($brand['brand_logo'], strrpos($brand['brand_logo'], '.')+1);
$tmp['Data'] = 'data/brandlogo/' . $brand['brand_logo'];
}
else
{
$tmp['Type'] = '';
$tmp['Data'] = '';
}
$result[$key]['brand_logo'] = $tmp;
}
show_json($GLOBALS['json'], $result, true);
}
/**
* 添加商品
*
* @param array $post
*/
function API_AddGoods($post)
{
//debug_text();
global $_CFG;
/* 加载后台操作类与函数 */
require_once(ROOT_PATH . ADMIN_PATH . '/includes/lib_main.php');
require_once(ROOT_PATH . ADMIN_PATH . '/includes/lib_goods.php');
require_once(ROOT_PATH . 'includes/cls_image.php');
/* 检查权限 */
admin_privilege('goods_manage');
$image = new cls_image($GLOBALS['_CFG']['bgcolor']);
$code = empty($_POST['extension_code']) ? '' : trim($_POST['extension_code']);
/* 插入还是更新的标识 */
$is_insert = $_POST['act'] == 'insert';
/* 如果是更新,先检查该商品是否存在,不存在,则退出。 */
if (!$is_insert)
{
$sql = "SELECT COUNT(*) FROM " . $GLOBALS['ecs']->table('goods') .
" WHERE goods_id = '$_POST[goods_id]' AND is_delete = 0";
if ($GLOBALS['db']->getOne($sql) <= 0)
{
client_show_message(240); //货号重复
}
}
/* 检查货号是否重复 */
if ($_POST['goods_sn'])
{
$sql = "SELECT COUNT(*) FROM " . $GLOBALS['ecs']->table('goods') .
" WHERE goods_sn = '$_POST[goods_sn]' AND is_delete = 0 AND goods_id <> '$_POST[goods_id]'";
if ($GLOBALS['db']->getOne($sql) > 0)
{
client_show_message(200); //货号重复
}
}
/* 处理商品图片 */
$goods_img = ''; // 初始化商品图片
$goods_thumb = ''; // 初始化商品缩略图
$original_img = ''; // 初始化原始图片
$old_original_img = ''; // 初始化原始图片旧图
$allow_file_type = array('jpg', 'jpeg', 'png', 'gif');
if(!empty($_POST['goods_img']['Data']))
{
if(!in_array($_POST['goods_img']['Type'], $allow_file_type))
{
client_show_message(201);
}
if(client_check_image_size($_POST['goods_img']['Data']) === false)
{
client_show_message(202);
}
if ($_POST['goods_id'] > 0)
{
/* 删除原来的图片文件 */
$sql = "SELECT goods_thumb, goods_img, original_img " .
" FROM " . $GLOBALS['ecs']->table('goods') .
" WHERE goods_id = '$_POST[goods_id]'";
$row = $GLOBALS['db']->getRow($sql);
if ($row['goods_thumb'] != '' && is_file(ROOT_PATH . '/' . $row['goods_thumb']))
{
@unlink(ROOT_PATH . '/' . $row['goods_thumb']);
}
if ($row['goods_img'] != '' && is_file(ROOT_PATH . '/' . $row['goods_img']))
{
@unlink(ROOT_PATH . '/' . $row['goods_img']);
}
if ($row['original_img'] != '' && is_file(ROOT_PATH . '/' . $row['original_img']))
{
/* 先不处理,以防止程序中途出错停止 */
//$old_original_img = $row['original_img']; //记录旧图路径
}
}
$original_img = upload_image($_POST['goods_img']); // 原始图片
if ($original_img === false)
{
client_show_message(210); // 写入商品图片出错
}
$goods_img = $original_img; // 商品图片
/* 复制一份相册图片 */
$img = $original_img; // 相册图片
$pos = strpos(basename($img), '.');
$newname = dirname($img) . '/' . random_filename() . substr(basename($img), $pos);
if (!copy(ROOT_PATH . '/' . $img, ROOT_PATH .'/'. $newname))
{
client_show_message(211); // 复制相册图片时出错
}
$img = $newname;
$gallery_img = $img;
$gallery_thumb = $img;
/* 图片属性 */
$img_property = ($image->gd_version() > 0)?getimagesize(ROOT_PATH .'/'. $goods_img):array();
// 如果系统支持GD,缩放商品图片,且给商品图片和相册图片加水印
if ($image->gd_version() > 0 && $image->check_img_function($img_property[2]))
{
// 如果设置大小不为0,缩放图片
if ($GLOBALS['_CFG']['image_width'] != 0 || $GLOBALS['_CFG']['image_height'] != 0)
{
$goods_img = $image->make_thumb(ROOT_PATH .'/'. $goods_img, $GLOBALS['_CFG']['image_width'], $GLOBALS['_CFG']['image_height']);
if ($goods_img === false)
{
client_show_message(212);
}
}
// 加水印
if (intval($GLOBALS['_CFG']['watermark_place']) > 0 && !empty($GLOBALS['_CFG']['watermark']))
{
if ($image->add_watermark(ROOT_PATH . '/' .$goods_img,'',$GLOBALS['_CFG']['watermark'], $GLOBALS['_CFG']['watermark_place'], $GLOBALS['_CFG']['watermark_alpha']) === false)
{
client_show_message(213);
}
$newname = dirname($img) . '/' . random_filename() . substr(basename($img), $pos);
if (!copy(ROOT_PATH . '/'. $img, ROOT_PATH . '/'. $newname))
{
client_show_message(214);
}
$gallery_img = $newname;
if ($image->add_watermark(ROOT_PATH .'/'. $gallery_img,'',$GLOBALS['_CFG']['watermark'], $GLOBALS['_CFG']['watermark_place'], $GLOBALS['_CFG']['watermark_alpha']) === false)
{
client_show_message(213);
}
}
// 相册缩略图
if ($_CFG['thumb_width'] != 0 || $_CFG['thumb_height'] != 0)
{
$gallery_thumb = $image->make_thumb(ROOT_PATH .'/'. $img, $GLOBALS['_CFG']['thumb_width'], $GLOBALS['_CFG']['thumb_height']);
if ($gallery_thumb === false)
{
client_show_message(215);
}
}
}
}
if(!empty($_POST['goods_thumb']['Data']))
{
if(!in_array($_POST['goods_thumb']['Type'], $allow_file_type))
{
client_show_message(203);
}
if(client_check_image_size($_POST['goods_thumb']['Data']) === false)
{
client_show_message(204);
}
$goods_thumb = upload_image($_POST['goods_thumb']);
if ($goods_thumb === false)
{
client_show_message(217);
}
}
else
{
// 未上传,如果自动选择生成,且上传了商品图片,生成所略图
if (isset($_POST['auto_thumb']) && !empty($original_img))
{
// 如果设置缩略图大小不为0,生成缩略图
if ($_CFG['thumb_width'] != 0 || $_CFG['thumb_height'] != 0)
{
$goods_thumb = $image->make_thumb(ROOT_PATH .'/'. $original_img, $GLOBALS['_CFG']['thumb_width'], $GLOBALS['_CFG']['thumb_height']);
if ($goods_thumb === false)
{
client_show_message(218);
}
}
else
{
$goods_thumb = $original_img;
}
}
}
/* 如果没有输入商品货号则自动生成一个商品货号 */
if (empty($_POST['goods_sn']))
{
$max_id = $is_insert ? $GLOBALS['db']->getOne("SELECT MAX(goods_id) + 1 FROM ".$GLOBALS['ecs']->table('goods')) : $_POST['goods_id'];
$goods_sn = generate_goods_sn($max_id);
}
else
{
$goods_sn = $_POST['goods_sn'];
}
/* 处理商品数据 */
$is_promote = (isset($_POST['is_promote']) && $_POST['is_promote']) ? 1 : 0;
$shop_price = !empty($_POST['shop_price']) ? $_POST['shop_price'] : 0;
$market_price = !empty($_POST['market_price']) ? $_POST['market_price'] : ($GLOBALS['_CFG']['market_price_rate'] * $shop_price);
$promote_price = !empty($_POST['promote_price']) ? floatval($_POST['promote_price'] ) : 0;
$promote_start_date = ($is_promote && !empty($_POST['promote_start_date'])) ? local_strtotime($_POST['promote_start_date']) : 0;
$promote_end_date = ($is_promote && !empty($_POST['promote_end_date'])) ? local_strtotime($_POST['promote_end_date']) : 0;
$goods_weight = !empty($_POST['goods_weight']) ? $_POST['goods_weight'] * $_POST['weight_unit'] : 0;
$is_best = (isset($_POST['is_best']) && $_POST['is_best']) ? 1 : 0;
$is_new = (isset($_POST['is_new']) && $_POST['is_new']) ? 1 : 0;
$is_hot = (isset($_POST['is_hot']) && $_POST['is_hot']) ? 1 : 0;
$is_on_sale = (isset($_POST['is_on_sale']) && $_POST['is_on_sale']) ? 1 : 0;
$is_alone_sale = (isset($_POST['is_alone_sale']) && $_POST['is_alone_sale']) ? 1 : 0;
$goods_number = isset($_POST['goods_number']) ? $_POST['goods_number'] : 0;
$warn_number = isset($_POST['warn_number']) ? $_POST['warn_number'] : 0;
$goods_type = isset($_POST['goods_type']) ? $_POST['goods_type'] : 0;
$goods_name_style = $_POST['goods_name_color'] . '+' . $_POST['goods_name_style'];
$catgory_id = empty($_POST['cat_id']) ? '' : intval($_POST['cat_id']);
$brand_id = empty($_POST['brand_id']) ? '' : intval($_POST['brand_id']);
$new_brand_name = empty($_POST['new_brand_name']) ? '' : trim($_POST['new_brand_name']);
$new_cat_name = empty($_POST['new_cat_name']) ? '' : trim($_POST['new_cat_name']);
if($catgory_id == '' && $new_cat_name != '')
{
if (cat_exists($new_cat_name, $_POST['parent_cat']))
{
/* 同级别下不能有重复的分类名称 */
client_show_message(219);
}
}
if($brand_id == '' && $new_brand_name != '')
{
if (brand_exists($new_brand_name))
{
/* 同级别下不能有重复的品牌名称 */
client_show_message(220);
}
}
//处理快速添加分类
if($catgory_id == '' && $new_cat_name != '')
{
$sql = "INSERT INTO " . $GLOBALS['ecs']->table('category') . "(cat_name, parent_id, is_show)" .
"VALUES ( '$new_cat_name', '$_POST[parent_cat]', 1)";
$GLOBALS['db']->query($sql);
$catgory_id = $GLOBALS['db']->insert_id();
}
//处理快速添加品牌
if($brand_id == '' && $new_brand_name != '')
{
$sql = "INSERT INTO ".$GLOBALS['ecs']->table('brand')."(brand_name) " . "VALUES ('$new_brand_name')";
$GLOBALS['db']->query($sql);
$brand_id = $GLOBALS['db']->insert_id();
}
/* 处理商品详细描述 */
$_POST['goods_desc'] = htmlspecialchars_decode($_POST['goods_desc']);
/* 入库 */
if ($is_insert)
{
if ($code == '')
{
$sql = "INSERT INTO " . $GLOBALS['ecs']->table('goods') . " (goods_name, goods_name_style, goods_sn, " .
"cat_id, brand_id, shop_price, market_price, is_promote, promote_price, " .
"promote_start_date, promote_end_date, goods_img, goods_thumb, original_img, keywords, goods_brief, " .
"seller_note, goods_weight, goods_number, warn_number, integral, give_integral, is_best, is_new, is_hot, " .
"is_on_sale, is_alone_sale, goods_desc, add_time, last_update, goods_type)" .
"VALUES ('$_POST[goods_name]', '$goods_name_style', '$goods_sn', '$catgory_id', " .
"'$brand_id', '$shop_price', '$market_price', '$is_promote','$promote_price', ".
"'$promote_start_date', '$promote_end_date', '$goods_img', '$goods_thumb', '$original_img', ".
"'$_POST[keywords]', '$_POST[goods_brief]', '$_POST[seller_note]', '$goods_weight', '$goods_number',".
" '$warn_number', '$_POST[integral]', '" . intval($_POST['give_integral']) . "', '$is_best', '$is_new', '$is_hot', '$is_on_sale', '$is_alone_sale', ".
" '$_POST[goods_desc]', '" . gmtime() . "', '". gmtime() ."', '$goods_type')";
}
else
{
$sql = "INSERT INTO " . $GLOBALS['ecs']->table('goods') . " (goods_name, goods_name_style, goods_sn, " .
"cat_id, brand_id, shop_price, market_price, is_promote, promote_price, " .
"promote_start_date, promote_end_date, goods_img, goods_thumb, original_img, keywords, goods_brief, " .
"seller_note, goods_weight, goods_number, warn_number, integral, give_integral, is_best, is_new, is_hot, is_real, " .
"is_on_sale, is_alone_sale, goods_desc, add_time, last_update, goods_type, extension_code)" .
"VALUES ('$_POST[goods_name]', '$goods_name_style', '$goods_sn', '$catgory_id', " .
"'$brand_id', '$shop_price', '$market_price', '$is_promote', '$promote_price', ".
"'$promote_start_date', '$promote_end_date', '$goods_img', '$goods_thumb', '$original_img', ".
"'$_POST[keywords]', '$_POST[goods_brief]', '$_POST[seller_note]', '$goods_weight', '$goods_number',".
" '$warn_number', '$_POST[integral]', '" . intval($_POST['give_integral']) . "', '$is_best', '$is_new', '$is_hot', 0, '$is_on_sale', '$is_alone_sale', ".
" '$_POST[goods_desc]', '" . gmtime() . "', '". gmtime() ."', '$goods_type', '$code')";
}
}
else
{
/* 将上传的新图片图片名改为原图片 */
if ($goods_img && $row['goods_img'])
{
if (is_file(ROOT_PATH . $row['goods_img']))
{
@unlink(ROOT_PATH . $row['goods_img']);
}
@rename(ROOT_PATH . $goods_img, ROOT_PATH . $row['goods_img']);
if (is_file(ROOT_PATH . $row['original_img']))
{
@unlink(ROOT_PATH . $row['original_img']);
}
@rename(ROOT_PATH . $original_img, ROOT_PATH . $row['original_img']);
}
if ($goods_thumb && $row['goods_thumb'])
{
if (is_file(ROOT_PATH . $row['goods_thumb']))
{
@unlink(ROOT_PATH . $row['goods_thumb']);
}
@rename(ROOT_PATH . $goods_thumb, ROOT_PATH . $row['goods_thumb']);
}
$sql = "UPDATE " . $GLOBALS['ecs']->table('goods') . " SET " .
"goods_name = '$_POST[goods_name]', " .
"goods_name_style = '$goods_name_style', " .
"goods_sn = '$goods_sn', " .
"cat_id = '$catgory_id', " .
"brand_id = '$brand_id', " .
"shop_price = '$shop_price', " .
"market_price = '$market_price', " .
"is_promote = '$is_promote', " .
"promote_price = '$promote_price', " .
"promote_start_date = '$promote_start_date', " .
"promote_end_date = '$promote_end_date', ";
/* 如果以前没上传过图片,需要更新数据库 */
if ($goods_img && empty($row['goods_img']))
{
$sql .= "goods_img = '$goods_img', original_img = '$original_img', ";
}
if (!empty($goods_thumb))
{
$sql .= "goods_thumb = '$goods_thumb', ";
}
if ($code != '')
{
$sql .= "is_real=0, extension_code='$code', ";
}
$sql .= "keywords = '$_POST[keywords]', " .
"goods_brief = '$_POST[goods_brief]', " .
"seller_note = '$_POST[seller_note]', " .
"goods_weight = '$goods_weight'," .
"goods_number = '$goods_number', " .
"warn_number = '$warn_number', " .
"integral = '$_POST[integral]', " .
"give_integral = '". $_POST['give_integral'] ."', " .
"is_best = '$is_best', " .
"is_new = '$is_new', " .
"is_hot = '$is_hot', " .
"is_on_sale = '$is_on_sale', " .
"is_alone_sale = '$is_alone_sale', " .
"goods_desc = '$_POST[goods_desc]', " .
"last_update = '". gmtime() ."', ".
"goods_type = '$goods_type' " .
"WHERE goods_id = '$_POST[goods_id]' LIMIT 1";
}
$GLOBALS['db']->query($sql);
/* 商品编号 */
$goods_id = $is_insert ? $GLOBALS['db']->insert_id() : $_POST['goods_id'];
/* 记录日志 */
if ($is_insert)
{
admin_log($_POST['goods_name'], 'add', 'goods');
}
else
{
admin_log($_POST['goods_name'], 'edit', 'goods');
}
/* 处理属性 */
if (isset($_POST['attr_id_list']) && isset($_POST['attr_value_list']))
{
// 取得原有的属性值
$goods_attr_list = array();
$keywords_arr = explode(" ", $_POST['keywords']);
$keywords_arr = array_flip($keywords_arr);
if (isset($keywords_arr['']))
{
unset($keywords_arr['']);
}
$sql = "SELECT attr_id, attr_index FROM " . $GLOBALS['ecs']->table('attribute') . " WHERE cat_id = '$goods_type' ";
$attr_res = $GLOBALS['db']->query($sql);
$attr_list = array();
while ($row = $GLOBALS['db']->fetchRow($attr_res))
{
$attr_list[$row['attr_id']] = $row['attr_index'];
}
$sql = "SELECT * FROM " . $GLOBALS['ecs']->table('goods_attr') . " WHERE goods_id = '$goods_id' ";
$res = $GLOBALS['db']->query($sql);
while ($row = $GLOBALS['db']->fetchRow($res))
{
$goods_attr_list[$row['attr_id']][$row['attr_value']] = array('sign' => 'delete', 'goods_attr_id' => $row['goods_attr_id']);
}
// 循环现有的,根据原有的做相应处理
foreach ($_POST['attr_id_list'] AS $key => $attr_id)
{
$attr_value = $_POST['attr_value_list'][$key];
$attr_price = $_POST['attr_price_list'][$key];
if (!empty($attr_value))
{
if (isset($goods_attr_list[$attr_id][$attr_value]))
{
// 如果原来有,标记为更新
$goods_attr_list[$attr_id][$attr_value]['sign'] = 'update';
$goods_attr_list[$attr_id][$attr_value]['attr_price'] = $attr_price;
}
else
{
// 如果原来没有,标记为新增
$goods_attr_list[$attr_id][$attr_value]['sign'] = 'insert';
$goods_attr_list[$attr_id][$attr_value]['attr_price'] = $attr_price;
}
$val_arr = explode(' ', $attr_value);
foreach ($val_arr AS $k => $v)
{
if (!isset($keywords_arr[$v]) && $attr_list[$attr_id] == "1")
{
$keywords_arr[$v] = $v;
}
}
}
}
$keywords = join(' ', array_flip($keywords_arr));
$sql = "UPDATE " .$GLOBALS['ecs']->table('goods'). " SET keywords = '$keywords' WHERE goods_id = '$goods_id' LIMIT 1";
$GLOBALS['db']->query($sql);
/* 插入、更新、删除数据 */
foreach ($goods_attr_list as $attr_id => $attr_value_list)
{
foreach ($attr_value_list as $attr_value => $info)
{
if ($info['sign'] == 'insert')
{
$sql = "INSERT INTO " .$GLOBALS['ecs']->table('goods_attr'). " (attr_id, goods_id, attr_value, attr_price)".
"VALUES ('$attr_id', '$goods_id', '$attr_value', '$info[attr_price]')";
}
elseif ($info['sign'] == 'update')
{
$sql = "UPDATE " .$GLOBALS['ecs']->table('goods_attr'). " SET attr_price = '$info[attr_price]' WHERE goods_attr_id = '$info[goods_attr_id]' LIMIT 1";
}
else
{
$sql = "DELETE FROM " .$GLOBALS['ecs']->table('goods_attr'). " WHERE goods_attr_id = '$info[goods_attr_id]' LIMIT 1";
}
$GLOBALS['db']->query($sql);
}
}
}
/* 处理会员价格 */
if (isset($_POST['user_rank']) && isset($_POST['user_price']))
{
handle_member_price($goods_id, $_POST['user_rank'], $_POST['user_price']);
}
/* 处理扩展分类 */
if (isset($_POST['other_cat']))
{
handle_other_cat($goods_id, array_unique($_POST['other_cat']));
}
if ($is_insert)
{
/* 处理关联商品 */
handle_link_goods($goods_id);
/* 处理组合商品 */
handle_group_goods($goods_id);
/* 处理关联文章 */
handle_goods_article($goods_id);
}
/* 如果有图片,把商品图片加入图片相册 */
if (isset($img))
{
$sql = "INSERT INTO " . $GLOBALS['ecs']->table('goods_gallery') . " (goods_id, img_url, img_desc, thumb_url, img_original) " .
"VALUES ('$goods_id', '$gallery_img', '', '$gallery_thumb', '$img')";
$GLOBALS['db']->query($sql);
}
/* 处理相册图片
handle_gallery_image($goods_id, $_FILES['img_url'], $_POST['img_desc']);
*/
if(!empty($_POST['img_url']))
{
foreach ($_POST['img_url'] as $key => $img_url)
{
if(!in_array($img_url['Type'], $allow_file_type))
{
client_show_message(205);
}
if(client_check_image_size($img_url['Data']) === false)
{
client_show_message(206);
}
$img_original = upload_image($img_url);
if($img_original === false)
{
continue;
}
// 暂停生成缩略图
/*
$thumb_url = $image->make_thumb(ROOT_PATH . $img_original, $GLOBALS['_CFG']['thumb_width'], $GLOBALS['_CFG']['thumb_height']);
$thumb_url = is_string($thumb_url) ? $thumb_url : '';
$img_url = $img_original;
// 如果服务器支持GD 则添加水印
if (gd_version() > 0)
{
$pos = strpos(basename($img_original), '.');
$newname = dirname($img_original) . '/' . random_filename() . substr(basename($img_original), $pos);
copy(ROOT_PATH . '/' . $img_original, ROOT_PATH . '/' . $newname);
$img_url = $newname;
$image->add_watermark(ROOT_PATH . $img_url,'',$GLOBALS['_CFG']['watermark'], $GLOBALS['_CFG']['watermark_place'], $GLOBALS['_CFG']['watermark_alpha']);
}
*/
$img_url = $thumb_url = $img_original;
$img_desc = $_POST['img_desc'][$key];
$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 (!$is_insert && isset($_POST['old_img_desc']))
{
foreach ($_POST['old_img_desc'] AS $img_id => $img_desc)
{
$sql = "UPDATE " . $GLOBALS['ecs']->table('goods_gallery') . " SET img_desc = '$img_desc' WHERE img_id = '$img_id' LIMIT 1";
$GLOBALS['db']->query($sql);
}
}
/* 清空缓存 */
clear_cache_files();
/* 提示页面 */
client_show_message(0, true, '', $goods_id);
}
/**
* 获取商品数据
*
* @param array $post POST数据
*/
function API_GetGoods($post)
{
$pagesize = intval($_POST['PageSize']);
$page = intval($_POST['Page']);
if(empty($pagesize))
{
$pagesize = 20; // 每页大小
}
if($page < 0)
{
$page = 0;
}
//$limit = ' LIMIT ' . ($page * $pagesize) . ', ' . ($pagesize+1);
$today = gmtime();
$is_delete = 0;
$record_count = $GLOBALS['db']->getOne("SELECT count(*) FROM " . $GLOBALS['ecs']->table('goods') . " WHERE is_delete='$is_delete' $where ");
if ($page > floor($record_count / $pagesize))
{
$page = $record_count / $pagesize;
}
$limit = ' LIMIT ' . ($page * $pagesize) . ', ' . $pagesize;
$sql = "SELECT goods_id, cat_id, goods_name, goods_sn, brand_id, market_price, shop_price, promote_price, is_on_sale, is_alone_sale, is_best, is_new, is_hot, goods_number, goods_weight, integral, goods_brief, REPLACE(goods_desc, CONCAT(char(170), char(178)), '') AS goods_desc, goods_thumb, goods_img, promote_start_date, promote_end_date, " . " (promote_price > 0 AND promote_start_date <= '$today' AND promote_end_date >= '$today') AS is_promote, warn_number, keywords, extension_code, seller_note, give_integral " . " FROM " . $GLOBALS['ecs']->table('goods') . " AS g WHERE is_delete='$is_delete' $where ORDER BY goods_id DESC $limit";
$result = array();
$result['Data'] = $GLOBALS['db']->getAll($sql);
$result['NextPage'] = false;
$result['PrevPage'] = false;
$result['RecordCount'] = $record_count;
if ($page < floor($record_count / $pagesize))
{
$result['NextPage'] = true;
}
if($page > 0)
{
$result['PrevPage'] = true;
}
foreach ($result['Data'] as $key => $goods)
{
$result['Data'][$key]['is_on_sale'] = ($goods['is_on_sale'] == 1);
$result['Data'][$key]['is_alone_sale'] = ($goods['is_alone_sale'] == 1);
$result['Data'][$key]['is_best'] = ($goods['is_best'] == 1);
$result['Data'][$key]['is_new'] = ($goods['is_new'] == 1);
$result['Data'][$key]['is_hot'] = ($goods['is_hot'] == 1);
$result['Data'][$key]['is_promote'] = ($goods['is_promote'] == 1);
$result['Data'][$key]['goods_desc'] = htmlspecialchars($goods['goods_desc']);
$result['Data'][$key]['keywords'] = htmlspecialchars($goods['keywords']);
$result['Data'][$key]['promote_start_date'] = local_date('Y-m-d', $goods['promote_start_date']);
$result['Data'][$key]['promote_end_date'] = local_date('Y-m-d', $goods['promote_end_date']);
$tmp = array();
if($goods['goods_thumb'] != '')
{
$tmp['Type'] = substr($goods['goods_thumb'], strrpos($goods['goods_thumb'], '.')+1);
$tmp['Data'] = get_goods_image_url($goods['goods_id'], $goods['goods_thumb'], true);
}
else
{
$tmp['Type'] = '';
$tmp['Data'] = '';
}
$result['Data'][$key]['goods_thumb'] = $tmp;
if($goods['goods_img'] != '')
{
$tmp['Type'] = substr($goods['goods_img'], strrpos($goods['goods_img'], '.')+1);
$tmp['Data'] = get_goods_image_url($goods['goods_id'], $goods['goods_img'], false);
}
else
{
$tmp['Type'] = '';
$tmp['Data'] = '';
}
$result['Data'][$key]['goods_img'] = $tmp;
}
show_json($GLOBALS['json'], $result, true);
}
/**
* 删除品牌
*
* @param array $post POST数据
*/
function API_DeleteBrand($post)
{
require_once(ROOT_PATH . ADMIN_PATH . '/includes/cls_exchange.php');
admin_privilege('brand_manage');
$brand_id = intval($_POST['Id']);
$exc = new exchange($GLOBALS['ecs']->table("brand"), $GLOBALS['db'], 'brand_id', 'brand_name');
$brand = $GLOBALS['db']->getRow("SELECT brand_logo FROM " . $GLOBALS['ecs']->table('brand') . " WHERE brand_id='$brand_id'");
if (!empty($brand['brand_logo']))
{
@unlink(ROOT_PATH . '/brandlogo/' . $brand['brand_logo']);
}
$exc->drop($brand_id);
/* 更新商品的品牌编号 */
$sql = "UPDATE " .$GLOBALS['ecs']->table('goods'). " SET brand_id=0 WHERE brand_id='$brand_id'";
$GLOBALS['db']->query($sql);
client_show_message(0, true);
}
/**
* 删除分类
*
* @param array $post POST数据
*/
function API_DeleteCategory($post)
{
/* 加载后台主操作函数 */
require_once(ROOT_PATH . ADMIN_PATH . '/includes/lib_main.php');
admin_privilege('cat_manage');
/* 初始化分类ID并取得分类名称 */
$cat_id = intval($_POST['Id']);
$cat_name = $GLOBALS['db']->getOne('SELECT cat_name FROM ' .$GLOBALS['ecs']->table('category'). " WHERE cat_id='$cat_id'");
/* 当前分类下是否有子分类 */
$cat_count = $GLOBALS['db']->getOne('SELECT COUNT(*) FROM ' .$GLOBALS['ecs']->table('category'). " WHERE parent_id='$cat_id'");
/* 当前分类下是否存在商品 */
$goods_count = $GLOBALS['db']->getOne('SELECT COUNT(*) FROM ' .$GLOBALS['ecs']->table('goods'). " WHERE cat_id='$cat_id'");
/* 如果不存在下级子分类或商品,则删除之 */
if ($cat_count == 0 && $goods_count == 0)
{
/* 删除分类 */
$sql = 'DELETE FROM ' .$GLOBALS['ecs']->table('category'). " WHERE cat_id = '$cat_id'";
if ($GLOBALS['db']->query($sql))
{
$GLOBALS['db']->query("DELETE FROM " . $GLOBALS['ecs']->table('nav') . "WHERE ctype = 'c' AND cid = '" . $cat_id . "' AND type = 'middle'");
clear_cache_files();
admin_log($cat_name, 'remove', 'category');
}
client_show_message(0, true);
}
else
{
client_show_message(400);
}
}
/**
* 删除商品
*
* @param array $post POST数据
*/
function API_DeleteGoods($post)
{
require_once(ROOT_PATH . ADMIN_PATH . '/includes/cls_exchange.php');
$exc = new exchange($GLOBALS['ecs']->table("goods"), $GLOBALS['db'], 'goods_id', 'goods_name');
admin_privilege('remove_back');
$goods_id = intval($_POST['Id']);
if ($exc->edit("is_delete = 1", $goods_id, ''))
{
client_show_message(0, true);
}
else
{
client_show_message(230);
}
}
function API_EditCategory($post)
{
/* 加载后台主操作函数 */
require_once(ROOT_PATH . ADMIN_PATH . '/includes/lib_main.php');
/* 初始化变量 */
$cat_id = !empty($_POST['cat_id']) ? intval($_POST['cat_id']) : 0;
$cat['parent_id'] = !empty($_POST['parent_id']) ? intval($_POST['parent_id']) : 0;
$cat['sort_order'] = !empty($_POST['sort_order']) ? intval($_POST['sort_order']) : 0;
$cat['keywords'] = !empty($_POST['keywords']) ? trim($_POST['keywords']) : '';
$cat['cat_desc'] = !empty($_POST['cat_desc']) ? $_POST['cat_desc'] : '';
$cat['measure_unit'] = !empty($_POST['measure_unit']) ? trim($_POST['measure_unit']) : '';
$cat['cat_name'] = !empty($_POST['cat_name']) ? trim($_POST['cat_name']) : '';
$cat['is_show'] = !empty($_POST['is_show']) ? intval($_POST['is_show']) : 0;
$cat['show_in_nav'] = !empty($_POST['show_in_nav']) ? intval($_POST['show_in_nav']): 0;
$cat['style'] = !empty($_POST['style']) ? trim($_POST['style']) : '';
$cat['grade'] = !empty($_POST['grade']) ? intval($_POST['grade']) : 0;
$cat['filter_attr'] = !empty($_POST['filter_attr']) ? intval($_POST['filter_attr']) : 0;
/* 判断上级目录是否合法 */
$children = array_keys(cat_list($cat_id, 0, false)); // 获得当前分类的所有下级分类
if (in_array($cat['parent_id'], $children))
{
/* 选定的父类是当前分类或当前分类的下级分类 */
client_show_message(401);
}
if($cat['grade'] > 10 || $cat['grade'] < 0)
{
/* 价格区间数超过范围 */
client_show_message(402);
}
if (cat_exists($cat['cat_name'], $cat['parent_id'], $cat_id))
{
/* 同级别下不能有重复的分类名称 */
client_show_message(403);
}
$dat = $GLOBALS['db']->getRow("SELECT cat_name, show_in_nav FROM ". $GLOBALS['ecs']->table('category') . " WHERE cat_id = '$cat_id'");
if ($GLOBALS['db']->autoExecute($GLOBALS['ecs']->table('category'), $cat, 'UPDATE', "cat_id='$cat_id'"))
{
if($cat['cat_name'] != $dat['cat_name'])
{
//如果分类名称发生了改变
$sql = "UPDATE " . $GLOBALS['ecs']->table('nav') . " SET name = '" . $cat['cat_name'] . "' WHERE ctype = 'c' AND cid = '" . $cat_id . "' AND type = 'middle'";
$GLOBALS['db']->query($sql);
}
if($cat['show_in_nav'] != $dat['show_in_nav'])
{
//是否显示于导航栏发生了变化
if($cat['show_in_nav'] == 1)
{
//显示
$nid = $GLOBALS['db']->getOne("SELECT id FROM ". $GLOBALS['ecs']->table('nav') . " WHERE ctype = 'c' AND cid = '" . $cat_id . "' AND type = 'middle'");
if(empty($nid))
{
//不存在
$vieworder = $GLOBALS['db']->getOne("SELECT max(vieworder) FROM ". $GLOBALS['ecs']->table('nav') . " WHERE type = 'middle'");
$vieworder += 2;
$uri = build_uri('category', array('cid'=> $cat_id), $cat['cat_name']);
$sql = "INSERT INTO " . $GLOBALS['ecs']->table('nav') . " (name,ctype,cid,ifshow,vieworder,opennew,url,type) VALUES('" . $cat['cat_name'] . "', 'c', '$cat_id','1','$vieworder','0', '" . $uri . "','middle')";
}
else
{
$sql = "UPDATE " . $GLOBALS['ecs']->table('nav') . " SET ifshow = 1 WHERE ctype = 'c' AND cid = '" . $cat_id . "' AND type = 'middle'";
}
$GLOBALS['db']->query($sql);
}
else
{
//去除
$GLOBALS['db']->query("UPDATE " . $GLOBALS['ecs']->table('nav') . " SET ifshow = 0 WHERE ctype = 'c' AND cid = '" . $cat_id . "' AND type = 'middle'");
}
}
}
/* 更新分類信息成功 */
clear_cache_files(); // 清除缓存
admin_log($_POST['cat_name'], 'edit', 'category'); // 记录管理员操作
client_show_message(0, true);
}
function API_EditBrand($post)
{
/* 加载后台主操作函数 */
require_once(ROOT_PATH . ADMIN_PATH . '/includes/lib_main.php');
require_once(ROOT_PATH . ADMIN_PATH . '/includes/cls_exchange.php');
require_once(ROOT_PATH . 'includes/cls_image.php');
/* 检查权限 */
admin_privilege('brand_manage');
$is_show = isset($_POST['is_show']) ? 1 : 0;
$brand_id = !empty($_POST['brand_id']) ? intval($_POST['brand_id']) : 0;
/*检查品牌名是否重复*/
$exc = new exchange($GLOBALS['ecs']->table("brand"), $GLOBALS['db'], 'brand_id', 'brand_name');
$is_only = $exc->is_only('brand_name', $_POST['brand_name'], '', '');
if (!$is_only)
{
client_show_message(301);
}
$param = "brand_name = '$_POST[brand_name]', site_url='$_POST[site_url]', brand_desc='$_POST[brand_desc]', is_show='$is_show', sort_order='$_POST[sort_order]' ";
/* 处理图片 */
$img_name = upload_image($_POST['brand_logo'], 'brandlogo');
if($img_name !== false)
{
$param .= " ,brand_logo = '" . basename($img_name) . "' ";
}
/* 更新数据 */
if ($exc->edit($param, $brand_id, ''))
{
/* 清除缓存 */
clear_cache_files();
admin_log($_POST['brand_name'], 'edit', 'brand');
client_show_message(0, true);
}
else
{
client_show_message(302);
}
}
function API_EditGoods($post)
{
$_POST['act'] = 'update';
API_AddGoods($post);
//client_show_message(0);
}
/**
* 出错函数
*
*/
function API_Error()
{
client_show_message(102);
}
?>分析下 是如何配置的 都有哪些功能
最新发布