PHP-积分问题(依次使用有效的积分)

问题描述

某系统根据用户的使用情况分发一些积分(有效期)给用户使用。使用的时候优先使用有效期内最小的积分

设计思路

数据库表 points表

iduser_idpointsvaliad
1152019-04-06 18:43:41
2152019-04-06 18:43:43

例子 现在需要花费7积分 那么id为1的points变成0,id为1的points变成3

代码

  1. 计算出user_id为1的有效期的总积分和相应的主键id
SELECT SUM(points) AS money,GROUP_CONCAT(id) AS id FROM `points` WHERE user_id=1 AND time()  < valiad
  1. 根据主键id算出每条对应的id 和 points
SELECT id,points FROM `Transaction`  WHERE user_id=$userId AND points IN ($id)
  1. 使用foreach

$ subDiamond 是第二条的 结果。$sub 是需要花费的积分

    foreach ($subDiamond as $k => $v) {
                if ($sub > 0) {
                    if($v['points'] >= $sub){   #记录的积分大于要花费的 执行完后进行清0以免进入下面操作
                        $id = $v['id'];
                        $effective = $v['points'] - $sub;
                        #进行SQL操做
                       $sub = 0;   #进行清0操作
                    }else{ #是计算每条钻石的记录小于要付的钻石量
                        $id = $v['id'];
                        #进行相应的SQL操作  使用完清0或者改变使用状态
                        $sub = $sub - $v['points'];  #进行一回减去一回
                    }
                }
           }

如还有不懂的可以下方评论进行联系

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值