RoleDataLogic.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <?php
  2. namespace app\v1\logic\customer;
  3. use plugin\saiadmin\basic\BaseLogic;
  4. use plugin\saiadmin\exception\ApiException;
  5. use plugin\saiadmin\utils\Helper;
  6. use app\v1\model\customer\RoleData;
  7. use support\think\Db;
  8. /**
  9. * 角色查询逻辑层
  10. */
  11. class RoleDataLogic extends BaseLogic
  12. {
  13. /**
  14. * 构造函数
  15. */
  16. public function __construct()
  17. {
  18. $this->model = new RoleData();
  19. }
  20. /**
  21. * 获取角色查询列表
  22. */
  23. public function getRoleList($query)
  24. {
  25. // 获取android数据
  26. $table_and = Db::connect('db_game_log')->table('role_data_and')->field('* , "android" as platform')->where($query)->select()->toArray();
  27. // 获取ios数据
  28. $table_ios = Db::connect('db_game_log')->table('role_data_ios')->field('* , "ios" as platform')->where($query)->select()->toArray();
  29. // 合并两个表的数据
  30. $data = array_merge($table_and, $table_ios);
  31. // 1. 根据game_id 查找 main_id
  32. $game_ids = array_unique(array_column($data, 'game_id'));
  33. $main_id_arr = Db::connect('db_center')->table('pf_game')->whereIn('id', $game_ids)->column('main_id', 'id');
  34. $data = array_map(function ($item) use ($main_id_arr) {
  35. // 最后登录时间
  36. $item['login_time'] = Db::connect('db_origin')->table('agent_reg_' . $item['uid'] % 10)->where('main_id', $main_id_arr[$item['game_id']])->where('uid', $item['uid'])->value('login_time');
  37. $item['login_time'] = date('Y-m-d H:i:s', $item['login_time']);
  38. // 支付记录
  39. $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');
  40. // 最新的一条支付记录时间
  41. $item['last_recharge_time'] = $pay_data->value('pay_date');
  42. // 累计充值
  43. $item['total_recharge'] = $pay_data->sum('money');
  44. return $item;
  45. }, $data);
  46. $data = $this->trandformListColumn($data, ['game', 'media', 'site', 'agent']);
  47. return $data;
  48. }
  49. /**
  50. * 更新
  51. */
  52. public function myUpdate($id, $data): int
  53. {
  54. $platform = $data['platform'];
  55. $table = $platform === 'android' ? 'role_data_and' : 'role_data_ios';
  56. // 移除platform字段,避免更新到数据库
  57. unset($data['platform']);
  58. // 直接使用Db更新指定表的数据
  59. return Db::connect('db_game_log')
  60. ->table($table)
  61. ->where('id', $id)
  62. ->update($data);
  63. }
  64. }