神刀安全网

ecshop通用并且可多次使用的红包插件新上线下派发通用红包

cshop通用(可多次使用)红包插件介绍:1、一个卡号多人使用。2、每个注册会员只能使用一次。
当我们商品搞促销的时候,需要经常用到这个功能,下面的插件是从网上搜集,本人亲测修改之中的错误后,完全可以使用。
修改后台部分:
1) 添加一种新的红包类型4 ,
文件 admin/templates/bonus_type_info.htm
找到  {$lang.send_by[0]}
{$lang.send_by[1]}
{$lang.send_by[2]}
{$lang.send_by[3]}
再其后面添加
通用红包 多次使用

2) 生成这类红包字符串
增加文件 admin/templates/bonus_by_print_phpsir.htm (此文件下面有下载)
修改文件 admin/bonus.php 找到
elseif ($_REQUEST[‘send_by’] == SEND_BY_PRINT)
{
$smarty->assign(‘type_list’,    get_bonus_type());

$smarty->display(‘bonus_by_print.htm’);
}

再其后添加
elseif ($_REQUEST[‘send_by’] == 4)
{
$smarty->assign(‘type_list’,    get_bonus_type_phpsir());

$smarty->display(‘bonus_by_print_phpsir.htm’);
}

3) 增加 get_bonus_type_phpsir 函数
文件 admin/includes/lib_main.php

function get_bonus_type_phpsir()
{
$bonus = array();
$sql = ‘SELECT type_id, type_name, type_money FROM ‘ . $GLOBALS[‘ecs’]->table(‘bonus_type’) .
‘ WHERE send_type = 4’;
$res = $GLOBALS[‘db’]->query($sql);

while ($row = $GLOBALS[‘db’]->fetchRow($res))
{
$bonus[$row[‘type_id’]] = $row[‘type_name’].’ [‘ .sprintf($GLOBALS[‘_CFG’][‘currency_format’], $row[‘type_money’]).’]’;
}

return $bonus;
}

4) 在 bonus.php 里面 找到
if ($_REQUEST[‘act’] == ‘send_by_print’)
{
………………………
}
再其后面添加,处理增加这类红包时候生成方法

if ($_REQUEST[‘act’] == ‘send_by_print_phpsir’)
{
@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;

/* 生成红包序列号 */

for ($i = 0, $j = 0; $i < $bonus_sum; $i++)
{
$bonus_sn = $_POST[‘bonus_txt’];
$db->query(“INSERT INTO “.$ecs->table(‘user_bonus’).” (bonus_type_id, bonus_sn) VALUES(‘$bonus_typeid’, ‘$bonus_sn’)”);

$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);
}

5) 修改 bonus.php 让后台显示红包内容
if ($_REQUEST[‘act’] == ‘bonus_list’)
{
………………………
}

if ($_REQUEST[‘act’] == ‘query_bonus’)
{
………………………
}
里面增加
if ($bonus_type[‘send_type’] == 4)
{
$smarty->assign(‘show_bonus_sn’, 1);
}
//至此 后台部分完成

修改前台部分:
includes/lib_order.php
function bonus_info($bonus_id, $bonus_sn = ”) //此函数为订单提交页面,验证红包函数
{
$sql = “SELECT t.*, b.* ” .
“FROM ” . $GLOBALS[‘ecs’]->table(‘bonus_type’) . ” AS t,” .
$GLOBALS[‘ecs’]->table(‘user_bonus’) . ” AS b ” .
“WHERE t.type_id = b.bonus_type_id    “;

if ($bonus_id > 0)
{
$sql .= ” AND b.bonus_id = ‘$bonus_id'”;
$row = $GLOBALS[‘db’]->getRow($sql);
return $row;
}
else
{
$sql .= ” AND b.bonus_sn = ‘$bonus_sn'”;
$row = $GLOBALS[‘db’]->getRow($sql);
}

// 如果想每人只使用N次,请用下面的部分

if($row[‘send_type’] == 4) // phpsir 如果是第4类型红包,那么就找一个未使用的红包,这种红包可被多次使用,不限制每人使用次数
{
$sess_userid = $_SESSION[“user_id”];
$sql = “SELECT t.*, b.* ” .
“FROM ” . $GLOBALS[‘ecs’]->table(‘bonus_type’) . ” AS t,” .
$GLOBALS[‘ecs’]->table(‘user_bonus’) . ” AS b ” .
“WHERE t.type_id = b.bonus_type_id  and b.user_id = ‘$sess_userid’   and  b.bonus_sn = ‘$bonus_sn’ “;
$rows = $GLOBALS[‘db’]->getAll($sql);
$allow_used_bonus_num = 2; // 最大允许使用次数
if(count($rows) >= $allow_used_bonus_num )
{
return false;
}else{
$sql = “SELECT t.*, b.* ” .
“FROM ” . $GLOBALS[‘ecs’]->table(‘bonus_type’) . ” AS t,” .
$GLOBALS[‘ecs’]->table(‘user_bonus’) . ” AS b ” .
“WHERE t.type_id = b.bonus_type_id  and b.user_id = 0 and  b.bonus_sn = ‘$bonus_sn’ “;
$row = $GLOBALS[‘db’]->getRow($sql);
return $row;
}

}
return $row;

}

修改文件include/lib_transaction.php
function add_bonus($user_id, $bouns_sn) //此函数为用户中心添加(绑定)红包函数
{
if (empty($user_id))
{
$GLOBALS[‘err’]->add($GLOBALS[‘_LANG’][‘not_login’]);

return false;
}

/* 查询红包序列号是否已经存在 */
$sql = “SELECT bonus_id, bonus_sn, user_id, bonus_type_id FROM ” .$GLOBALS[‘ecs’]->table(‘user_bonus’) .
” WHERE bonus_sn = ‘$bouns_sn'”;
$row = $GLOBALS[‘db’]->getRow($sql);
if ($row)
{
if ($row[‘user_id’] == 0)
{
//红包没有被使用
$sql = “SELECT send_end_date, use_end_date “.
” FROM ” . $GLOBALS[‘ecs’]->table(‘bonus_type’) .
” WHERE type_id = ‘” . $row[‘bonus_type_id’] . “‘”;

$bonus_time = $GLOBALS[‘db’]->getRow($sql);

$now = gmtime();
if ($now > $bonus_time[‘use_end_date’])
{
$GLOBALS[‘err’]->add($GLOBALS[‘_LANG’][‘bonus_use_expire’]);
return false;
}

$sql = “UPDATE ” .$GLOBALS[‘ecs’]->table(‘user_bonus’) . ” SET user_id = ‘$user_id’ “.
“WHERE bonus_id = ‘$row[bonus_id]'”;
$result = $GLOBALS[‘db’] ->query($sql);
if ($result)
{
return true;
}
else
{
return $GLOBALS[‘db’]->errorMsg();
}
}
else
{
if ($row[‘user_id’]== $user_id)
{
//红包已经添加过了。
$GLOBALS[‘err’]->add($GLOBALS[‘_LANG’][‘bonus_is_used’]);
}
else
{
//红包被其他人使用过了。
$GLOBALS[‘err’]->add($GLOBALS[‘_LANG’][‘bonus_is_used_by_other’]);
}

return false;
}
}
else
{
//红包不存在
$GLOBALS[‘err’]->add($GLOBALS[‘_LANG’][‘bonus_not_exist’]);
return false;
}

}

下载地址:ecshop多次使用的红包插件.zip

转载本站任何文章请注明:转载至神刀安全网,谢谢神刀安全网 » ecshop通用并且可多次使用的红包插件新上线下派发通用红包

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址