Overview.php 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. <?php
  2. namespace app\controller;
  3. use app\BaseController;
  4. use app\model\MerchantStatisModel;
  5. use app\model\UserBehaviorLogModel;
  6. use app\common\CommonUtils;
  7. use app\model\GameBetGameModel;
  8. use app\model\MerchantsUserModel;
  9. use think\facade\Request;
  10. class Overview extends BaseController
  11. {
  12. /**
  13. * 仪表盘 - 获取概览统计数据
  14. */
  15. public function Dashboard()
  16. {
  17. $userInfo = $this->getUserInfo();
  18. try {
  19. // 获取昨、今日时间范围
  20. $today = date('Y-m-d');
  21. $filtter = [
  22. 'start_time' => date('Y-m-d', strtotime($today) - 86400),
  23. 'end_time' => date('Y-m-d', strtotime($today) + 86400),
  24. ];
  25. $merchantId = $userInfo['merchant_id'];
  26. // 获取昨、今日游戏相关统计
  27. $dailySummary = GameBetGameModel::getGameDailySummary($merchantId, $filtter);
  28. // 获取玩家统计数据
  29. $playerSummary = MerchantsUserModel::getPlayerStatistics($merchantId, $filtter);
  30. $tempPlayerData = [];
  31. if ($playerSummary) {
  32. foreach ($playerSummary as $row) {
  33. $date = $row['date'] == $today ? 'today' : 'yesterday';
  34. $tempPlayerData[$date] = $row;
  35. }
  36. }
  37. if ($dailySummary) {
  38. foreach ($dailySummary as $row) {
  39. $date = $row['date'] == $today ? 'today' : 'yesterday';
  40. $row['commission'] = CommonUtils::convertBalance($row['game_profit'] * 0.08, false);
  41. $row['bet_amount'] = CommonUtils::convertBalance($row['bet_amount'], false);
  42. $row['game_profit'] = CommonUtils::convertBalance($row['game_profit'], false);
  43. $row['register_users'] = $tempPlayerData[$date]['register_users'] ?? 0;
  44. $row['login_users'] = $tempPlayerData[$date]['login_users'] ?? 0;
  45. $row['online_users'] = 0;
  46. $dashboardData[$date] = $row;
  47. }
  48. }
  49. // 在线人数、登录数据
  50. $dashboardData['online_data'] = [];
  51. $dashboardData['login_data'] = [];
  52. return json(['code' => 0, 'msg' => 'success', 'data' => $dashboardData]);
  53. } catch (\Exception $e) {
  54. return json(['code' => -1, 'msg' => '获取仪表盘数据失败: ' . $e->getMessage()]);
  55. }
  56. }
  57. /**
  58. * 结算报表 - 按日期查询投注数据
  59. */
  60. public function SettlementReport()
  61. {
  62. $userInfo = $this->request->userInfo;
  63. // 获取查询参数
  64. $page = Request::get('page', 1, 'intval');
  65. $limit = Request::get('limit', 10, 'intval');
  66. // 筛选条件
  67. $filters = [
  68. // 时间筛选
  69. 'start_time' => Request::get('start_time', date('Y-m-d', strtotime('-7 days')), 'trim'),
  70. 'end_time' => Request::get('end_time', date('Y-m-d'), 'trim'),
  71. ];
  72. try {
  73. // 获取商户每日数据
  74. $result = MerchantStatisModel::getMerchantDailyList(
  75. $userInfo['merchant_id'],
  76. $page,
  77. $limit,
  78. $filters,
  79. );
  80. // 格式化数据
  81. foreach ($result['list'] as &$item) {
  82. $item['game_profit'] = CommonUtils::convertBalance($item['game_profit'], false);
  83. $item['game_profit_usdt'] = $item['game_profit'];
  84. $item['bet_amount'] = CommonUtils::convertBalance($item['bet_amount'], false);
  85. $item['bet_amount_usdt'] = $item['bet_amount'];
  86. $item['platform_fee'] = CommonUtils::convertBalance($item['bet_amount'] * 0.08, false);
  87. $item['platform_fee_usdt'] = $item['platform_fee'];
  88. $item['region'] = '';
  89. }
  90. return json_success($result, '获取成功');
  91. } catch (\Exception $e) {
  92. return json_error([], '获取商户每日数据失败:' . $e->getMessage());
  93. }
  94. }
  95. /**
  96. * 导出结算报表
  97. */
  98. public function exportSettlement() {
  99. ;
  100. }
  101. }