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.
 
 
 
 

1201 lines
43 KiB

<?php
/**
* ECSHOP 红包类型的处理
* ============================================================================
* * 版权所有 2005-2016 上海商创网络科技有限公司,并保留所有权利。
* 网站地址: http://www.ecmoban.com;
* ----------------------------------------------------------------------------
* 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和
* 使用;不允许对程序代码以任何形式任何目的的再发布。
* ============================================================================
* $Author: liubo $
* $Id: bonus.php 17217 2011-01-19 06:29:08Z liubo $
*/
define('IN_ECS', true);
require(dirname(__FILE__) . '/includes/init.php');
/* act操作项的初始化 */
if (empty($_REQUEST['act']))
{
$_REQUEST['act'] = 'list';
}
else
{
$_REQUEST['act'] = trim($_REQUEST['act']);
}
/* 初始化$exc对象 */
$exc = new exchange($ecs->table('bonus_type'), $db, 'type_id', 'type_name');
$adminru = get_admin_ru_id();
//ecmoban模板堂 --zhuo start
if($adminru['ru_id'] == 0){
$smarty->assign('priv_ru', 1);
}else{
$smarty->assign('priv_ru', 0);
}
//ecmoban模板堂 --zhuo end
/*------------------------------------------------------ */
//-- 红包类型列表页面
/*------------------------------------------------------ */
if ($_REQUEST['act'] == 'list')
{
$smarty->assign('ur_here', $_LANG['04_bonustype_list']);
$smarty->assign('action_link', array('text' => $_LANG['bonustype_add'], 'href' => 'bonus.php?act=add'));
$smarty->assign('full_page', 1);
$list = get_type_list($adminru['ru_id']);
$smarty->assign('type_list', $list['item']);
$smarty->assign('filter', $list['filter']);
$smarty->assign('record_count', $list['record_count']);
$smarty->assign('page_count', $list['page_count']);
$store_list = get_common_store_list();
$smarty->assign('store_list', $store_list);
$sort_flag = sort_flag($list['filter']);
$smarty->assign($sort_flag['tag'], $sort_flag['img']);
assign_query_info();
$smarty->display('bonus_type.htm');
}
/*------------------------------------------------------ */
//-- 翻页、排序
/*------------------------------------------------------ */
if ($_REQUEST['act'] == 'query')
{
$list = get_type_list($adminru['ru_id']);
$smarty->assign('type_list', $list['item']);
$smarty->assign('filter', $list['filter']);
$smarty->assign('record_count', $list['record_count']);
$smarty->assign('page_count', $list['page_count']);
$store_list = get_common_store_list();
$smarty->assign('store_list', $store_list);
$sort_flag = sort_flag($list['filter']);
$smarty->assign($sort_flag['tag'], $sort_flag['img']);
make_json_result($smarty->fetch('bonus_type.htm'), '',
array('filter' => $list['filter'], 'page_count' => $list['page_count']));
}
/*------------------------------------------------------ */
//-- 编辑红包类型名称
/*------------------------------------------------------ */
if ($_REQUEST['act'] == 'edit_type_name')
{
check_authz_json('bonus_manage');
$id = intval($_POST['id']);
$val = json_str_iconv(trim($_POST['val']));
/* 检查红包类型名称是否重复 */
if (!$exc->is_only('type_name', $id, $val))
{
make_json_error($_LANG['type_name_exist']);
}
else
{
$exc->edit("type_name='$val'", $id);
make_json_result(stripslashes($val));
}
}
/*------------------------------------------------------ */
//-- 编辑红包金额
/*------------------------------------------------------ */
if ($_REQUEST['act'] == 'edit_type_money')
{
check_authz_json('bonus_manage');
$id = intval($_POST['id']);
$val = floatval($_POST['val']);
/* 检查红包类型名称是否重复 */
if ($val <= 0)
{
make_json_error($_LANG['type_money_error']);
}
else
{
$exc->edit("type_money='$val'", $id);
make_json_result(number_format($val, 2));
}
}
/*------------------------------------------------------ */
//-- 编辑订单下限
/*------------------------------------------------------ */
if ($_REQUEST['act'] == 'edit_min_amount')
{
check_authz_json('bonus_manage');
$id = intval($_POST['id']);
$val = floatval($_POST['val']);
if ($val < 0)
{
make_json_error($_LANG['min_amount_empty']);
}
else
{
$exc->edit("min_amount='$val'", $id);
make_json_result(number_format($val, 2));
}
}
/*------------------------------------------------------ */
//-- 删除红包类型
/*------------------------------------------------------ */
if ($_REQUEST['act'] == 'remove')
{
check_authz_json('bonus_manage');
$id = intval($_GET['id']);
$exc->drop($id);
/* 更新商品信息 */
$db->query("UPDATE " .$ecs->table('goods'). " SET bonus_type_id = 0 WHERE bonus_type_id = '$id'");
/* 删除用户的红包 */
$db->query("DELETE FROM " .$ecs->table('user_bonus'). " WHERE bonus_type_id = '$id'");
$url = 'bonus.php?act=query&' . str_replace('act=remove', '', $_SERVER['QUERY_STRING']);
ecs_header("Location: $url\n");
exit;
}
/*------------------------------------------------------ */
//-- 红包类型添加页面
/*------------------------------------------------------ */
if ($_REQUEST['act'] == 'add')
{
admin_priv('bonus_manage');
$smarty->assign('lang', $_LANG);
$smarty->assign('ur_here', $_LANG['bonustype_add']);
$smarty->assign('action_link', array('href' => 'bonus.php?act=list', 'text' => $_LANG['04_bonustype_list']));
$smarty->assign('action', 'add');
$smarty->assign('form_act', 'insert');
$smarty->assign('cfg_lang', $_CFG['lang']);
$next_month = local_strtotime('+1 months');
$bonus_arr['send_start_date'] = local_date('Y-m-d');
$bonus_arr['use_start_date'] = local_date('Y-m-d');
$bonus_arr['send_end_date'] = local_date('Y-m-d', $next_month);
$bonus_arr['use_end_date'] = local_date('Y-m-d', $next_month);
$smarty->assign('bonus_arr', $bonus_arr);
assign_query_info();
$smarty->display('bonus_type_info.htm');
}
/*------------------------------------------------------ */
//-- 红包类型添加的处理
/*------------------------------------------------------ */
if ($_REQUEST['act'] == 'insert')
{
/* 去掉红包类型名称前后的空格 */
$type_name = !empty($_POST['type_name']) ? trim($_POST['type_name']) : '';
/* 初始化变量 */
$type_id = !empty($_POST['type_id']) ? intval($_POST['type_id']) : 0;
$min_amount = !empty($_POST['min_amount']) ? intval($_POST['min_amount']) : 0;
$usebonus_type = isset($_POST['usebonus_type']) ? intval($_POST['usebonus_type']) : 0; //ecmoban模板堂 --zhuo
/* 检查类型是否有重复 */
$sql = "SELECT COUNT(*) FROM " .$ecs->table('bonus_type'). " WHERE type_name='$type_name'";
if ($db->getOne($sql) > 0)
{
$link[] = array('text' => $_LANG['go_back'], 'href' => 'javascript:history.back(-1)');
sys_msg($_LANG['type_name_exist'], 0, $link);
}
/* 获得日期信息 */
$send_startdate = local_strtotime($_POST['send_start_date']);
$send_enddate = local_strtotime($_POST['send_end_date']);
$use_startdate = local_strtotime($_POST['use_start_date']);
$use_enddate = local_strtotime($_POST['use_end_date']);
//ecmoban模板堂 --zhuo
/* 插入数据库。 */ //ecmoban模板堂 --zhuo usebonus_type
$sql = "INSERT INTO ".$ecs->table('bonus_type')." (type_name, type_money,send_start_date,send_end_date,use_start_date,use_end_date,send_type, usebonus_type, user_id,min_amount, min_goods_amount)
VALUES ('$type_name',
'$_POST[type_money]',
'$send_startdate',
'$send_enddate',
'$use_startdate',
'$use_enddate',
'$_POST[send_type]',
'$usebonus_type',
'$adminru[ru_id]',
'$min_amount','" . floatval($_POST['min_goods_amount']) ."')";
$db->query($sql);
/* 记录管理员操作 */
admin_log($_POST['type_name'], 'add', 'bonustype');
/* 清除缓存 */
clear_cache_files();
/* 提示信息 */
$link[0]['text'] = $_LANG['continus_add'];
$link[0]['href'] = 'bonus.php?act=add';
$link[1]['text'] = $_LANG['back_list'];
$link[1]['href'] = 'bonus.php?act=list';
sys_msg($_LANG['add'] . "&nbsp;" .$_POST['type_name'] . "&nbsp;" . $_LANG['attradd_succed'],0, $link);
}
/*------------------------------------------------------ */
//-- 红包类型编辑页面
/*------------------------------------------------------ */
if ($_REQUEST['act'] == 'edit')
{
admin_priv('bonus_manage');
/* 获取红包类型数据 */
$type_id = !empty($_GET['type_id']) ? intval($_GET['type_id']) : 0;
$bonus_arr = $db->getRow("SELECT * FROM " .$ecs->table('bonus_type'). " WHERE type_id = '$type_id'");
$bonus_arr['send_start_date'] = local_date('Y-m-d', $bonus_arr['send_start_date']);
$bonus_arr['send_end_date'] = local_date('Y-m-d', $bonus_arr['send_end_date']);
$bonus_arr['use_start_date'] = local_date('Y-m-d', $bonus_arr['use_start_date']);
$bonus_arr['use_end_date'] = local_date('Y-m-d', $bonus_arr['use_end_date']);
$smarty->assign('lang', $_LANG);
$smarty->assign('ur_here', $_LANG['bonustype_edit']);
$smarty->assign('action_link', array('href' => 'bonus.php?act=list&' . list_link_postfix(), 'text' => $_LANG['04_bonustype_list']));
$smarty->assign('form_act', 'update');
$smarty->assign('bonus_arr', $bonus_arr);
assign_query_info();
$smarty->display('bonus_type_info.htm');
}
/*------------------------------------------------------ */
//-- 红包类型编辑的处理
/*------------------------------------------------------ */
if ($_REQUEST['act'] == 'update')
{
/* 获得日期信息 */
$send_startdate = local_strtotime($_POST['send_start_date']);
$send_enddate = local_strtotime($_POST['send_end_date']);
$use_startdate = local_strtotime($_POST['use_start_date']);
$use_enddate = local_strtotime($_POST['use_end_date']);
/* 对数据的处理 */
$type_name = !empty($_POST['type_name']) ? trim($_POST['type_name']) : '';
$type_id = !empty($_POST['type_id']) ? intval($_POST['type_id']) : 0;
$min_amount = !empty($_POST['min_amount']) ? intval($_POST['min_amount']) : 0;
$usebonus_type = isset($_POST['usebonus_type']) ? intval($_POST['usebonus_type']) : 0; //ecmoban模板堂 --zhuo
$sql = "UPDATE " .$ecs->table('bonus_type'). " SET ".
"type_name = '$type_name', ".
"type_money = '$_POST[type_money]', ".
"send_start_date = '$send_startdate', ".
"send_end_date = '$send_enddate', ".
"use_start_date = '$use_startdate', ".
"use_end_date = '$use_enddate', ".
"send_type = '$_POST[send_type]', ".
"usebonus_type = '$usebonus_type', ". //ecmoban模板堂 --zhuo
"min_amount = '$min_amount', " .
"min_goods_amount = '" . floatval($_POST['min_goods_amount']) . "' ".
"WHERE type_id = '$type_id'";
$db->query($sql);
/* 记录管理员操作 */
admin_log($_POST['type_name'], 'edit', 'bonustype');
/* 清除缓存 */
clear_cache_files();
/* 提示信息 */
$link[] = array('text' => $_LANG['back_list'], 'href' => 'bonus.php?act=list&' . list_link_postfix());
sys_msg($_LANG['edit'] .' '.$_POST['type_name'].' '. $_LANG['attradd_succed'], 0, $link);
}
/*------------------------------------------------------ */
//-- 红包发送页面
/*------------------------------------------------------ */
if ($_REQUEST['act'] == 'send')
{
admin_priv('bonus_manage');
/* 取得参数 */
$id = !empty($_REQUEST['id']) ? intval($_REQUEST['id']) : '';
assign_query_info();
$smarty->assign('ur_here', $_LANG['send_bonus']);
$smarty->assign('action_link', array('href' => 'bonus.php?act=list', 'text' => $_LANG['04_bonustype_list']));
if ($_REQUEST['send_by'] == SEND_BY_USER)
{
$smarty->assign('id', $id);
$smarty->assign('ranklist', get_rank_list());
$smarty->display('bonus_by_user.htm');
}
elseif ($_REQUEST['send_by'] == SEND_BY_GOODS)
{
/* 查询此红包类型信息 */
$bonus_type = $db->GetRow("SELECT type_id, type_name FROM ".$ecs->table('bonus_type').
" WHERE type_id='$_REQUEST[id]'");
/* 查询红包类型的商品列表 */
$goods_list = get_bonus_goods($_REQUEST['id']);
/* 查询其他红包类型的商品 */
$sql = "SELECT goods_id FROM " .$ecs->table('goods').
" WHERE bonus_type_id > 0 AND bonus_type_id <> '$_REQUEST[id]'";
$other_goods_list = $db->getCol($sql);
$smarty->assign('other_goods', join(',', $other_goods_list));
/* 模板赋值 */
$smarty->assign('cat_list', cat_list());
$smarty->assign('brand_list', get_brand_list());
$smarty->assign('bonus_type', $bonus_type);
$smarty->assign('goods_list', $goods_list);
$smarty->display('bonus_by_goods.htm');
}
elseif ($_REQUEST['send_by'] == SEND_BY_PRINT)
{
$smarty->assign('type_list', get_bonus_type());
$smarty->display('bonus_by_print.htm');
}
}
/*------------------------------------------------------ */
//-- 处理红包的发送页面
/*------------------------------------------------------ */
if ($_REQUEST['act'] == 'send_by_user')
{
$user_list = array();
$start = empty($_REQUEST['start']) ? 0 : intval($_REQUEST['start']);
$limit = empty($_REQUEST['limit']) ? 10 : intval($_REQUEST['limit']);
$validated_email = empty($_REQUEST['validated_email']) ? 0 : intval($_REQUEST['validated_email']);
$send_count = 0;
if (isset($_REQUEST['send_rank']))
{
/* 按会员等级来发放红包 */
$rank_id = intval($_REQUEST['rank_id']);
if ($rank_id > 0)
{
$sql = "SELECT min_points, max_points, special_rank FROM " . $ecs->table('user_rank') . " WHERE rank_id = '$rank_id'";
$row = $db->getRow($sql);
if ($row['special_rank'])
{
/* 特殊会员组处理 */
$sql = 'SELECT COUNT(*) FROM ' . $ecs->table('users'). " WHERE user_rank = '$rank_id'";
$send_count = $db->getOne($sql);
if($validated_email)
{
$sql = 'SELECT user_id, email, user_name FROM ' . $ecs->table('users').
" WHERE user_rank = '$rank_id' AND is_validated = 1".
" LIMIT $start, $limit";
}
else
{
$sql = 'SELECT user_id, email, user_name FROM ' . $ecs->table('users').
" WHERE user_rank = '$rank_id'".
" LIMIT $start, $limit";
}
}
else
{
$sql = 'SELECT COUNT(*) FROM ' . $ecs->table('users').
" WHERE rank_points >= " . intval($row['min_points']) . " AND rank_points < " . intval($row['max_points']);
$send_count = $db->getOne($sql);
if($validated_email)
{
$sql = 'SELECT user_id, email, user_name FROM ' . $ecs->table('users').
" WHERE rank_points >= " . intval($row['min_points']) . " AND rank_points < " . intval($row['max_points']) .
" AND is_validated = 1 LIMIT $start, $limit";
}
else
{
$sql = 'SELECT user_id, email, user_name FROM ' . $ecs->table('users').
" WHERE rank_points >= " . intval($row['min_points']) . " AND rank_points < " . intval($row['max_points']) .
" LIMIT $start, $limit";
}
}
$user_list = $db->getAll($sql);
$count = count($user_list);
}
}
elseif (isset($_REQUEST['send_user']))
{
/* 按会员列表发放红包 */
/* 如果是空数组,直接返回 */
if (empty($_REQUEST['user']))
{
sys_msg($_LANG['send_user_empty'], 1);
}
$user_array = (is_array($_REQUEST['user'])) ? $_REQUEST['user'] : explode(',', $_REQUEST['user']);
$send_count = count($user_array);
$id_array = array_slice($user_array, $start, $limit);
/* 根据会员ID取得用户名和邮件地址 */
$sql = "SELECT user_id, email, user_name FROM " .$ecs->table('users').
" WHERE user_id " .db_create_in($id_array);
$user_list = $db->getAll($sql);
$count = count($user_list);
}
/* 发送红包 */
$loop = 0;
$bonus_type = bonus_type_info($_REQUEST['id']);
$tpl = get_mail_template('send_bonus');
$today = local_date($_CFG['date_format']);
foreach ($user_list AS $key => $val)
{
/* 发送邮件通知 */
$smarty->assign('user_name', $val['user_name']);
$smarty->assign('shop_name', $GLOBALS['_CFG']['shop_name']);
$smarty->assign('send_date', $today);
$smarty->assign('sent_date', $today);
$smarty->assign('count', 1);
$smarty->assign('money', price_format($bonus_type['type_money']));
$content = $smarty->fetch('str:' . $tpl['template_content']);
if (add_to_maillist($val['user_name'], $val['email'], $tpl['template_subject'], $content, $tpl['is_html']))
{
/* 向会员红包表录入数据 */
$sql = "INSERT INTO " . $ecs->table('user_bonus') .
"(bonus_type_id, bonus_sn, user_id, used_time, order_id, emailed) " .
"VALUES ('$_REQUEST[id]', 0, '$val[user_id]', 0, 0, " .BONUS_MAIL_SUCCEED. ")";
$db->query($sql);
}
else
{
/* 邮件发送失败,更新数据库 */
$sql = "INSERT INTO " . $ecs->table('user_bonus') .
"(bonus_type_id, bonus_sn, user_id, used_time, order_id, emailed) " .
"VALUES ('$_REQUEST[id]', 0, '$val[user_id]', 0, 0, " .BONUS_MAIL_FAIL. ")";
$db->query($sql);
}
if ($loop >= $limit)
{
break;
}
else
{
$loop++;
}
}
//admin_log(addslashes($_LANG['send_bonus']), 'add', 'bonustype');
if ($send_count > ($start + $limit))
{
/* */
$href = "bonus.php?act=send_by_user&start=" . ($start+$limit) . "&limit=$limit&id=$_REQUEST[id]&";
if (isset($_REQUEST['send_rank']))
{
$href .= "send_rank=1&rank_id=$rank_id";
}
if (isset($_REQUEST['send_user']))
{
$href .= "send_user=1&user=" . implode(',', $user_array);
}
$link[] = array('text' => $_LANG['send_continue'], 'href' => $href);
}
$link[] = array('text' => $_LANG['back_list'], 'href' => 'bonus.php?act=list');
sys_msg(sprintf($_LANG['sendbonus_count'], $count), 0, $link);
}
/*------------------------------------------------------ */
//-- 发送邮件
/*------------------------------------------------------ */
if ($_REQUEST['act'] == 'send_mail')
{
/* 取得参数:红包id */
$bonus_id = intval($_REQUEST['bonus_id']);
if ($bonus_id <= 0)
{
die('invalid params');
}
/* 取得红包信息 */
include_once(ROOT_PATH . 'includes/lib_order.php');
$bonus = bonus_info($bonus_id);
if (empty($bonus))
{
sys_msg($_LANG['bonus_not_exist']);
}
/* 发邮件 */
$count = send_bonus_mail($bonus['bonus_type_id'], array($bonus_id));
$link[0]['text'] = $_LANG['back_bonus_list'];
$link[0]['href'] = 'bonus.php?act=bonus_list&bonus_type=' . $bonus['bonus_type_id'];
sys_msg(sprintf($_LANG['success_send_mail'], $count), 0, $link);
}
/*------------------------------------------------------ */
//-- 按印刷品发放红包
/*------------------------------------------------------ */
if ($_REQUEST['act'] == 'send_by_print')
{
@set_time_limit(0);
/* 红下红包的类型ID和生成的数量的处理 */
$bonus_typeid = !empty($_POST['bonus_type_id']) ? $_POST['bonus_type_id'] : 0;
$bonus_sum = !empty($_POST['bonus_sum']) ? $_POST['bonus_sum'] : 1;
/* 生成红包序列号 */
$num = $db->getOne("SELECT MAX(bonus_sn) FROM ". $ecs->table('user_bonus'));
$num = $num ? floor($num / 10000) : 100000;
for ($i = 0, $j = 0; $i < $bonus_sum; $i++)
{
$bonus_sn = ($num + $i) . str_pad(mt_rand(0, 9999), 4, '0', STR_PAD_LEFT);
$bonus_password = strtoupper(mc_random(10));
$db->query("INSERT INTO ".$ecs->table('user_bonus')." (bonus_type_id, bonus_sn, bonus_password) VALUES('$bonus_typeid', '$bonus_sn', '$bonus_password')");
$j++;
}
/* 记录管理员操作 */
admin_log($bonus_sn, 'add', 'userbonus');
/* 清除缓存 */
clear_cache_files();
/* 提示信息 */
$link[0]['text'] = $_LANG['back_bonus_list'];
$link[0]['href'] = 'bonus.php?act=bonus_list&bonus_type=' . $bonus_typeid;
sys_msg($_LANG['creat_bonus'] . $j . $_LANG['creat_bonus_num'], 0, $link);
}
/*------------------------------------------------------ */
//-- 导出线下发放的信息
/*------------------------------------------------------ */
if ($_REQUEST['act'] == 'gen_excel')
{
@set_time_limit(0);
/* 获得此线下红包类型的ID */
$tid = !empty($_GET['tid']) ? intval($_GET['tid']) : 0;
$type_name = $db->getOne("SELECT type_name FROM ".$ecs->table('bonus_type')." WHERE type_id = '$tid'");
/* 文件名称 */
$bonus_filename = $type_name .'_bonus_list';
if (EC_CHARSET != 'gbk')
{
$bonus_filename = ecs_iconv('UTF8', 'GB2312',$bonus_filename);
}
header("Content-type: application/vnd.ms-excel; charset=utf-8");
header("Content-Disposition: attachment; filename=$bonus_filename.xls");
/* 文件标题 */
if (EC_CHARSET != 'gbk')
{
echo ecs_iconv('UTF8', 'GB2312', $_LANG['bonus_excel_file']) . "\t\n";
/* 红包序列号, 红包金额, 类型名称(红包名称), 使用结束日期 */
echo ecs_iconv('UTF8', 'GB2312', $_LANG['bonus_sn']) ."\t";
echo ecs_iconv('UTF8', 'GB2312', $_LANG['type_money']) ."\t";
echo ecs_iconv('UTF8', 'GB2312', $_LANG['type_name']) ."\t";
echo ecs_iconv('UTF8', 'GB2312', $_LANG['use_enddate']) ."\t\n";
}
else
{
echo $_LANG['bonus_excel_file'] . "\t\n";
/* 红包序列号, 红包金额, 类型名称(红包名称), 使用结束日期 */
echo $_LANG['bonus_sn'] ."\t";
echo $_LANG['type_money'] ."\t";
echo $_LANG['type_name'] ."\t";
echo $_LANG['use_enddate'] ."\t\n";
}
$val = array();
$sql = "SELECT ub.bonus_id, ub.bonus_type_id, ub.bonus_sn, bt.type_name, bt.type_money, bt.use_end_date ".
"FROM ".$ecs->table('user_bonus')." AS ub, ".$ecs->table('bonus_type')." AS bt ".
"WHERE bt.type_id = ub.bonus_type_id AND ub.bonus_type_id = '$tid' ORDER BY ub.bonus_id DESC";
$res = $db->query($sql);
$code_table = array();
while ($val = $db->fetchRow($res))
{
echo $val['bonus_sn'] . "\t";
echo $val['type_money'] . "\t";
if (!isset($code_table[$val['type_name']]))
{
if (EC_CHARSET != 'gbk')
{
$code_table[$val['type_name']] = ecs_iconv('UTF8', 'GB2312', $val['type_name']);
}
else
{
$code_table[$val['type_name']] = $val['type_name'];
}
}
echo $code_table[$val['type_name']] . "\t";
echo local_date('Y-m-d', $val['use_end_date']);
echo "\t\n";
}
}
/*------------------------------------------------------ */
//-- 搜索商品
/*------------------------------------------------------ */
if ($_REQUEST['act'] == 'get_goods_list')
{
include_once(ROOT_PATH . 'includes/cls_json.php');
$json = new JSON;
$filters = $json->decode($_GET['JSON']);
$arr = get_goods_list($filters);
$opt = array();
foreach ($arr AS $key => $val)
{
$opt[] = array('value' => $val['goods_id'],
'text' => $val['goods_name'],
'data' => $val['shop_price']);
}
make_json_result($opt);
}
/*------------------------------------------------------ */
//-- 添加发放红包的商品
/*------------------------------------------------------ */
if ($_REQUEST['act'] == 'add_bonus_goods')
{
include_once(ROOT_PATH . 'includes/cls_json.php');
$json = new JSON;
check_authz_json('bonus_manage');
$add_ids = $json->decode($_GET['add_ids']);
$args = $json->decode($_GET['JSON']);
$type_id = $args[0];
foreach ($add_ids AS $key => $val)
{
$sql = "UPDATE " .$ecs->table('goods'). " SET bonus_type_id='$type_id' WHERE goods_id='$val'";
$db->query($sql, 'SILENT') or make_json_error($db->error());
}
/* 重新载入 */
$arr = get_bonus_goods($type_id);
$opt = array();
foreach ($arr AS $key => $val)
{
$opt[] = array('value' => $val['goods_id'],
'text' => $val['goods_name'],
'data' => '');
}
make_json_result($opt);
}
/*------------------------------------------------------ */
//-- 删除发放红包的商品
/*------------------------------------------------------ */
if ($_REQUEST['act'] == 'drop_bonus_goods')
{
include_once(ROOT_PATH . 'includes/cls_json.php');
$json = new JSON;
check_authz_json('bonus_manage');
$drop_goods = $json->decode($_GET['drop_ids']);
$drop_goods_ids = db_create_in($drop_goods);
$arguments = $json->decode($_GET['JSON']);
$type_id = $arguments[0];
$db->query("UPDATE ".$ecs->table('goods')." SET bonus_type_id = 0 ".
"WHERE bonus_type_id = '$type_id' AND goods_id " .$drop_goods_ids);
/* 重新载入 */
$arr = get_bonus_goods($type_id);
$opt = array();
foreach ($arr AS $key => $val)
{
$opt[] = array('value' => $val['goods_id'],
'text' => $val['goods_name'],
'data' => '');
}
make_json_result($opt);
}
/*------------------------------------------------------ */
//-- 搜索用户
/*------------------------------------------------------ */
if ($_REQUEST['act'] == 'search_users')
{
$keywords = json_str_iconv(trim($_GET['keywords']));
$sql = "SELECT user_id, user_name FROM " . $ecs->table('users') .
" WHERE user_name LIKE '%" . mysql_like_quote($keywords) . "%' OR user_id LIKE '%" . mysql_like_quote($keywords) . "%'";
$row = $db->getAll($sql);
make_json_result($row);
}
/*------------------------------------------------------ */
//-- 红包列表
/*------------------------------------------------------ */
if ($_REQUEST['act'] == 'bonus_list')
{
$smarty->assign('full_page', 1);
$smarty->assign('ur_here', $_LANG['bonus_list']);
$smarty->assign('action_link', array('href' => 'bonus.php?act=list', 'text' => $_LANG['04_bonustype_list']));
$list = get_bonus_list();
/* 赋值是否显示红包序列号 */
$bonus_type = bonus_type_info(intval($_REQUEST['bonus_type']));
if ($bonus_type['send_type'] == SEND_BY_PRINT)
{
$smarty->assign('show_bonus_sn', 1);
}
/* 赋值是否显示发邮件操作和是否发过邮件 */
elseif ($bonus_type['send_type'] == SEND_BY_USER)
{
$smarty->assign('show_mail', 1);
}
$smarty->assign('bonus_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('bonus_list.htm');
}
/*------------------------------------------------------ */
//-- 红包列表翻页、排序
/*------------------------------------------------------ */
if ($_REQUEST['act'] == 'query_bonus')
{
$list = get_bonus_list();
/* 赋值是否显示红包序列号 */
$bonus_type = bonus_type_info(intval($_REQUEST['bonus_type']));
if ($bonus_type['send_type'] == SEND_BY_PRINT)
{
$smarty->assign('show_bonus_sn', 1);
}
/* 赋值是否显示发邮件操作和是否发过邮件 */
elseif ($bonus_type['send_type'] == SEND_BY_USER)
{
$smarty->assign('show_mail', 1);
}
$smarty->assign('bonus_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('bonus_list.htm'), '',
array('filter' => $list['filter'], 'page_count' => $list['page_count']));
}
/*------------------------------------------------------ */
//-- 删除红包
/*------------------------------------------------------ */
elseif ($_REQUEST['act'] == 'remove_bonus')
{
check_authz_json('bonus_manage');
$id = intval($_GET['id']);
$db->query("DELETE FROM " .$ecs->table('user_bonus'). " WHERE bonus_id='$id'");
$url = 'bonus.php?act=query_bonus&' . str_replace('act=remove_bonus', '', $_SERVER['QUERY_STRING']);
ecs_header("Location: $url\n");
exit;
}
/*------------------------------------------------------ */
//-- 批量操作
/*------------------------------------------------------ */
if ($_REQUEST['act'] == 'batch')
{
/* 检查权限 */
admin_priv('bonus_manage');
/* 去掉参数:红包类型 */
$bonus_type_id = intval($_REQUEST['bonus_type']);
/* 取得选中的红包id */
if (isset($_POST['checkboxes']))
{
$bonus_id_list = $_POST['checkboxes'];
/* 删除红包 */
if (isset($_POST['drop']))
{
$sql = "DELETE FROM " . $ecs->table('user_bonus'). " WHERE bonus_id " . db_create_in($bonus_id_list);
$db->query($sql);
admin_log(count($bonus_id_list), 'remove', 'userbonus');
clear_cache_files();
$link[] = array('text' => $_LANG['back_bonus_list'],
'href' => 'bonus.php?act=bonus_list&bonus_type='. $bonus_type_id);
sys_msg(sprintf($_LANG['batch_drop_success'], count($bonus_id_list)), 0, $link);
}
/* 发邮件 */
elseif (isset($_POST['mail']))
{
$count = send_bonus_mail($bonus_type_id, $bonus_id_list);
$link[] = array('text' => $_LANG['back_bonus_list'],
'href' => 'bonus.php?act=bonus_list&bonus_type='. $bonus_type_id);
sys_msg(sprintf($_LANG['success_send_mail'], $count), 0, $link);
}
}
else
{
sys_msg($_LANG['no_select_bonus'], 1);
}
}
/**
* 获取红包类型列表
* @access public
* @return void
*/
function get_type_list($ru_id)
{
/* 获得所有红包类型的发放数量 */
$sql = "SELECT bonus_type_id, COUNT(*) AS sent_count".
" FROM " .$GLOBALS['ecs']->table('user_bonus') .
" GROUP BY bonus_type_id";
$res = $GLOBALS['db']->query($sql);
$sent_arr = array();
while ($row = $GLOBALS['db']->fetchRow($res))
{
$sent_arr[$row['bonus_type_id']] = $row['sent_count'];
}
/* 获得所有红包类型的发放数量 */
$sql = "SELECT bonus_type_id, COUNT(*) AS used_count".
" FROM " .$GLOBALS['ecs']->table('user_bonus') .
" WHERE used_time > 0".
" GROUP BY bonus_type_id";
$res = $GLOBALS['db']->query($sql);
$used_arr = array();
while ($row = $GLOBALS['db']->fetchRow($res))
{
$used_arr[$row['bonus_type_id']] = $row['used_count'];
}
$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['sort_by'] = empty($_REQUEST['sort_by']) ? 'bt.type_id' : trim($_REQUEST['sort_by']);
$filter['sort_order'] = empty($_REQUEST['sort_order']) ? 'DESC' : trim($_REQUEST['sort_order']);
$filter['use_type'] = empty($_REQUEST['use_type']) ? 0 : intval($_REQUEST['use_type']);
$where = " WHERE 1";
//ecmoban模板堂 --zhuo start
if($filter['use_type'] == 1){ //自营
$where .= " AND bt.user_id = 0 AND bt.usebonus_type = 0";
}else if($filter['use_type'] == 2){ //商家
$where .= " AND bt.user_id > 0 AND bt.usebonus_type = 0";
}else if($filter['use_type'] == 3){ //全场
$where .= " AND bt.usebonus_type = 1";
}else if($filter['use_type'] == 4){ //商家自主使用
$where .= " AND bt.user_id = '$ru_id' AND bt.usebonus_type = 0";
}else{
if($ru_id > 0){
$where .= " AND (bt.user_id = '$ru_id' OR bt.usebonus_type = 1)";
}
}
if (!empty($filter['keyword']))
{
$where .= " AND bt.type_name LIKE '%" . mysql_like_quote($filter['keyword']) . "%'";
}
//ecmoban模板堂 --zhuo end
//管理员查询的权限 -- 店铺查询 start
$filter['store_search'] = empty($_REQUEST['store_search']) ? 0 : intval($_REQUEST['store_search']);
$filter['merchant_id'] = isset($_REQUEST['merchant_id']) ? intval($_REQUEST['merchant_id']) : 0;
$filter['store_keyword'] = isset($_REQUEST['store_keyword']) ? trim($_REQUEST['store_keyword']) : '';
$store_where = '';
$store_search_where = '';
if($filter['store_search'] !=0){
if($ru_id == 0){
if($_REQUEST['store_type']){
$store_search_where = "AND msi.shopNameSuffix = '" .$_REQUEST['store_type']. "'";
}
if($filter['store_search'] == 1){
$where .= " AND bt.user_id = '" .$filter['merchant_id']. "' ";
}elseif($filter['store_search'] == 2){
$store_where .= " AND msi.rz_shopName LIKE '%" . mysql_like_quote($filter['store_keyword']) . "%'";
}elseif($filter['store_search'] == 3){
$store_where .= " AND msi.shoprz_brandName LIKE '%" . mysql_like_quote($filter['store_keyword']) . "%' " . $store_search_where;
}
if($filter['store_search'] > 1){
$where .= " AND (SELECT msi.user_id FROM " . $GLOBALS['ecs']->table('merchants_shop_information') .' as msi ' .
" WHERE msi.user_id = bt.user_id $store_where) > 0 ";
}
}
}
//管理员查询的权限 -- 店铺查询 end
$sql = "SELECT COUNT(*) FROM ".$GLOBALS['ecs']->table('bonus_type') ." AS bt ". $where;
$filter['record_count'] = $GLOBALS['db']->getOne($sql);
/* 分页大小 */
$filter = page_and_size($filter);
$sql = "SELECT bt.* FROM " .$GLOBALS['ecs']->table('bonus_type') ." AS bt ". $where . " ORDER BY $filter[sort_by] $filter[sort_order]";
set_filter($filter, $sql);
}
else
{
$sql = $result['sql'];
$filter = $result['filter'];
}
$arr = array();
$res = $GLOBALS['db']->selectLimit($sql, $filter['page_size'], $filter['start']);
while ($row = $GLOBALS['db']->fetchRow($res))
{
$row['send_by'] = $GLOBALS['_LANG']['send_by'][$row['send_type']];
$row['send_count'] = isset($sent_arr[$row['type_id']]) ? $sent_arr[$row['type_id']] : 0;
$row['use_count'] = isset($used_arr[$row['type_id']]) ? $used_arr[$row['type_id']] : 0;
$row['user_name'] = get_shop_name($row['user_id'], 1); //ecmoban模板堂 --zhuo
$arr[] = $row;
}
$arr = array('item' => $arr, 'filter' => $filter, 'page_count' => $filter['page_count'], 'record_count' => $filter['record_count']);
return $arr;
}
/**
* 查询红包类型的商品列表
*
* @access public
* @param integer $type_id
* @return array
*/
function get_bonus_goods($type_id)
{
$sql = "SELECT goods_id, goods_name FROM " .$GLOBALS['ecs']->table('goods').
" WHERE bonus_type_id = '$type_id'";
$row = $GLOBALS['db']->getAll($sql);
return $row;
}
/**
* 获取用户红包列表
* @access public
* @param $page_param
* @return void
*/
function get_bonus_list()
{
/* 查询条件 */
$filter['sort_by'] = empty($_REQUEST['sort_by']) ? 'bonus_type_id' : trim($_REQUEST['sort_by']);
$filter['sort_order'] = empty($_REQUEST['sort_order']) ? 'DESC' : trim($_REQUEST['sort_order']);
$filter['bonus_type'] = empty($_REQUEST['bonus_type']) ? 0 : intval($_REQUEST['bonus_type']);
$where = empty($filter['bonus_type']) ? '' : " WHERE bonus_type_id='$filter[bonus_type]'";
$sql = "SELECT COUNT(*) FROM ".$GLOBALS['ecs']->table('user_bonus'). $where;
$filter['record_count'] = $GLOBALS['db']->getOne($sql);
/* 分页大小 */
$filter = page_and_size($filter);
$sql = "SELECT ub.*, u.user_name, u.email, o.order_sn, bt.type_name ".
" FROM ".$GLOBALS['ecs']->table('user_bonus'). " AS ub ".
" LEFT JOIN " .$GLOBALS['ecs']->table('bonus_type'). " AS bt ON bt.type_id=ub.bonus_type_id ".
" LEFT JOIN " .$GLOBALS['ecs']->table('users'). " AS u ON u.user_id=ub.user_id ".
" LEFT JOIN " .$GLOBALS['ecs']->table('order_info'). " AS o ON o.order_id=ub.order_id $where ".
" ORDER BY ".$filter['sort_by']." ".$filter['sort_order'].
" LIMIT ". $filter['start'] .", $filter[page_size]";
$row = $GLOBALS['db']->getAll($sql);
foreach ($row AS $key => $val)
{
$row[$key]['used_time'] = $val['used_time'] == 0 ?
$GLOBALS['_LANG']['no_use'] : local_date($GLOBALS['_CFG']['date_format'], $val['used_time']);
$row[$key]['emailed'] = $GLOBALS['_LANG']['mail_status'][$row[$key]['emailed']];
}
$arr = array('item' => $row, 'filter' => $filter, 'page_count' => $filter['page_count'], 'record_count' => $filter['record_count']);
return $arr;
}
/**
* 取得红包类型信息
* @param int $bonus_type_id 红包类型id
* @return array
*/
function bonus_type_info($bonus_type_id)
{
$sql = "SELECT * FROM " . $GLOBALS['ecs']->table('bonus_type') .
" WHERE type_id = '$bonus_type_id'";
return $GLOBALS['db']->getRow($sql);
}
/**
* 发送红包邮件
* @param int $bonus_type_id 红包类型id
* @param array $bonus_id_list 红包id数组
* @return int 成功发送数量
*/
function send_bonus_mail($bonus_type_id, $bonus_id_list)
{
/* 取得红包类型信息 */
$bonus_type = bonus_type_info($bonus_type_id);
if ($bonus_type['send_type'] != SEND_BY_USER)
{
return 0;
}
/* 取得属于该类型的红包信息 */
$sql = "SELECT b.bonus_id, u.user_name, u.email " .
"FROM " . $GLOBALS['ecs']->table('user_bonus') . " AS b, " .
$GLOBALS['ecs']->table('users') . " AS u " .
" WHERE b.user_id = u.user_id " .
" AND b.bonus_id " . db_create_in($bonus_id_list) .
" AND b.order_id = 0 " .
" AND u.email <> ''";
$bonus_list = $GLOBALS['db']->getAll($sql);
if (empty($bonus_list))
{
return 0;
}
/* 初始化成功发送数量 */
$send_count = 0;
/* 发送邮件 */
$tpl = get_mail_template('send_bonus');
$today = local_date($GLOBALS['_CFG']['date_format']);
foreach ($bonus_list AS $bonus)
{
$GLOBALS['smarty']->assign('user_name', $bonus['user_name']);
$GLOBALS['smarty']->assign('shop_name', $GLOBALS['_CFG']['shop_name']);
$GLOBALS['smarty']->assign('send_date', $today);
$GLOBALS['smarty']->assign('sent_date', $today);
$GLOBALS['smarty']->assign('count', 1);
$GLOBALS['smarty']->assign('money', price_format($bonus_type['type_money']));
$content = $GLOBALS['smarty']->fetch('str:' . $tpl['template_content']);
if (add_to_maillist($bonus['user_name'], $bonus['email'], $tpl['template_subject'], $content, $tpl['is_html'], false))
{
$sql = "UPDATE " . $GLOBALS['ecs']->table('user_bonus') .
" SET emailed = '" . BONUS_MAIL_SUCCEED . "'" .
" WHERE bonus_id = '$bonus[bonus_id]'";
$GLOBALS['db']->query($sql);
$send_count++;
}
else
{
$sql = "UPDATE " . $GLOBALS['ecs']->table('user_bonus') .
" SET emailed = '" . BONUS_MAIL_FAIL . "'" .
" WHERE bonus_id = '$bonus[bonus_id]'";
$GLOBALS['db']->query($sql);
}
}
return $send_count;
}
function add_to_maillist($username, $email, $subject, $content, $is_html)
{
$time = time();
$content = addslashes($content);
$template_id = $GLOBALS['db']->getOne("SELECT template_id FROM " . $GLOBALS['ecs']->table('mail_templates') . " WHERE template_code = 'send_bonus'");
$sql = "INSERT INTO " . $GLOBALS['ecs']->table('email_sendlist') . " ( email, template_id, email_content, pri, last_send) VALUES ('$email', '$template_id', '$content', 1, '$time')";
$GLOBALS['db']->query($sql);
return true;
}
?>