Laravel 代理收益排行榜

创建了一个收入表

sql 复制代码
CREATE TABLE `income_logs` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `order_id` int(11) NOT NULL COMMENT '订单ID',
  `type` int(11) NOT NULL DEFAULT '0' COMMENT ' 类型 0 支出 1收入',
  `user_id` int(11) NOT NULL COMMENT '消费者用户',
  `price` decimal(10,2) NOT NULL COMMENT '收益金额',
  `agent_user_id` int(11) NOT NULL COMMENT '代理用户ID',
  `updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间',
  `created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='收益明细';

每次有利润的时候创建一条代理收益记录,我们做月排行榜的时候不好计算,下面是计算月排行榜的代码

php 复制代码
$startOfMonth = Carbon::now()->startOfMonth(); // 当前月的1日
$endOfMonth = Carbon::now()->endOfMonth(); // 当前月的最后一天

$data['list'] = Income::select('agent_user_id', DB::raw('SUM(price) as earnings'))
    ->whereBetween('created_at', [$startOfMonth, $endOfMonth]) // 指定日期范围
    ->groupBy('agent_user_id') // 按代理用户 ID 分组
    ->having(DB::raw('SUM(price)'), '>', 0) // 只显示收益大于0的数据
    ->orderBy('earnings', 'desc') // 按 earnings 降序排列
    ->take(50) // 限制返回结果数量
    ->get();

/* 补充用户信息 */
foreach ($data['list'] as $item) {
    $user = User::where('id', $item['agent_user_id'])->first();
    $item['avatar'] = $user['avatar'];
    $item['id'] = $item['agent_user_id'];
    $item['username'] = $user['username'];
    $item['is_vip'] = $user['is_vip'];
}
相关推荐
我命由我123451 小时前
Kotlin 数据容器 - List(List 概述、创建 List、List 核心特性、List 元素访问、List 遍历)
java·开发语言·jvm·windows·java-ee·kotlin·list
武子康3 小时前
Java-80 深入浅出 RPC Dubbo 动态服务降级:从雪崩防护到配置中心秒级生效
java·分布式·后端·spring·微服务·rpc·dubbo
灵感__idea4 小时前
JavaScript高级程序设计(第5版):好的编程就是掌控感
前端·javascript·程序员
烛阴5 小时前
Mix
前端·webgl
代码续发5 小时前
前端组件梳理
前端
试图让你心动6 小时前
原生input添加删除图标类似vue里面移入显示删除[jquery]
前端·vue.js·jquery
YuTaoShao6 小时前
【LeetCode 热题 100】131. 分割回文串——回溯
java·算法·leetcode·深度优先
陈不知代码6 小时前
uniapp创建vue3+ts+pinia+sass项目
前端·uni-app·sass
小王码农记6 小时前
sass中@mixin与 @include
前端·sass
源码_V_saaskw6 小时前
JAVA图文短视频交友+自营商城系统源码支持小程序+Android+IOS+H5
java·微信小程序·小程序·uni-app·音视频·交友