分润释放积分的方法

BUG员 75 2020-03-11

原题:

新用户送100固定资产

推荐一人送100固定资产

固定资产-》可用资产释放规则:普通用户每天千分之1,黄金用户前五十天每天千分之三,后面都是千分之2


数据库截图:

分润释放积分的方法  分润 释放积分 PHP释放积分 PHP释放积分思路 第1张

代码:

  public function release()
    {
        //定义今天日期
        $today = date('Ymd');//定义今天日期
//        开启事务
        $minMoney = 10000;//设定一个临界值
        Db::startTrans();
        try {
            //查询不是今日释放的用户且满足剩余金额大于某个临界值,也就是未释放的用户
            $noRelease = Db::name('test_demo')->where('fixed_assets', '>', $minMoney)->where('release_date', '<>', $today)->select();
            //判断当前条数
            if (count($noRelease) < 1) {
                return '释放操作结束';
            }
            //如果存在了数据执行释放、
            foreach ($noRelease as $kk=>$vv){
                //执行判断是什么等级,获取当前应该释放多少
                if($vv['grade']!=2){
                    //普通用户执行每天分成千分之1
                    $Released=1;
                }else{
                    //如果等于2黄金用户 那么就判断当前的用户的释放次数是否大于50次
                    if($vv['release_num']>50){
                        //黄金用户前五十天执行每天分成千分之3
                        $Released=2;
                    }else{
                        //黄金用户前五十天之后每天分成千分之2
                        $Released=3;
                    }
                }
                //根据释放的比例获取应该释放的金额
                $releaseMoney=intval($vv['fixed_assets']*$Released/1000);
                //开始释放操作执行操作
                Db::name('test_demo')
                    ->where('id',$vv['id'])
                    ->inc('assets',$releaseMoney)
                    ->inc('release_num')
                    ->dec('fixed_assets',$releaseMoney)
                    ->exp('release_date',$today)
                    ->update();
            }
            Db::commit();
            echo '释放成功,当前总释放成功条数:'.count($noRelease).'条数据';

        } catch (\Exception $e) {
            Db::rollback();
            echo '释放出错,错误原因:'.$e->getMessage();
        }
    }

效果截图:

分润释放积分的方法  分润 释放积分 PHP释放积分 PHP释放积分思路 第2张

上一篇:PHP算法之快排算法
下一篇:PHP学习之建立属于自己的PSR规范框架(一)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~