| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- <?php
- namespace app\v1\logic\customer;
- use plugin\saiadmin\basic\BaseLogic;
- use plugin\saiadmin\exception\ApiException;
- use plugin\saiadmin\utils\Helper;
- use app\v1\model\customer\RoleData;
- use support\think\Db;
- /**
- * 角色查询逻辑层
- */
- class RoleDataLogic extends BaseLogic
- {
- /**
- * 构造函数
- */
- public function __construct()
- {
- $this->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);
- }
- }
|