您现在的位置是:首页 > cms教程 > Ecshop商城教程Ecshop商城教程
ecshop优惠卷红包增加转赠功能的实现方法
寒云2024-04-29Ecshop商城教程已有人查阅
导读ecshop优惠卷红包增加赠送转赠功能修改教程,ecshop促销中使用红包激励用户购物,要想炒热活动,红包就需要有物以稀为贵的感觉。
ecshop优惠卷红包增加赠送转赠功能修改教程,ecshop促销中使用红包激励用户购物,要想炒热活动,红包就需要有物以稀为贵的感觉。有人求有人送,这样红包之间的转赠有助于拉动第二梯队的顾客。但是如果已经把红包添加到自己的账户了怎么办?
如果ecshop红包的使用再加上什么限制(比如,一个单只能用一个红包,就够坑的),现在来做一个线上转赠赠送红包优惠卷的功能。
代码号代码号简单的修改教程实现一下红包赠送功能:
首先了解,红包存放在ecs_user_bonus表中,他的归属区分很简单:通过user_id来决定红包属于谁的。
此功能涉及到四个文件:/js/user.js 、 /user.php、 /includes/lib_transaction.php 、 /themes/default/user_transaction.dwt
步:增加模板功能
在/themes/default/user_transaction.dwt中 {$item.status}后面添加
.btn_bom{padding:5px 10px; cursor:pointer;}
这里作用是给处于未被使用状态的红包添加转赠按钮,这里未使用状态直接用文本判断,因为在模板赋值之前已经有过逻辑处理,另外我们转增过程中也会有相应的逻辑处理,因此不会出现bug,真的想完善,又有闲心的可以用语言包代替 代码号一向鄙视多语言效果如下
第二步,前端交互增加表单验证
转赠信息提交的表单已经创建,现在需要做验证等相关工作,在/js/user.js中增加
第三步:接收数据并处理
这一步开始就是核心功能方面的了,在/user.php中增加
创建最重要的handsel_bonus_to_user函数,在/includes/lib_transaction.php文件增加函数代码
如果ecshop红包的使用再加上什么限制(比如,一个单只能用一个红包,就够坑的),现在来做一个线上转赠赠送红包优惠卷的功能。
代码号代码号简单的修改教程实现一下红包赠送功能:
首先了解,红包存放在ecs_user_bonus表中,他的归属区分很简单:通过user_id来决定红包属于谁的。
此功能涉及到四个文件:/js/user.js 、 /user.php、 /includes/lib_transaction.php 、 /themes/default/user_transaction.dwt
步:增加模板功能
在/themes/default/user_transaction.dwt中 {$item.status}后面添加
<!--{if $item.status == "未使用"}-->
<form action="/user.php"name="handsel_bonus_{$item.bonus_id}" method="post" onsubmit="return handsel_bonus_to_user(this)">
<input type="hidden" name="act" value="handsel_bonus"><input type="hidden" name="bonus_id" value="{$item.bonus_id}">
<input type="hidden"name="user_name" value=""><input class="btn_bom" type="submit" value="转赠">
</form>
<!--{/if}-->
代码,然后再增加点按钮的修饰.btn_bom{padding:5px 10px; cursor:pointer;}
这里作用是给处于未被使用状态的红包添加转赠按钮,这里未使用状态直接用文本判断,因为在模板赋值之前已经有过逻辑处理,另外我们转增过程中也会有相应的逻辑处理,因此不会出现bug,真的想完善,又有闲心的可以用语言包代替 代码号一向鄙视多语言效果如下
第二步,前端交互增加表单验证
转赠信息提交的表单已经创建,现在需要做验证等相关工作,在/js/user.js中增加
/*** 代码号赠送红包*/
function handsel_bonus_to_user(obj){
var username = prompt("输入你要转赠红包的账户名","");
var msg='';
if (username == null){return false;}
if (username.length == 0)
{
msg += "用户名不能为空" + '\n';
}
else if (username.match(/^\s*$|^c:\\con\\con$|[%,\'\*\"\s\t\<\>\&\\]/))
{
msg += '用户名不合法' + '\n';
}
else if (username.length < 3)
{
msg += '用户名不合法' + '\n';
}else{
obj.user_name.value = username;
return true;
}
alert(msg);
return false;
}
代码,采用模式窗口接收数据第三步:接收数据并处理
这一步开始就是核心功能方面的了,在/user.php中增加
/*代码号赠送红包*/
elseif( $action == 'handsel_bonus')
{
include_once(ROOT_PATH .'includes/lib_transaction.php');
if(isset($_REQUEST['bonus_id'])){
$bonus_id = (int)$_REQUEST['bonus_id'];
if(handsel_bonus_to_user($user_id, $bonus_id, $_REQUEST['user_name']))
{
show_message("成功转赠红包给".$_REQUEST['user_name'],$_LANG['back_up_page'], 'user.php?act=bonus', 'info');
}else{
$err->show($_LANG['back_up_page'], 'user.php?act=bonus');
}
}else{
show_message("请指明要操作的红包".$_REQUEST['user_name'], '/user.php?act=bonus');
}
}
第四步:操作数据库,创建最重要的handsel_bonus_to_user函数,在/includes/lib_transaction.php文件增加函数代码
/**
* 当前用户给指定用户赠送一个指定红包,红包会立即转向对方账号
*
* @access public
* @param int $user_id 用户ID
* @param string $bouns_sn 红包序列号
* @param string $to_user_name 红包序列号接受赠送红包的用户
* @代码号代码号ecshop119.com增加受赠送红包的用户
* @return boolen $result
*/
function handsel_bonus_to_user($user_id, $bonus_id, $to_user_name)
{
if (empty($user_id))
{
$GLOBALS['err']->add($GLOBALS['_LANG']['not_login']);
return false;
}
/* 查询红包序列号是否已经存在 */
$sql = "SELECT bonus_id,user_id,order_id,bonus_type_id FROM " .$GLOBALS['ecs']->table('user_bonus') .
" WHERE bonus_id = '$bonus_id'";
$row = $GLOBALS['db']->getRow($sql);
if ($row)
{
//红包没有被用来购物
if ($row['order_id'] == 0)
{
29
//红包是否属于当前用户
if($user_id != $row['user_id']){
$GLOBALS['err']->add('soga,你不拥有此红包');
return false;
}
//红包没有被使用
$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 = "select user_id from " . $GLOBALS['ecs']->table('users') ." where user_name='$to_user_name'";
$user = $GLOBALS['db']->getRow($sql);
if(!$user){
$GLOBALS['err']->add('转赠的用户不存在,谢谢好心:)请重新确认用户名!');
return false;
}
$sql = "UPDATE " .$GLOBALS['ecs']->table('user_bonus') . " SET user_id = '".$user['user_id']."' WHERE bonus_id = '$row[bonus_id]'";
$result = $GLOBALS['db'] ->query($sql);
if ($result)
{
return true;
}
else
{
return $GLOBALS['db']->errorMsg();
}
}
else
{
//代码号提示红包被其他人使用过了。
$GLOBALS['err']->add('红包已用来购物,不可再次使用');
return false;
}
}
else
{
//红包不存在
$GLOBALS['err']->add($GLOBALS['_LANG']['bonus_not_exist']);
return false;
}
}
红包优惠卷赠送功能增加完毕,大家赶紧测试下吧!
本文标签:
很赞哦! ()
相关教程
图文教程
ecshop实现退出登录不清空购物车的优化方法实例
ecshop退出登陆后会清空购物车里面的商品,大家都应该知道有这样的算是功能缺陷。网上类似的教程相当多,但都有问题,说句不好听的,算是引新手入!
ecshop二次开发介绍示例
ecshop是一套完整的网络商店解决方案,包括前台的商品展示、购物流程和强大易用的后台管理。由于 ecshop简单易用,使用者几乎可以在3几分钟简单的设置一下就可以拥有一个网上商
ecshop商品购买数量可以输入购买小数点的解决方法
客户遇到了这样一个问题,不是如何在购买数量上输入小数。因为一般来说,是不要输入小数的,因为像卖菜这种比较特殊,接下来我详细分析一下:
ecshop广告图片增加alt=”广告关键字描述”的方法
1.在includes/lib_insert.php文件143和156行“a.ad_name,”后面增加“a.img_alt,”,在182行“src=’$src’”后面增加“alt=’$row[img_alt]‘”
相关源码
-
自适应黑色建筑装饰设计公司个人工作室pbootcms模板基于PbootCMS内核开发的黑金风格模板,为建筑装饰、工程设计类企业打造,采用开源架构,支持跨行业快速适配,核心优势如下: 查看源码 -
(自适应响应式)环保净化器家用电器网站免费模板针对环保设备、环境监测等领域的PbootCMS响应式模板,通过模块化设计清晰展示污水处理技术、空气净化系统等解决方案。移动端呈现环保数据可视化图表,后端统一管理确保项目案例、技术等资料多端同步。查看源码 -
(自适应)物流运输快递仓储货运网站模板免费下载基于PbootCMS内核开发的物流运输行业专用模板,深度适配仓储货运企业的业务展示需求。前端采用响应式布局,自动适配手机端访问,后台数据实时同步更新,帮助企业高效展示运输网络、仓储设施、服务流程等核心业务模块。查看源码 -
蓝色工业机械五金设备pbootcms模板源码下载(PC+WAP)为机械制造与五金设备企业设计的响应式网站模板,基于PbootCMS内核开发。采用蓝色工业风格强化行业属性,宽屏布局突出设备细节展示,支持PC与WAP端自适应查看源码 -
(自适应)简繁双语响应式服装服饰西装工装校服定制pbootcms模板本模板基于PbootCMS内核开发,为服装服饰行业量身打造,尤其适合西装定制、工装生产、校服订制等服装类企业使用。模板采用响应式布局设计,确保在手机、平板、电脑查看源码 -
(自适应多语言)WordPress开源主题MirageV资讯个人博客源码MirageV资讯类个人博客主题源码/WordPress主题/全开源MirageV 是一款开源的 WordPress 主题,支持自适应、暗黑模式、多语言等功能,查看源码
| 分享笔记 (共有 篇笔记) |
