Ver Fonte

充值渠道收入

ith5 há 6 meses atrás
pai
commit
62d915b71b

+ 10 - 0
app/v1/controller/CommonController.php

@@ -11,6 +11,7 @@ use app\v1\logic\center\GameMainLogic;
 use plugin\saiadmin\app\logic\system\SystemUserLogic;
 use support\Request;
 use support\Response;
+use support\think\Db;
 
 /**
  * 公共接口管理控制器
@@ -155,4 +156,13 @@ class CommonController extends BaseController
         $data = $this->agentSiteLogic->getAgentSiteOptions();
         return $this->success($data);
     }
+
+    /**
+     * 获取充值渠道
+     */
+    public function getPayChannelOptions(Request $request): Response
+    {
+        $data = Db::connect('db_center')->table('pay_channel')->where('status',1)->select()->toArray();
+        return $this->success($data);
+    }
 }

+ 32 - 0
app/v1/controller/customer/ReconciliationController.php

@@ -0,0 +1,32 @@
+<?php
+
+// 财务对帐
+
+namespace app\v1\controller\customer;
+
+use plugin\saiadmin\basic\BaseController;
+use app\v1\logic\customer\ReconciliationLogic;
+use support\Request;
+use support\Response;
+
+class ReconciliationController extends BaseController
+{
+    public function __construct()
+    {
+      $this->logic = new ReconciliationLogic();
+      parent::__construct();
+    }
+  // 充值渠道收入;
+  public function getChannelIncome(Request $request)
+  {
+    $where = $request->more([
+            ['pay_date', ''],
+            ['game_id', ''],
+            ['pay_channel_id', ''],
+        ]);
+    $result = $this->logic->getChannelIncome($where);
+    return $this->success($result);
+  }
+
+  // 充值渠道支出
+}

+ 0 - 56
app/v1/controller/gameLog/SdkRegLogController.php

@@ -1,56 +0,0 @@
-<?php
-// +----------------------------------------------------------------------
-// | saiadmin [ saiadmin快速开发框架 ]
-// +----------------------------------------------------------------------
-// | Author: your name
-// +----------------------------------------------------------------------
-namespace app\v1\controller\gameLog;
-
-use plugin\saiadmin\basic\BaseController;
-use app\v1\logic\gameLog\SdkRegLogLogic;
-use app\v1\validate\gameLog\SdkRegLogValidate;
-use support\Request;
-use support\Response;
-
-/**
- * 注册日志控制器
- */
-class SdkRegLogController extends BaseController
-{
-    /**
-     * 构造函数
-     */
-    public function __construct()
-    {
-        $this->logic = new SdkRegLogLogic();
-        $this->validate = new SdkRegLogValidate;
-        parent::__construct();
-    }
-
-    /**
-     * 数据列表
-     * @param Request $request
-     * @return Response
-     */
-    public function index(Request $request): Response
-    {
-        $where = $request->more([
-            ['user_name', ''],
-            ['game_id', ''],
-            ['media_id', ''],
-            ['agent_id', ''],
-            ['site_id', ''],
-            ['reg_time', ''],
-            ['vt', ''],
-        ]);
-
-        // 传入的是多选game_id, 转换成字符串
-        // $where['game_id'] = is_array($where['game_id']) ? implode(',', $where['game_id']) : $where['game_id'];
-        
-        $query = $this->logic->searchByAuth($where);
-        $data = $this->logic->getList($query);
-        $data['data'] = $this->logic->trandformListColumn($data['data'], ['game', 'ip', 'agent']);
-        return $this->success($data);
-    }
-
-}

+ 150 - 0
app/v1/logic/customer/ReconciliationLogic.php

