/**

* 用户中心

* @param

*/   public function index(){

$pre = C('DB_PREFIX');

// 日历列表     $monthSign = $this->getMonthSign();

$dayList = $this->showDays($monthSign);

// 今天签到     $data = $this->todayData();

if($data['is_sign'] == 1){

$this->assign('isSign',true);

}

$this->display();

}

/**

* 执行当天签到

* @return json 签到成功返回 {status:1,info:'已签到'}

*/   public function sign(){

$todayData = $this->todayData();

if($todayData['is_sign'] == 1){

$this->successMsg('已签到');

}else{

$data = $this->getInsertData($this->uid);

// 无今天数据       if($todayData == NULL){

$data['uid'] = $this->uid;

$data['atime'] = time();

$id = M('members_sign')->add($data);

}else{

$save = M('members_sign')->where("id = {$todayData['id']}")->save($data);

}

if($id or $save){

$score = $this->getTodayScores($data['days']);

// 为该用户添加积分         addScore($this->uid,$score);

$this->successMsg('已签到',array('score' => $score,'days'=>$data['days']));

}else{

$this->errorMsg('签到失败,请刷新后重试!');

}

}

}

/**

* 返回每次签到要插入的数据

*

* @param int $uid 用户id

* @return array(

*  'days'   =>  '天数',

*  'is_sign'  =>  '是否签到,用1表示已经签到',

*  'stime'   =>  '签到时间',

* );

*/   protected function getInsertData($uid){

// 昨天的连续签到天数     $start_time = strtotime(date('Y-m-d 0:0:0',time()-86400))-1;

$end_time  = strtotime(date('Y-m-d 23:59:59',time()-86400))+1;

$days = M('members_sign')->where("uid = $uid and atime > $start_time and atime getField('days');

if($days){

$days++;

if($days > 30){

$days = 1;

}

}else{

$days = 1;

}

return array(

'days'    => $days,

'is_sign'  => 1,

'stime'   => time()

);

}

/**

* 用户当天签到的数据

* @return array 签到信息 is_sign,stime 等

*/   protected function todayData(){

$time = time();

$start_stime  = strtotime(date('Y-m-d 0:0:0',$time))-1;

$end_stime = strtotime(date('Y-m-d 23:59:59',$time))+1;

return M('members_sign')->field('atime',true)->where("uid = {$this->uid} and atime > $start_stime and atime find();

}

/**

* 积分规则,返回连续签到的天数对应的积分

*

* @param int $days 当天应该得的分数

* @return int 积分

*/   protected function getTodayScores($days){

if($days == 30){

return 50;

}else if($days > 19){

return 8;

}else if($days > 9){

return 5;

}else{

return 3;

}

}

/**

* 显示签到列表

*

* @param array  $signDays 某月签到的日期 array(1,2,3,4,5,12,13)

* @param int $year    可选,年份

* @param int $month   可选,月份

* @return string 日期列表

1....

*/   protected function showDays($signDays,$year,$month){

$time = time();

$year = $year ? $year : date('Y',$time);

$month = $month ? $month : date('m',$time);

$daysTotal = date('t', mktime(0, 0, 0, $month, 1, $year));

$now = date('Y-m-d',$time);

$str = '';

for ($j = 1; $j <= $daysTotal; $j++) {

$i++;

$someDay = date('Y-m-d',strtotime("$year-$month-$j"));

// 小于今天的日期样式       if ($someDay <= $now){

// 当天日期样式 tdc = todayColor         if($someDay == $now){

// 当天签到过的           if(in_array($j,$signDays)){

$str .= '

'.$j.'';

}else{

$str .= '

'.$j.'';

}

}else{

// 签到过的日期样式 current bfc = beforeColor , fw = font-weight           if(in_array($j,$signDays)){

$str .= '

'.$j.'';

}else{

$str .= '

'.$j.'';

}

}

}else{

$str .= '

'.$j.'';

}

}

return $str;

}

/**

* 获取当月签到的天数,与 $this->showDays() 配合使用

* @return 当月签到日期 array(1,2,3,4,5,12,13)

*/   protected function getMonthSign(){

$time  = time();

$year  = date('Y',$time);

$month = date('m',$time);

$day  = date("t",strtotime("$year-$month"));

$start_stime  = strtotime("$year-$month-1 0:0:0")-1;

$end_stime = strtotime("$year-$month-$day 23:59:59")+1;

$list = M('members_sign')->where("uid = {$this->uid} and stime > $start_stime and stime order('stime asc')->getField('stime',true);

foreach ($list as $key => $value){

$list[$key] = date('j',$value);

}

return $list;

}

}

