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'];
}
相关推荐
data analyse 4564 小时前
服务端访问日志聚合 PV 与 UV 怎么实现?日志采集与口径设计
大数据·前端·数据分析
JavaGuide4 小时前
DeepSeek Harness 重磅更新,Codex、Claude Code 子智能体进官方插件列表了,还有 Git 工作树和思考翻译!
前端·后端
thefool1122664 小时前
多线程 4
java
小羊没烦恼!4 小时前
OS X 上使用.NET开发应用程序
开发语言·前端·数据库·人工智能·c#·策略模式
Rain的Java大神之路4 小时前
[特殊字符]8年Java老兵转型AI Agent:90%的人挂在同一个坑,根本不用学Python!(万字实战复盘,建议收藏)
java·数据库·人工智能·后端·python·spring·ai编程
高级程序源4 小时前
springboot大学生体测系统72170-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·python·django·课程设计
IT研究室5 小时前
最新计算机毕业设计选题推荐-基于spring boot的文学名著分享系统-网站-文档指导-Java-springboot
java·spring boot·课程设计
denlaku5 小时前
JDK 13 新特性详解
java·开发语言
秋饼5 小时前
Java 后端企业级 LLM 网关实战:Spring Cloud Gateway 构建统一大模型接入层
java·ai·技术分享·后端开发
今年下半年5 小时前
【防重放】Spring Boot 通过自定义注解实现接口防重放
java·spring boot·自定义注解·防重放