model = new RoleData(); } /** * 获取角色查询列表 */ public function getRoleList($query) { // 获取android数据 $table_and = Db::connect('db_game_log')->table('role_data_and')->field('* , "android" as platform')->where($query)->select()->toArray(); // 获取ios数据 $table_ios = Db::connect('db_game_log')->table('role_data_ios')->field('* , "ios" as platform')->where($query)->select()->toArray(); // 合并两个表的数据 $data = array_merge($table_and, $table_ios); // 1. 根据game_id 查找 main_id $game_ids = array_unique(array_column($data, 'game_id')); $main_id_arr = Db::connect('db_center')->table('pf_game')->whereIn('id', $game_ids)->column('main_id', 'id'); $data = array_map(function ($item) use ($main_id_arr) { // 最后登录时间 $item['login_time'] = Db::connect('db_origin')->table('agent_reg_' . $item['uid'] % 5)->where('main_id', $main_id_arr[$item['game_id']])->where('uid', $item['uid'])->value('login_time'); $item['login_time'] = date('Y-m-d H:i:s', $item['login_time']); // 支付记录 $pay_data = Db::connect('db_game_log')->table('sdk_order_success')->where('game_id', $item['game_id'])->where('uid', $item['uid'])->where('role_id', $item['role_id'])->order('pay_date', 'desc'); // 最新的一条支付记录时间 $item['last_recharge_time'] = $pay_data->value('pay_date'); // 累计充值 $item['total_recharge'] = $pay_data->sum('money'); return $item; }, $data); $data = $this->trandformListColumn($data, ['game', 'media', 'site', 'agent']); return $data; } /** * 更新 */ public function myUpdate($id, $data): int { $platform = $data['platform']; $table = $platform === 'android' ? 'role_data_and' : 'role_data_ios'; // 移除platform字段,避免更新到数据库 unset($data['platform']); // 直接使用Db更新指定表的数据 return Db::connect('db_game_log') ->table($table) ->where('id', $id) ->update($data); } }