You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

487 lines
16 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?php
/**
* shop 管理中心优惠活动管理
* ============================================================================
* * 版权所有 2005-2012 上海商派网络科技有限公司,并保留所有权利。
* 网站地址: http://www.shop.com
* ----------------------------------------------------------------------------
* 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和
* 使用;不允许对程序代码以任何形式任何目的的再发布。
* ============================================================================
* $Author: wayne $
* $Id: favourable.php 17217 2011-01-19 06:29:08Z wayne $
*/
define('IN_ASC', true);
require(dirname(__FILE__) . '/includes/init.php');
require(ROOT_PATH . 'includes/lib_goods.php');
$exc = new exchange($ecs->table('favourable_activity'), $db, 'act_id', 'act_name');
/*------------------------------------------------------ */
//-- 活动列表页
/*------------------------------------------------------ */
if ($_REQUEST['act'] == 'list')
{
admin_priv('favourable');
/* 模板赋值 */
$smarty->assign('full_page', 1);
$smarty->assign('ur_here', $_LANG['favourable_list']);
$smarty->assign('action_link', array('href' => 'favourable.php?act=add', 'text' => $_LANG['add_favourable']));
$list = favourable_list();
$smarty->assign('favourable_list', $list['item']);
$smarty->assign('filter', $list['filter']);
$smarty->assign('record_count', $list['record_count']);
$smarty->assign('page_count', $list['page_count']);
$sort_flag = sort_flag($list['filter']);
$smarty->assign($sort_flag['tag'], $sort_flag['img']);
/* 显示商品列表页面 */
assign_query_info();
$smarty->display('favourable_list.htm');
}
/*------------------------------------------------------ */
//-- 分页、排序、查询
/*------------------------------------------------------ */
elseif ($_REQUEST['act'] == 'query')
{
$list = favourable_list();
$smarty->assign('favourable_list', $list['item']);
$smarty->assign('filter', $list['filter']);
$smarty->assign('record_count', $list['record_count']);
$smarty->assign('page_count', $list['page_count']);
$sort_flag = sort_flag($list['filter']);
$smarty->assign($sort_flag['tag'], $sort_flag['img']);
make_json_result($smarty->fetch('favourable_list.htm'), '',
array('filter' => $list['filter'], 'page_count' => $list['page_count']));
}
/*------------------------------------------------------ */
//-- 删除
/*------------------------------------------------------ */
elseif ($_REQUEST['act'] == 'remove')
{
check_authz_json('favourable');
$id = intval($_GET['id']);
$favourable = favourable_info($id);
if (empty($favourable))
{
make_json_error($_LANG['favourable_not_exist']);
}
$name = $favourable['act_name'];
$exc->drop($id);
/* 记日志 */
admin_log($name, 'remove', 'favourable');
/* 清除缓存 */
clear_cache_files();
$url = 'favourable.php?act=query&' . str_replace('act=remove', '', $_SERVER['QUERY_STRING']);
ecs_header("Location: $url\n");
exit;
}
/*------------------------------------------------------ */
//-- 批量操作
/*------------------------------------------------------ */
elseif ($_REQUEST['act'] == 'batch')
{
/* 取得要操作的记录编号 */
if (empty($_POST['checkboxes']))
{
sys_msg($_LANG['no_record_selected']);
}
else
{
/* 检查权限 */
admin_priv('favourable');
$ids = $_POST['checkboxes'];
if (isset($_POST['drop']))
{
/* 删除记录 */
$sql = "DELETE FROM " . $ecs->table('favourable_activity') .
" WHERE act_id " . db_create_in($ids);
$db->query($sql);
/* 记日志 */
admin_log('', 'batch_remove', 'favourable');
/* 清除缓存 */
clear_cache_files();
$links[] = array('text' => $_LANG['back_favourable_list'], 'href' => 'favourable.php?act=list&' . list_link_postfix());
sys_msg($_LANG['batch_drop_ok']);
}
}
}
/*------------------------------------------------------ */
//-- 修改排序
/*------------------------------------------------------ */
elseif ($_REQUEST['act'] == 'edit_sort_order')
{
check_authz_json('favourable');
$id = intval($_POST['id']);
$val = intval($_POST['val']);
$sql = "UPDATE " . $ecs->table('favourable_activity') .
" SET sort_order = '$val'" .
" WHERE act_id = '$id' LIMIT 1";
$db->query($sql);
make_json_result($val);
}
/*------------------------------------------------------ */
//-- 添加、编辑
/*------------------------------------------------------ */
elseif ($_REQUEST['act'] == 'add' || $_REQUEST['act'] == 'edit')
{
/* 检查权限 */
admin_priv('favourable');
/* 是否添加 */
$is_add = $_REQUEST['act'] == 'add';
$smarty->assign('form_action', $is_add ? 'insert' : 'update');
/* 初始化、取得优惠活动信息 */
if ($is_add)
{
$favourable = array(
'act_id' => 0,
'act_name' => '',
'start_time' => date('Y-m-d', time() + 86400),
'end_time' => date('Y-m-d', time() + 4 * 86400),
'user_rank' => '',
'act_range' => FAR_ALL,
'act_range_ext' => '',
'min_amount' => 0,
'max_amount' => 0,
'act_type' => FAT_GOODS,
'act_type_ext' => 0,
'gift' => array()
);
}
else
{
if (empty($_GET['id']))
{
sys_msg('invalid param');
}
$id = intval($_GET['id']);
$favourable = favourable_info($id);
if (empty($favourable))
{
sys_msg($_LANG['favourable_not_exist']);
}
}
$smarty->assign('favourable', $favourable);
/* 取得用户等级 */
$user_rank_list = array();
$user_rank_list[] = array(
'rank_id' => 0,
'rank_name' => $_LANG['not_user'],
'checked' => strpos(',' . $favourable['user_rank'] . ',', ',0,') !== false
);
$sql = "SELECT rank_id, rank_name FROM " . $ecs->table('user_rank');
$res = $db->query($sql);
while ($row = $db->fetchRow($res))
{
$row['checked'] = strpos(',' . $favourable['user_rank'] . ',', ',' . $row['rank_id']. ',') !== false;
$user_rank_list[] = $row;
}
$smarty->assign('user_rank_list', $user_rank_list);
/* 取得优惠范围 */
$act_range_ext = array();
if ($favourable['act_range'] != FAR_ALL && !empty($favourable['act_range_ext']))
{
if ($favourable['act_range'] == FAR_CATEGORY)
{
$sql = "SELECT cat_id AS id, cat_name AS name FROM " . $ecs->table('category') .
" WHERE cat_id " . db_create_in($favourable['act_range_ext']);
}
elseif ($favourable['act_range'] == FAR_BRAND)
{
$sql = "SELECT brand_id AS id, brand_name AS name FROM " . $ecs->table('brand') .
" WHERE brand_id " . db_create_in($favourable['act_range_ext']);
}
else
{
$sql = "SELECT goods_id AS id, goods_name AS name FROM " . $ecs->table('goods') .
" WHERE goods_id " . db_create_in($favourable['act_range_ext']);
}
$act_range_ext = $db->getAll($sql);
}
$smarty->assign('act_range_ext', $act_range_ext);
/* 赋值时间控件的语言 */
$smarty->assign('cfg_lang', $_CFG['lang']);
/* 显示模板 */
if ($is_add)
{
$smarty->assign('ur_here', $_LANG['add_favourable']);
}
else
{
$smarty->assign('ur_here', $_LANG['edit_favourable']);
}
$href = 'favourable.php?act=list';
if (!$is_add)
{
$href .= '&' . list_link_postfix();
}
$smarty->assign('action_link', array('href' => $href, 'text' => $_LANG['favourable_list']));
assign_query_info();
$smarty->display('favourable_info.htm');
}
/*------------------------------------------------------ */
//-- 添加、编辑后提交
/*------------------------------------------------------ */
elseif ($_REQUEST['act'] == 'insert' || $_REQUEST['act'] == 'update')
{
/* 检查权限 */
admin_priv('favourable');
/* 是否添加 */
$is_add = $_REQUEST['act'] == 'insert';
/* 检查名称是否重复 */
$act_name = sub_str($_POST['act_name'], 255, false);
if (!$exc->is_only('act_name', $act_name, intval($_POST['id'])))
{
sys_msg($_LANG['act_name_exists']);
}
/* 检查享受优惠的会员等级 */
if (!isset($_POST['user_rank']))
{
sys_msg($_LANG['pls_set_user_rank']);
}
/* 检查优惠范围扩展信息 */
if (intval($_POST['act_range']) > 0 && !isset($_POST['act_range_ext']))
{
sys_msg($_LANG['pls_set_act_range']);
}
/* 检查金额上下限 */
$min_amount = floatval($_POST['min_amount']) >= 0 ? floatval($_POST['min_amount']) : 0;
$max_amount = floatval($_POST['max_amount']) >= 0 ? floatval($_POST['max_amount']) : 0;
if ($max_amount > 0 && $min_amount > $max_amount)
{
sys_msg($_LANG['amount_error']);
}
/* 取得赠品 */
$gift = array();
if (intval($_POST['act_type']) == FAT_GOODS && isset($_POST['gift_id']))
{
foreach ($_POST['gift_id'] as $key => $id)
{
$gift[] = array('id' => $id, 'name' => $_POST['gift_name'][$key], 'price' => $_POST['gift_price'][$key]);
}
}
/* 提交值 */
$favourable = array(
'act_id' => intval($_POST['id']),
'act_name' => $act_name,
'start_time' => local_strtotime($_POST['start_time']),
'end_time' => local_strtotime($_POST['end_time']),
'user_rank' => isset($_POST['user_rank']) ? join(',', $_POST['user_rank']) : '0',
'act_range' => intval($_POST['act_range']),
'act_range_ext' => intval($_POST['act_range']) == 0 ? '' : join(',', $_POST['act_range_ext']),
'min_amount' => floatval($_POST['min_amount']),
'max_amount' => floatval($_POST['max_amount']),
'act_type' => intval($_POST['act_type']),
'act_type_ext' => floatval($_POST['act_type_ext']),
'gift' => serialize($gift)
);
if ($favourable['act_type'] == FAT_GOODS)
{
$favourable['act_type_ext'] = round($favourable['act_type_ext']);
}
/* 保存数据 */
if ($is_add)
{
$db->autoExecute($ecs->table('favourable_activity'), $favourable, 'INSERT');
$favourable['act_id'] = $db->insert_id();
}
else
{
$db->autoExecute($ecs->table('favourable_activity'), $favourable, 'UPDATE', "act_id = '$favourable[act_id]'");
}
/* 记日志 */
if ($is_add)
{
admin_log($favourable['act_name'], 'add', 'favourable');
}
else
{
admin_log($favourable['act_name'], 'edit', 'favourable');
}
/* 清除缓存 */
clear_cache_files();
/* 提示信息 */
if ($is_add)
{
$links = array(
array('href' => 'favourable.php?act=add', 'text' => $_LANG['continue_add_favourable']),
array('href' => 'favourable.php?act=list', 'text' => $_LANG['back_favourable_list'])
);
sys_msg($_LANG['add_favourable_ok'], 0, $links);
}
else
{
$links = array(
array('href' => 'favourable.php?act=list&' . list_link_postfix(), 'text' => $_LANG['back_favourable_list'])
);
sys_msg($_LANG['edit_favourable_ok'], 0, $links);
}
}
/*------------------------------------------------------ */
//-- 搜索商品
/*------------------------------------------------------ */
elseif ($_REQUEST['act'] == 'search')
{
/* 检查权限 */
check_authz_json('favourable');
include_once(ROOT_PATH . 'includes/cls_json.php');
$json = new JSON;
$filter = $json->decode($_GET['JSON']);
$filter->keyword = json_str_iconv($filter->keyword);
if ($filter->act_range == FAR_ALL)
{
$arr[0] = array(
'id' => 0,
'name' => $_LANG['js_languages']['all_need_not_search']
);
}
elseif ($filter->act_range == FAR_CATEGORY)
{
$sql = "SELECT cat_id AS id, cat_name AS name FROM " . $ecs->table('category') .
" WHERE cat_name LIKE '%" . mysql_like_quote($filter->keyword) . "%' LIMIT 50";
$arr = $db->getAll($sql);
}
elseif ($filter->act_range == FAR_BRAND)
{
$sql = "SELECT brand_id AS id, brand_name AS name FROM " . $ecs->table('brand') .
" WHERE brand_name LIKE '%" . mysql_like_quote($filter->keyword) . "%' LIMIT 50";
$arr = $db->getAll($sql);
}
else
{
$sql = "SELECT goods_id AS id, goods_name AS name FROM " . $ecs->table('goods') .
" WHERE goods_name LIKE '%" . mysql_like_quote($filter->keyword) . "%'" .
" OR goods_sn LIKE '%" . mysql_like_quote($filter->keyword) . "%' LIMIT 50";
$arr = $db->getAll($sql);
}
if (empty($arr))
{
$arr = array(0 => array(
'id' => 0,
'name' => $_LANG['search_result_empty']
));
}
make_json_result($arr);
}
/*
* 取得优惠活动列表
* @return array
*/
function favourable_list()
{
$result = get_filter();
if ($result === false)
{
/* 过滤条件 */
$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['is_going'] = empty($_REQUEST['is_going']) ? 0 : 1;
$filter['sort_by'] = empty($_REQUEST['sort_by']) ? 'act_id' : trim($_REQUEST['sort_by']);
$filter['sort_order'] = empty($_REQUEST['sort_order']) ? 'DESC' : trim($_REQUEST['sort_order']);
$where = "";
if (!empty($filter['keyword']))
{
$where .= " AND act_name LIKE '%" . mysql_like_quote($filter['keyword']) . "%'";
}
if ($filter['is_going'])
{
$now = gmtime();
$where .= " AND start_time <= '$now' AND end_time >= '$now' ";
}
$sql = "SELECT COUNT(*) FROM " . $GLOBALS['ecs']->table('favourable_activity') .
" WHERE 1 $where";
$filter['record_count'] = $GLOBALS['db']->getOne($sql);
/* 分页大小 */
$filter = page_and_size($filter);
/* 查询 */
$sql = "SELECT * ".
"FROM " . $GLOBALS['ecs']->table('favourable_activity') .
" 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);
}
else
{
$sql = $result['sql'];
$filter = $result['filter'];
}
$res = $GLOBALS['db']->query($sql);
$list = array();
while ($row = $GLOBALS['db']->fetchRow($res))
{
$row['start_time'] = local_date('Y-m-d H:i', $row['start_time']);
$row['end_time'] = local_date('Y-m-d H:i', $row['end_time']);
$list[] = $row;
}
return array('item' => $list, 'filter' => $filter, 'page_count' => $filter['page_count'], 'record_count' => $filter['record_count']);
}
?>