model = new SdkOrderRank(); } public function getList($query): mixed { $saiType = request()->input('saiType', 'list'); $page = request()->input('page', 1); $limit = request()->input('limit', 10); $orderBy = request()->input('orderBy', ''); $orderType = request()->input('orderType', $this->orderType); if(empty($orderBy)) { $orderBy = 'searchTotalMoney'; } // 先分组,再分页 $query = $query->field('user_name,sum(money) as searchTotalMoney, orderid, game_id, media_id, agent_id, site_id, uid, pay_channel_id, auth_id, server_id, server_name, pay_date, reg_date, role_name, role_id'); if ($saiType === 'all') { return $query->select()->toArray(); } $query->group('uid, game_id,site_id,server_id,media_id,auth_id,agent_id,server_id,auth_id,role_id'); $query->order($orderBy, $orderType); $data = $query->paginate($limit, false, ['page' => $page])->toArray(); $data['data'] = $this->trandformListColumn($data['data'], ['game','auth', 'agent', 'pay_channel']); // // 告警提示,查询最近登录时间,查询最近充值时间,和现在时间对比,如果超过3天,则告警,并提示 foreach($data['data'] as &$item){ // 最后登录时间 $item['login_time'] = Db::connect('db_origin')->table('user_'.$item['uid']%10)->where('uid', $item['uid'])->value('login_time'); // 最近注册时间 $item['pay_time'] = Db::connect('db_origin')->table('user_'.$item['uid']%10)->where('uid', $item['uid'])->value('pay_time'); // 现在时间 $item['now_time'] = time(); // 最近登录时间与现在时间对比,如果超过3天,则告警,并提示 if($item['login_time'] < $item['now_time'] - 3 * 24 * 60 * 60){ $item['login_alert'] = 1; }else{ $item['login_alert'] = 0; } // 最近充值时间与现在时间对比,如果超过3天,则告警,并提示 if($item['pay_time'] < $item['now_time'] - 3 * 24 * 60 * 60){ $item['pay_alert'] = 1; }else{ $item['pay_alert'] = 0; } } $where = $query->getOptions(); $totalWhere = []; if(!empty($where['game_id'])){ $totalWhere[] = ['game_id', 'in', $where['game_id']]; } if(!empty($where['auth_id'])){ $totalWhere[] = ['auth_id', 'in', $where['auth_id']]; } if(!empty($where['agent_id'])){ $totalWhere['agent_id'] = $where['agent_id']; } if(!empty($where['site_id'])){ $totalWhere['site_id'] = $where['site_id']; } if(!empty($where['server_id'])){ $totalWhere['server_id'] = $where['server_id']; } if(!empty($where['user_name'])){ $totalWhere['user_name'] = $where['user_name']; } if(!empty($where['server_name'])){ $totalWhere['server_name'] = $where['server_name']; } if(!empty($where['reg_date'])){ $totalWhere['reg_date'] = $where['reg_date']; } $totalList = Db::connect('db_game_log')->table('sdk_order_success') ->where($totalWhere) ->field('game_id,uid,sum(money) as totalMoney') ->group('uid,game_id,site_id,server_id,media_id,auth_id,agent_id,server_id,auth_id,role_id') ->select()->toArray(); // 查询累计充值金额(对每一行数据单独查询历史充值金额) $totalMoneyMap = []; if (!empty($data['data']) && !empty($totalList)) { foreach ($totalList as $totalItem) { $key = $totalItem['uid'] . '_' . $totalItem['game_id']; $totalMoneyMap[$key] = $totalItem['totalMoney'] ?? 0; } } // 为搜索结果添加累计充值金额 foreach($data['data'] as &$item){ $key = $item['uid'] . '_' . $item['game_id']; $item['totalMoney'] = $totalMoneyMap[$key] ?? 0; } return $data; } }