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'];
}
相关推荐
入戏三分_s20 分钟前
Neo4j常用命令
java·前端·neo4j
m0_7482448321 分钟前
Neo4j+Neovis+Vue3:前端连接数据库渲染
前端·数据库·neo4j
RumbleWx22 分钟前
vue中slot插槽的使用(默认插槽,具名插槽,作用域插槽)
前端·javascript·vue.js
Yan.love24 分钟前
从 Promise 到 Axios:轻松解锁异步编程
前端·javascript·网络·node.js
小彭努力中2 小时前
29.在Vue 3中使用OpenLayers读取WKB数据并显示图形
前端·javascript·vue.js·深度学习·openlayers
肘击鸣的百k路2 小时前
vue中常用的指令
前端·javascript·vue.js
自信人间三百年2 小时前
数据结构和算法-06线段树-01
java·linux·开发语言·数据结构·算法·leetcode
前端郭德纲2 小时前
React useEffect使用中遇到的问题及决解方案
前端·react.js·前端框架
小扳3 小时前
Web 毕设篇-适合小白、初级入门练手的 Spring Boot Web 毕业设计项目:药品进销存信息管理系统(前后端源码 + 数据库 sql 脚本)
前端·数据库·spring boot·sql·mysql·毕业设计·课程设计
苹果醋33 小时前
JavaScript函数式编程: 实现不可变数据结构
java·运维·spring boot·mysql·nginx