@@ -0,0 +1,150 @@
+<?php
+
+namespace app\v1\logic\customer;
+
+use plugin\saiadmin\basic\BaseLogic;
+use support\think\Db;
+
+class ReconciliationLogic extends BaseLogic
+{
+  // 充值渠道收入
+  public function getChannelIncome($where)
+  {
+
+    $params = $this->searchByAuth($where);
+
+    $channelIncomeQuery = Db::connect('db_game_log')->table('sdk_order_success');
+
+    if(!empty($params['pay_date'])){
+      $channelIncomeQuery = $channelIncomeQuery
+      ->where('pay_date', '>=', $params['pay_date'][0] . ' 00:00:00')
+      ->where('pay_date', '<=', $params['pay_date'][1] . ' 23:59:59');
+    }
+
+    if(!empty($params['pay_channel_id'])){
+      $channelIncomeQuery->where('pay_channel_id', 'in', is_array($params['pay_channel_id']) ? implode(',', $params['pay_channel_id']) : $params['pay_channel_id']);
+    }
+
+    if(!empty($params['game_id'])){
+      $channelIncomeQuery->where('game_id', 'in', is_array($params['game_id']) ? implode(',', $params['game_id']) : $params['game_id']);
+    }
+
+
+    if(!empty($params['pay_date'])){
+      $channelIncomeQuery
+      ->where('pay_date', '>=', $params['pay_date'][0] . ' 00:00:00')
+      ->where('pay_date', '<=', $params['pay_date'][1] . ' 23:59:59');
+    }
+
+    $channelIncomeQuery->field('game_id,pay_channel_id,sum(money) as money');
+
+
+    $channelIncomeQuery->group('pay_channel_id');
+
+
+
+
+    $columns = [
+      [
+        'title' => '游戏ID',
+        'dataIndex' => 'game_id',
+        'width' => 180,
+      ],
+      [
+        'title' => '游戏名称',
+        'dataIndex' => 'game_name',
+        'width' => 180,
+      ],
+      [
+        'title' => '合计',
+        'dataIndex' => 'money',
+        'width' => 180,
+      ],
+    ];
+
+    $payChannelList = Db::connect('db_center')->table('pay_channel')
+    ->where('status',1);
+
+    if(!empty($params['pay_channel_id'])){
+      $payChannelList = $payChannelList->where('id', 'in', $params['pay_channel_id']);
+    }
+    $payChannelList = $payChannelList->select()->toArray();
+
+    foreach($payChannelList as $payChannel){
+      $title = $payChannel['name'];
+      $payChannelId = $payChannel['id'];
+       $columns[] = [
+          'title' => $title,
+          'dataIndex' => 'pay_channel_id_' . $payChannelId,
+          'width' => 180,
+        ];
+    }
+    
+
+    $data = $channelIncomeQuery->select()->toArray();
+  
+
+     $data = $this->trandformListColumn($data, ['game','pay_channel']);
+   
+    foreach($data as $key => $value){
+
+      $data[$key]['pay_channel_id_' . $value['pay_channel_id']] = $value['money'];
+    }
+
+    // 按game_id分组合并数据
+    $mergedData = [];
+    foreach($data as $item) {
+        $gameId = $item['game_id'];
+        
+        if(!isset($mergedData[$gameId])) {
+            $mergedData[$gameId] = [
+                'game_id' => $gameId,
+                'game_name' => $item['game_name'],
+                'money' => 0
+            ];
+            
+            // 初始化所有pay_channel_id金额为0
+            foreach($payChannelList as $channel) {
+                $mergedData[$gameId]['pay_channel_id_'.$channel['id']] = 0;
+            }
+        }
+        
+        // 累加合计金额
+        $mergedData[$gameId]['money'] += floatval($item['money']);
+        
+        // 设置对应渠道金额
+        $channelKey = 'pay_channel_id_'.$item['pay_channel_id'];
+        $mergedData[$gameId][$channelKey] = $item[$channelKey];
+    }
+      // 添加合计行
+      $totalRow = [
+          'game_id' => '合计',
+          'game_name' => '',
+          'money' => 0
+      ];
+
+      // 初始化所有渠道金额为0
+      foreach($payChannelList as $channel) {
+          $totalRow['pay_channel_id_'.$channel['id']] = 0;
+      }
+
+      // 计算合计数据
+      foreach($mergedData as $row) {
+          $totalRow['money'] += floatval($row['money']);
+          
+          foreach($payChannelList as $channel) {
+              $channelKey = 'pay_channel_id_'.$channel['id'];
+              $totalRow[$channelKey] += floatval($row[$channelKey]);
+          }
+      }
+
+      // 将合计行插入到数组最前面
+      array_unshift($mergedData, $totalRow);
+      // 转为数组格式
+      $data = array_values($mergedData);
+    return [
+      'columns' => $columns,
+      'data' => $data,
+    ];
+  }
+}