remember('income_list' . $order, 60 * 60, function () use ($order, $columns){ $data = UserRebateLevelModel::query()->orderByDesc($order)->limit(15)->get($columns); foreach ($data as $k => $v) { $data[$k]['nick'] = $v->user->nick; $data[$k]['avatar'] = M3u8CacheRepository::getImageUrl($v->user->avatar); unset($v->user); } return $data; }); return $res; } /** * 推广记录 * * @param string $userId * @param $page * @param $pageSize * @return \Hyperf\Contract\LengthAwarePaginatorInterface */ public function promoteLog($userId, $page, $pageSize) { $res = UserModel::query()->where('created_at', '>', '2022-05-01')->where('parent_uid', $userId)->orderByDesc('created_at')->paginate($pageSize, ['created_at', 'nick', 'avatar'], 'page', $page); foreach ($res as &$v) { $v['avatar'] = M3u8CacheRepository::getImageUrl($v['avatar']); } return $res; } /** * 我的收益 * todo 优化:昨日收益和今日收益异步处理 * @param $userId * @return array * @throws \Psr\SimpleCache\InvalidArgumentException */ public function userIncome($userId) { $rebate = make(ConfigRepoistory::class)->get('user_agent_rebate_rule', 'rule'); $rebate = json_decode($rebate, true); // 参数初始化 $res = [ 'agent_level' => 1, 'rebate' => $rebate[1]['ratio'], 'lower_rebate' => $rebate[2]['ratio'], 'income' => [ 'yesterday' => 0, 'today' => 0, 'total' => 0 ], 'people' => [ 'spread' => UserModel::query()->where('created_at', '>', '2022-05-01')->where('parent_uid', $userId)->count('id'), 'recharge' => 0 ] ]; $rebateUser = UserRebateLevelModel::query()->where('uid', $userId)->first(['amount', 'agent_level', 'invite_number']); if (empty($rebateUser)) { return $res; } $res['agent_level'] = $rebateUser->agent_level; $res['rebate'] = $rebate[$rebateUser->agent_level]['ratio']; $res['lower_rebate'] = $rebate[$rebateUser->agent_level + 1]['ratio']; // 总收益 $res['income']['total'] = $rebateUser->amount; // 今日收益 $toDayDate = date('Y-m-d'); $toDatyAmount = ChangeLogModel::query()->whereBetween('created_at', [$toDayDate . ' 00:00:00', $toDayDate . ' 23:59:59']) ->where(['user_uid' => $userId, 'type' => ChangeLogConstant::TYPE_3])->sum('amount'); $res['income']['today'] = $toDatyAmount; // 昨日收益 $yesterdayDate = date('Y-m-d', strtotime('-1 day')); $yesterdayAmount = ChangeLogModel::query()->whereBetween('created_at', [$yesterdayDate . ' 00:00:00', $yesterdayDate . ' 23:59:59']) ->where(['user_uid' => $userId, 'type' => ChangeLogConstant::TYPE_3])->sum('amount'); $res['income']['yesterday'] = $yesterdayAmount; // 充值人数 $res['people']['recharge'] = $rebateUser->invite_number; return $res; } }