ecshop 点击领取红包
思路:
1.领取红包:也就是传递一个红包ID,和user_id然后update更新过来
2.获取未领取过的红包列表:然后随机函数array_rand($arr,1),随机返回一个数组,从而获得红包列表的红包ID
以上两步基本满足,领取红包功能
3.判断该用户是否已经领取过红包
基本代码
html代码1:
<input type="button" value="领取红包" onClick="bouns(30)">
<script type="text/javascript" src="__PUBLIC__/js/jquery.min.js" ></script>
<script>
function bouns($type_id){
$.ajax({
url:"{:url('bonus/bonus_ajax')}"+"&type_id="+$type_id,
success: function(html){
if(html == 'ok'){
alert('成功领取红包');
}if(html == 'no_bouns'){
alert('已经没有红包了哦');
}if(html == 'no_start_date'){
alert('领取红包的时间还没到哦');
}if(html == 'no_end_date'){
alert('你来晚了哦,红包已经结束了哦');
}if(html == 'pull_bonus'){
alert('你咋又来了呢,每个ID只能领取一次哦');
}
}
});
}
</script>
完整版html代码:
<script>
$(document).ready(function(){
$type_id = '';
check_user_bonus();
//alert($f);
});
$('#DivBg').click(function(){
$(this).css('display','none');
});
// 领取红包
function bouns(){
$.ajax({
url:"{:url('bonus/bonus_ajax')}"+"&type_id="+$type_id,
success: function(html){
if(html == 'ok'){ // 可以根据返回的值,多做几种选择
alert('成功领取红包');
}else{
alert(html);
}
}
});
}
//检测用户是否领取过红包;领取过,则不显示;未领取就显示红包
function check_user_bonus(){
$.ajax({
url:"{:url('bonus/check_user_bonus_ajax')}"+"&type_id="+$type_id,
success: function (html){
if(html !=){ // 0,显示红包;否则就隐藏红包
$("#DivBg").css('display','none');
}else{
$("#DivBg").css('display','block');
}
}
});
}
</script>
BonusController.php
public function bonus_ajax(){
$type_id = $_GET['type_id'];
$m = model('Bonus')->get_bonus($type_id);
echo $m;
}
BonusModel.class.php
<?php defined('IN_ECTOUCH') or die('Deny Access'); class BonusModel extends BaseModel { /**
* 红包
*
* @access private
* @param integer $brand_id
* @return array
*/
// 获取ecs_bouns_type 红包类型
function get_bonus_type($type_id=''){
if(!empty($type_id)){ // 有值获取单个;无值则获取全部
$where = ' where type_id = '.$type_id;
}else{
$where = ' ';
}
$sql = 'select * from '. $this->pre . 'bonus_type '.$where;
$res = $this->query($sql);
return $res;
}
// 获取ecs_user_bouns 红包列表(未被领取的红包)
function get_user_bonus($bouns_type_id=''){
if(!empty($bouns_type_id)){ // 有值获取单个;无值则获取全部
$where = ' where user_id =0 and bonus_type_id = '.$bouns_type_id; //必须是“线下发放红包”
}else{
$where = ' ';
}
$sql = 'select bonus_id from '. $this->pre . 'user_bonus '.$where;
$res = $this->query($sql);
return $res;
}
// 合并红包类型 与红包列表
function bouns_info($bouns_type_id){
$bouns_type = $this->get_bonus_type($bouns_type_id);
$bouns_type[]['user_bouns'] = $this->get_user_bonus($bouns_type_id);
return $bouns_type;
}
//检测是否重复领取; 已经领取( >1 )
function check_user_bonus($bonus_type_id){
$sql = 'select * from '. $this->pre .'user_bonus where bonus_type_id = '.$bonus_type_id.' and user_id='.$_SESSION['user_id'];
$result = $this->query($sql);
return count($result);
}
// 领取红包
function get_bonus($type_id){
$user_id = $_SESSION['user_id'];
$time = gmtime(); //红包类型
$bonus_type = $this->get_bonus_type($type_id);
// 红包列表
$bouns_list = $this->get_user_bonus($type_id);
// 是否领取过红包
$check_bonus = $this->check_user_bonus($type_id); // 判断条件
if(empty($user_id)){
$str = 'no_user'; // 1.未登录
}elseif(count($bouns_list) < ){
$str = 'no_bouns'; // 3.没有红包(红包领取完了)
}elseif($bonus_type[]['send_type'] !=){ //2.红包类型不对 ,必须"线下发放红包"
$str = 'send_type_err'; //
}elseif($time < $bonus_type[]['use_start_date']){ //4.领取红包时间还未到
$str = 'no_start_date';
}elseif($time > $bonus_type[]['use_end_date']){ //5.领取红包时间还已经结束
$str = 'no_end_date';
}elseif($check_bonus > ){ // 6.已经领取过红包
$str = 'pull_bonus';
}else{
$rand_key = array_rand($bouns_list,);
$rand_id = $bouns_list[$rand_key]['bonus_id'];
$sql = "UPDATE ". $this->pre ."user_bonus SET user_id = ".$user_id.",used_time = ".$time." where bonus_id=".$rand_id;
if($this->query($sql)){
$str = 'ok';
}else{
$str = 'err';
}
}
echo $str;
} }
ecshop 点击领取红包的更多相关文章
- ecshop点击订购、加入按钮没反应的解决方法
今天做ecshop站的时候,测试数据,发现点击订购.加入按钮都没反应,网上搜索,有些人说是修改了common.js,我将原始版本复原也没反映.后来重新安装ecshop,仔细研究发现,原来头部文件pag ...
- ecshop加入购物车效果(各个页面)
ecshop中点击加入购物车出现下图 通过以下代码改成下图效果 1.后台网店设置 购物车确定提示 选择为“提示用户,点击“确定”进购物车” 2.打开js/common.js 104行就是funct ...
- iOS微信自动抢红包插件(支持后台和锁屏下抢红包)
前言:本文主要讲述使用hook方式实现红包插件,涉及到tweak相关知识,如果你不想了解具体实现细节可直接到我的Github地址参考安装(包含越狱和非越狱两种方法) 转眼间2017即将过去,又到了 ...
- 微信自动抢红包android实现
AccessibilityService-微信自动抢红包 2018年02月01日 16:09:06 阅读数:1757 在领导发红包的时候,看到有些同事在1s.2s抢到红包,为什么他们能够这么快?一定是 ...
- android黑科技系列——微信抢红包插件原理解析和开发实现
一.前言 自从几年前微信添加抢红包的功能,微信的电商之旅算是正式开始正式火爆起来.但是作为Android开发者来说,我们在抢红包的同时意识到了很多问题,就是手动去抢红包的速度慢了,当然这些有很多原因导 ...
- Android中微信抢红包插件原理解析和开发实现
一.前言 自从去年中微信添加抢红包的功能,微信的电商之旅算是正式开始正式火爆起来.但是作为Android开发者来说,我们在抢红包的同时意识到了很多问题,就是手动去抢红包的速度慢了,当然这些有很多原因导 ...
- ecshop 团购点击价格变动
前提:价格阶梯只能设置一级 需要用到: jquery,transport.js(transport_jquery.js),Ajax.call html页面 js代码,还需要插入jquery,trans ...
- ecshop后台"云提醒未激活 点击激活" 补丁删除方法
ecshop后台"云提醒未激活 点击激活" 补丁删除方法 ECSHOP教程/ ecshop教程网(www.ecshop119.com) 2015-01-15 ecshop后台提 ...
- ecshop商品子分类点击下拉,子分类空时,直接跳转功能
模板文件循环读取商品分类,并给大分类加上url属性.然后在js中判断是否有下级分类.有分类则点击下拉效果,没有子分类则跳转到url属性的链接去. themes/**/library/category_ ...
随机推荐
- Android数据格式解析对象JSON用法(转)
地址:http://www.cnblogs.com/devinzhang/archive/2012/01/09/2317315.html 里面的重点: JSON解析案例 (1)解析Object ...
- GIF/PNG/JPG和WEBP/base64/apng图片优点和缺点整理
GIF/PNG/JPG/WEBP/APNG都是属于位图(位图 ,务必区别于矢量图): GIF/PNG和JPG这三种格式的图片被广泛应用在现今的互联网中,gif曾在过去互联网初期慢速的情况下几乎是做到了 ...
- php实现木桶排序
今天重新看了看木桶排序,思路比较简单,这里整理一下,免得下次忘记. 假设要对一组数据 2 2 3 1 6 5 4 进行桶排序. 1.首先选出最小元素1和最大元素6,做一个桶,也就是定义一个1-6的数组 ...
- Maven-eclipse运行maven命令
右击项目,点击Run as,如下图: 即可看到有很多现有的maven命令,点击即可运行,并在控制台可以看到运行信息 如果你想运行的maven命令在这里没有找到,点击Maven build创建新的命令, ...
- 【深入Java虚拟机】之二:Java垃圾回收机制
[深入Java虚拟机]之:Java垃圾收集机制 对象引用 Java中的垃圾回收一般是在Java堆中进行,因为堆中几乎存放了Java中所有的对象实例.谈到Java堆中的垃圾回收,自然要谈到引用.在JDK ...
- glyphicon halflings regular ttf 报错
一个web项目 用了bootstrap chrome开f12报错提示glyphicon halflings regular ttf找不到 为什么找不到,肯定又是path出了问题 找到bootstrap ...
- 【BZOJ-3721】Final Bazarek 贪心
3721: PA2014 Final Bazarek Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 610 Solved: 243[Submit][ ...
- dedecms /plus/feedback_ajax.php、/templets/feedback_main.htm、/templets/feedback_edit.htm XSS && SQL Injection Vul
catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 通过该漏洞可以注入恶意代码到评论标题里,网站管理员在后台管理用户评论时触 ...
- MongoDB: 数据库复制
db.copyDatabase("from","to","127.0.0.1:16161"); 将127.0.0.1上的from库.拷贝到t ...
- C#产生随机颜色
在.net Framework中提供了一个专门用来产生随机数的类System.Random.C#可以用Random产生随机的R.G.B值,从而生成随机的颜色. 对于随机数,计算机不可能产生完全随机的数 ...