php积分领取规则,用PHP实现会员签到分享或者领积分相关推荐

  1. 微信考勤签到 php,【投稿】微信签到打卡领积分源码,每日积分签到

    PHPwork模块化扩展开发,轻量mvc,原生php和常用封装,提供PHPwork开发文档,方便二次开发. 小白请勿拍,我们卖的只是源码,只能保证源码使用无错,无技术支持. 程序提供了自动安装,关键配 ...

  2. php积分领取规则,积分规则

    积分规则 1.积分获取 a)  积分专属邮乐,仅限邮乐网内使用; b)  积分可以累积,2年内有效; c)  买家在邮乐网消费购物可以获得积分,积分返点比例为:除3C产品外的所有商品均以2元:1积分计 ...

  3. java开发积分加钱换购_【案例】加油站积分兑换规则方案,加油站积分换购礼品表 - 会员管理系统 |多啦啦...

    为了让加油站做好会员积分营销活动,小编整理了一篇专业的积分规则以及积分兑换方案. 积分兑换方案在文后,请耐心看完. 微信公众号积分兑换文章内容正文部分参考: 尊敬的会员客户: 为了感谢大家对XX加油站 ...

  4. 多点积分又改规则了_【多点乘车“小芝士”】“铁路畅行”常旅客会员积分兑换规则及会员等级相关规定...

    原标题:[多点乘车"小芝士"]"铁路畅行"常旅客会员积分兑换规则及会员等级相关规定 北京 BEIJING 全国 QUANGUO "铁路畅行" ...

  5. 如何设计一个积分领取系统

    积分作为一种营销手段,被广泛运用于线上/线下的产品中,以此来增加用户对于产品的粘性.比如天猫积分可以用来兑换商品,京豆可以在下单折扣等,如下图所示. 如今,随着获客成本的增加,如何减少用户的流失,变成 ...

  6. 转载CSDN积分获取规则

    下载积分攻略: 个人设置里进行手机绑定CSDN账户 奖励50分 (右上角设置-账户安全-手机绑定) 完成任务送若干分积分 http://task.csdn.net/ 上传有效资源获取积分(上传非法,广 ...

  7. 商城小程序、实例原型设计、电商app、积分商城、领券中心、会员中心、每日签到、小程序电商、优惠券、移动端电商、Axure原型、rp原型、产品原型、积分、会员卡

    商城小程序.实例原型设计.电商app.积分商城.领券中心.会员中心.每日签到.小程序电商.优惠券.移动端电商.Axure原型.rp原型.产品原型.积分.会员卡 Axure演示及下载地址: Untitl ...

  8. web电商系统、电商平台WEB端交互原型模板、用户中心、会员中心、优惠券、积分、互动社区、运营推广、内容推荐、商品展示、订单流程、订单管理、售后及服务、Axure原型、rp原型、电商原型、商城系统原型

    作品介绍:web电商系统.电商平台WEB端交互原型模板.用户中心.会员中心.优惠券.积分.互动社区.运营推广.内容推荐.商品展示.订单流程.订单管理.售后及服务等完整的电商体系功能架构和业务流程 Ax ...

  9. Java实现积分过期保证时间_商城会员积分过期的实现方案

    背景:积分项目,每次添加的积分都有一个有效期,有效期为一年,如2017-01-02添加了一条积分记录,到2018-01-02这条记录应该是过期的.当前项目设计有两张表:积分明细表(存放积分添加.使用明 ...

最新文章

  1. reactor与proactor模式
  2. 编程中python怎么读-对Python新手编程过程中如何规避一些常见问题的建议
  3. Docker的镜像使用
  4. 程序组件通信方案集锦
  5. Spark学习之概念了解
  6. Indy10收发Hotmail邮件
  7. 大白菜linux系统安装步骤,GRUB简单入门教程
  8. 微软power bi_Microsoft Power Platform快速概述
  9. docker容器详解(入门必看)(一)
  10. 那些好用的firefox扩展插件分享
  11. 大数据算法_大数据挖掘十大经典算法
  12. 速达服务器应用程序错误,速达软件错误集锦及解决方法
  13. Redis教程--基于docker搭建redis文档服务
  14. 人脸关键点检测 代码 matlab,从传统方法到深度学习,人脸关键点检测方法综述...
  15. 【PhotoScan精品教程】任务四:PhotoScan做空三+CC生成正射、三维建模综合案例
  16. LabVIEW控制Arduino采集DHT11温湿度数值(进阶篇—4)
  17. SMT贴片元件拆卸的妙招分享
  18. 【AI面试】L1 loss、L2 loss和Smooth L1 Loss,L1正则化和L2正则化
  19. 北醒激光雷达TFmini测试
  20. 微信小程序_图片连拍_闪光灯_手电筒_录制

热门文章

  1. 如何在自己的网站上添加HTML悬浮音乐播放器?
  2. Android MediaRecorder自定义分辨率
  3. kali linux桌面分辨率,kali自定义分辨率(1920*1080)
  4. wsock32 linux,在linux下安装并使用websocket
  5. 开启Mysql主从复制
  6. 解析网页后门与网页挂马原理
  7. 计算机Python项目(毕设课设)之含文档+PPT+源码等]精品基于Python实现的大学校园短视频社交软件系统-微信小程序
  8. 基于百度云的 AI 接口调用
  9. Thinkphp3.2 查询物流接口对接(快递鸟为例)
  10. A-Level经济真题每期一练(14)