每周赚取的积分排行使用
1185
27
下面代码保存到fun函数目录即可
<?php
namespace app\common\fun;
use think\db;

class Jfrank
{
    /**
     * @param string $day 日期单位  day天 week周  month月
     * @param int $num   具体日期数字1  比如1天  1周  1月
     *  @param int $rows 返回行数
     * @return array
     */
    public function ranking($row=10,$day='week',$num=1){
        $array =[];
        $map['posttime'] = fun('time@only',$day,$num);
        $map['money']  = ['>',0];
       $rs =  Db::name('moneylog')->field('uid,SUM(money) as s_money')
            ->where($map)
            ->group('uid')
            ->order('s_money desc')
            ->limit($rows)
            ->select();
        foreach($rs As $arr){
            $uid = $arr['uid'];
            $info = Db::name('memberdata')->where('uid',$uid)->find();
            $array[] = array_merge($info,$arr);
        }

        return $array;

      
    }
}


模版里的使用方式,直接复制下面代码到你需要展示的地方
<h2>本周积分排行</h2>
{volist name=":fun('Jfrank@ranking')" id="rs"}
    <div>
        <span><img src="{$rs.icon|tempdir}" width="20" height="20" /></span>&nbsp;
        <span>{$rs.username}</span>&nbsp;
        <span>本周总赚取的积分:{$rs.s_money}</span>
    </div>
{/volist}


本fun函数详解

{ :fun('Jfrank@ranking',10,'week',1)}  默认为返回10个用户一周内的从大到小的赚取积分排行

如果需要其他时间段,则传递参数,参数上面代码已经说明

比如需要今天一天的,则是:

{ :fun('Jfrank@ranking',10,'day',1)}

一个月的则是:

 { :fun('Jfrank@ranking',10,'month',1)}

一年的则是:

 { :fun('Jfrank@ranking',10,'month',12)}


直接下载附件,放到application\common\fun目录下

147_2019060320422657e3c.zip



15
赏礼
赏钱
收藏
点击回复
      全部留言
  • 27
  • 袁冬 普通粉丝 消费:160.85元 2020-10-31 11:44 11:44
    华为
    6楼
    学习了
0 赏钱 赏礼回复
  • 千里寻花 普通粉丝 消费:60.02元 2020-10-20 17:11 17:116楼
    支持一下子
0 赏钱 赏礼回复
  • 利中 实战运营者 消费:916.02元 2020-03-26 18:03 18:036楼
    收藏
0 赏钱 赏礼回复
  • aria 普通粉丝 消费:2460.49元 2019-07-20 11:28 11:286楼

    怎么才能不统计充值增加的积分呢?只统计签到和奖励等方式获得的积分,谢谢

    aria 消费:2460.49元 2019-07-20 11:44
    怎么自动生成排名顺序号呢,比如第1名,第2名
    阿赖耶识 消费:24.43元 2019-07-20 12:47
    比较麻烦,要做筛选,或者在签到或者奖励后直接做好统计,没什么直接的办法;
    排名顺序号,自己在模版里处理,本来就是从大到小排列,你直接写第一、第二就好了
    aria 消费:2460.49元 其他手机 2019-07-20 12:50
    @torylf 

    好的,谢谢
0 赏钱 赏礼回复
  • aria 普通粉丝 消费:2460.49元 2019-07-13 21:35 21:356楼
    显示会员赚得的所有积分该怎么设置参数呢?就是从注册以后所有的积分收入
    阿赖耶识 消费:24.43元 2019-07-13 22:08
    所有分数,就不需要统计时间,这个函数不适合,如果是所有的,直接sql取数据库里全部的money>0的数据,然后sum加起来就可以了,比这个容易多
    aria 消费:2460.49元 2019-07-13 22:10
    @torylf 

    不会写啊
    阿赖耶识 消费:24.43元 2019-07-13 22:18

    其实把上面稍微改写下就可以了

    $map['posttime'] = fun('time@only',$day,$num);  改为
    
    if($day != 'all'){
        $map['posttime'] = fun('time@only',$day,$num);
    }

    模板里直接传个all就是所有的

     { :fun('Jfrank@ranking',10,'all')}

    aria 消费:2460.49元 2019-07-13 22:51
    ranking($rows=3,$day='all'){
            $array =[];
            if($day != 'all'){
        $map['posttime'] = fun('time@only',$day,$num);
    }

    我这样改的,模版调用没有改,可以用

    谢谢
0 赏钱 赏礼回复
  • 银杏114在线 实战运营者 消费:3609.79元 2019-07-10 21:43 21:436楼

    收藏

0 赏钱 赏礼回复
0 赏钱 赏礼回复
  • aria 普通粉丝 消费:2460.49元 2019-06-03 21:54 21:546楼

    非常感谢,@torylf,如果想显示上周的积分排行,时间应该怎么写呢?

    阿赖耶识 消费:24.43元 2019-06-03 22:33
    上周:{ :fun('Jfrank@ranking',10,'week',2)}
    上上周:{ :fun('Jfrank@ranking',10,'week',3)}
    以此类推...
    aria 消费:2460.49元 2019-06-03 22:35
    @torylf 

    我以为2是连续两周总和,
    阿赖耶识 消费:24.43元 2019-06-03 22:36
    都是单计数,如果要2周总和就分别调用2次,然后用模版拼出来
    aria 消费:2460.49元 2019-06-03 22:38
    @torylf 

    我试试看,谢谢
    aria 消费:2460.49元 2019-06-04 01:24
    @torylf 
    这里用<a href="{$rs.url}">不能获取到会员空间的链接?
    阿赖耶识 消费:24.43元 2019-06-04 10:07
    链接用这个 href="{:get_url('user',$rs['uid'])}"
    aria 消费:2460.49元 其他手机 2019-06-04 21:35
    @torylf 

    可以了,谢谢
0 赏钱 赏礼回复
  • 万荀网 实战运营者 消费:6824元 2019-06-04 06:20 06:206楼

    确实实用

0 赏钱 赏礼回复
  • snscn 普通粉丝 消费:1862.35元 2019-06-04 01:09 01:09
    其他手机
    6楼
    看来得仔细研究下fun函数了,要玩转X1,fun函数不能忽视。
0 赏钱 赏礼回复
  • 石头 风格开发者 消费:21923.34元 2019-06-03 22:05 22:056楼

    感谢分享

0 赏钱 赏礼回复
  • 奋斗 普通粉丝 消费:11元 2019-06-03 20:45 20:456楼

    楼主好人,感谢分享

0 赏钱 赏礼回复
  • 天外来客 风格开发者 消费:230.24元 2019-06-03 20:40 20:406楼

    收藏! 

0 赏钱 赏礼回复
更多回复
      你可能感兴趣的主题
恢复多功能编辑器
  • 3 1
  • 神盾SOHO
        圈内贴子3399
    • 圈子成员260
    本圈子内的新贴

    推荐内容
    扫一扫访问手机版
    请选择要切换的马甲:

     
    网页即时交流
    QQ咨询
    咨询热线
    020-28998648