积分大致思路

把积分处理写成一个公共函数。在需要的地方调用即可。
前提,你的会员信息表里要有积分的字段,我一般用points作为会员的 积分字段。
另外,我会做一个points_list表,来记录积分操作的明细流水。这样的话,积分操作的记录都可以追溯查询。

  1. function setpoints($uid,$points,$txt,$opid=0){
  2.      $data=array(
  3.            'uid'       => $uid, //会员ID,就你要给那个会员操作积分就传入那个会员的ID
  4.            'points'  => $points,//操作的积分数量,正数为加分,负数为减分;
  5.            'optxt'    => $txt,   //操作理由,简单的积分操作理由;
  6.            'optime' => time(), //操作时间
  7.            'opid'     => $opid  //操作员ID,如果为0表示系统操作;
  8.      );
  9.      M('PointsList')->add($data);    //写入积分操作明细数据;
  10.      M('Member')->setInc('points',$points);   //更新会员表积分字段;
  11. }
 


把这个函数写到公共函数库,我一般放在Common/common.php里,然后在需要处理积分的地方调用就可以了。比如在用户登录的时候,积分+1就可以这样:

  1. function checklogin(){
  2.    .........//此处省略
  3.    setpoints($uid,1,'登录成功,积分+1');
  4. }
如果一天只能登陆加分一次,我该在setpoints()
里面加些什么?
 
用uid查一下points_list表在今天这个区间的记录是否存在即可,如果存在表明今天已经加分,不再做加分处理,如果不存在,则加分
 
 
 
 
 
 
淘宝网领取淘金币的签到系统为例:
目标:
第一天签到增加5个积分;第二天连续签到则增加8个积分;第三天连续签到,增加11个积分,第四天连续签到,增加15个积分;第五天连续签到,增加19个积分;第六天连续签到,增加24个积分;第七天连续签到,增加29个积分;第八天以后的连续签到,都增加29个积分。连续签到断开,则积分从第一天开始计算。
思路:
这个比较简单,思路是这样的:
在用户表里添加一个连续登录的字段,如果每天连续登录自增1,如果超过24小时的话就直接归0.
再增加一个最后登录的时间,格式是时间戳的。
首先判断最后登录的时间和现在的时间的时间差值是多少,函数如下:
<?php
function checkTime() {
if (time() - 最后登录时间 > 24*60*60 ) { // 判断时间是否大于24小时
// 让字段归0
}
}
?>
这个样子就可以了。
至于加分就简单了。
如果字段值为:
1就加5,
2就加8,
3就加11,
4就加15,
5就加19,
6就加24,
大于7就加29
posted @ 2017-09-01 08:49  奋斗的黑蜗牛1号  阅读(180)  评论(0)    收藏  举报