sunxbiao месяцев назад: 6
Родитель
Сommit
5d7425d682
1 измененных файлов с 81 добавлено и 61 удалено
  1. 81 61
      app/common/repositories/finance/FinanceRepository.php

+ 81 - 61
app/common/repositories/finance/FinanceRepository.php

@@ -1844,42 +1844,34 @@ class FinanceRepository extends BaseRepository
1844 1844
      */
1845 1845
     public function vr_list($mer_id = 0)
1846 1846
     {
1847
-        $page = input('page');
1848
-        $limit = input('limit');
1847
+        $page = input('page', 1);
1848
+        $limit = input('limit', 20);
1849 1849
         $where = request()->params(['date']);
1850
-        $params = request()->params(['type', 'uid', 'pm', 'phone','status']);
1850
+        $params = request()->params(['type', 'uid', 'pm', 'phone', 'status']);
1851 1851
 
1852
-        $date = [];
1853
-        //商户ID
1852
+        // 1. 基础查询构建
1854 1853
         $query = Db::name('user_sign_vr')
1855
-        ->alias('uss')
1856
-        ->leftJoin('user u', 'u.uid=uss.uid')
1857
-        ->where('u.test_user', '<>', 1)
1858
-        ->leftJoin('store_order o', 'o.order_id=uss.order_id')
1859
-        ->where('o.test_order', '<>', 1)
1860
-        ->when(isset($params['uid']) && $params['uid'] != '', function ($query) use ($params) {
1861
-            $query->where('uss.uid', $params['uid']);
1862
-        })
1863
-        // ->when(isset($params['pm']) && $params['pm'] != '', function ($query) use ($params) {
1864
-        //     $query->where('uss.pm', $params['pm']);
1865
-        // })
1866
-        // ->when(isset($params['status']) && $params['status'] != '', function ($query) use ($params) {
1867
-        //     $query->where('uss.status', $params['status']);
1868
-        // })
1869
-        ->when(isset($params['phone']) && $params['phone'] != '', function ($query) use ($params) {
1870
-            $query->whereLike('u.phone', '%' . $params['phone'] . '%');
1871
-        })
1872
-        ->when(isset($params['type']) && $params['type'] != '', function ($query) use ($params) {
1873
-            $query->where('type', $params['type']);
1874
-        });
1854
+            ->alias('uss')
1855
+            ->leftJoin('user u', 'u.uid = uss.uid')
1856
+            ->leftJoin('store_order o', 'o.order_id = uss.order_id')
1857
+            ->where(' AND u.test_user <> 1')
1858
+            ->when(isset($params['uid']) && $params['uid'] != '', function ($query) use ($params) {
1859
+                $query->where('uss.uid', $params['uid']);
1860
+            })
1861
+            ->when(isset($params['phone']) && $params['phone'] != '', function ($query) use ($params) {
1862
+                $query->whereLike('u.phone', '%' . $params['phone'] . '%');
1863
+            })
1864
+            ->when(isset($params['type']) && $params['type'] != '', function ($query) use ($params) {
1865
+                $query->where('uss.type', $params['type']);
1866
+            });
1875 1867
 
1876 1868
         //导出数据
1877 1869
         $is_excel = request()->param('is_excel', 0);
1878 1870
         if($is_excel == 1){
1879 1871
             $date['list'] = $this->date_where($query, $where['date'], 'uss.addtime', '-', 2)
1880
-            ->field('uss.id,uss.addtime,u.nickname,u.phone,uss.number,o.order_sn,uss.type,uss.mark,u.score')
1881
-            ->order('uss.id', 'desc')
1882
-            ->select();
1872
+                ->field('uss.id,uss.addtime,u.nickname,u.phone,uss.number,o.order_sn,uss.type,uss.mark,u.score')
1873
+                ->order('uss.id', 'desc')
1874
+                ->select();
1883 1875
             $arr = [];
1884 1876
             foreach ($date['list'] as $k=>$item){
1885 1877
                 switch ($item['type']) {
@@ -1905,50 +1897,78 @@ class FinanceRepository extends BaseRepository
1905 1897
             ], $arr, 'VR统计');
1906 1898
         }
1907 1899
 
1908
-        // $date['list'] = $this->date_where($query, $where['date'], 'uss.addtime', '-', 2)
1909
-        //     ->field('uss.id,uss.addtime,u.nickname,u.phone,uss.number,o.order_sn,uss.type,uss.mark,u.score')
1910
-        //     ->page($page, $limit)
1911
-        //     ->order('uss.id', 'desc')
1912
-        //     ->select()
1913
-        //     ->each(function ($item) {
1914
-        //         $item['mark'] = $item['mark'];
1915
-        //         $item['addtime'] = date('Y-m-d H:i:s', $item['addtime']);
1916
-        //         return $item;
1917
-        //     });
1918
-        // $date['count'] = $query->count();
1919
-        // $date['statistics']['all'] = decimal2($query1->sum('number'));
1920
-        // $date['statistics']['nclear'] = decimal2($query3->where('uss.type', 2)->sum('number'));
1921
-        // $date['statistics']['transfervr'] = decimal2($query4->whereLike('uss.mark', '%消耗VR%')->sum('number'));
1922
-        // $date['statistics']['acquirevr'] = decimal2($query5->whereLike('uss.mark', '%到账VR%')->sum('number'));
1923
-        // $date['statistics']['transitionvr'] = decimal2($query6->whereLike('uss.mark', '%佣金转VR%')->sum('number'));
1924
-        // $date['statistics']['jcshqvr'] = decimal2($query7->whereLike('uss.mark', '%购买精彩%')->sum('number'));
1925
-        // $date['statistics']['hyzqvr'] = decimal2($query8->whereLike('uss.mark', '%购买会员%')->sum('number'));
1926
-        // $date['statistics']['allbuyvr'] = decimal2($query9->whereLike('uss.mark', '%购买%')->sum('number'));
1927
-        //支持时间筛选条件
1928
-        $query = $this->date_where($query, $where['date'], 'uss.addtime', '-', 2);
1929
-        $date['list'] = $query
1930
-            ->field('uss.id,uss.addtime,u.nickname,u.phone,uss.number,o.order_sn,uss.type,uss.mark,u.score')
1900
+        // 4. 分页查询
1901
+        $date['list'] = $query->field([
1902
+            'uss.id',
1903
+            'uss.addtime',
1904
+            'u.nickname',
1905
+            'u.phone',
1906
+            'uss.number',
1907
+            'o.order_sn',
1908
+            'uss.type',
1909
+            'uss.mark',
1910
+            'u.score'
1911
+        ])
1931 1912
             ->page($page, $limit)
1932 1913
             ->order('uss.id', 'desc')
1933 1914
             ->select()
1934 1915
             ->each(function ($item) {
1935
-                $item['mark'] = $item['mark'];
1936 1916
                 $item['addtime'] = date('Y-m-d H:i:s', $item['addtime']);
1937 1917
                 return $item;
1938 1918
             });
1919
+
1920
+        // 5. 统计信息提取到单独方法
1939 1921
         $date['count'] = $query->count();
1940
-        $date['statistics']['all'] = decimal2((clone $query)->sum('number'));
1941
-        $date['statistics']['nclear'] = decimal2((clone $query)->where('uss.type', 2)->sum('number'));
1942
-        $date['statistics']['transfervr'] = decimal2((clone $query)->whereLike('uss.mark', '%消耗VR%')->sum('number'));
1943
-        $date['statistics']['acquirevr'] = decimal2((clone $query)->whereLike('uss.mark', '%到账VR%')->sum('number'));
1944
-        $date['statistics']['transitionvr'] = decimal2((clone $query)->whereLike('uss.mark', '%佣金转VR%')->sum('number'));
1945
-        $date['statistics']['jcshqvr'] = decimal2((clone $query)->whereLike('uss.mark', '%购买精彩%')->sum('number'));
1946
-        $date['statistics']['hyzqvr'] = decimal2((clone $query)->whereLike('uss.mark', '%购买会员%')->sum('number'));
1947
-        $date['statistics']['allbuyvr'] = decimal2((clone $query)->whereLike('uss.mark', '%购买%')->sum('number'));
1948
- 
1922
+        $date['statistics'] = $this->getVrStatistics($query);
1923
+
1949 1924
         return $date;
1950 1925
     }
1951 1926
 
1927
+    /**
1928
+     * 获取VR统计信息
1929
+     */
1930
+    private function getVrStatistics($query)
1931
+    {
1932
+        $statistics = [];
1933
+        $conditions = [
1934
+            'all' => [],
1935
+            'nclear' => ['uss.type' => 2],
1936
+            'transfervr' => function ($subQuery) {
1937
+                $subQuery->where('uss.type', '=', 2)
1938
+                    ->where(function ($q) {
1939
+                        $q->where('uss.mark', 'like', '%消耗%')
1940
+                            ->whereOr('uss.mark', 'like', '%管理员调整vr%');
1941
+                    });
1942
+            },
1943
+            'acquirevr' => function ($subQuery) {
1944
+                $subQuery->where('uss.type', '=', 1)
1945
+                    ->where(function ($q) {
1946
+                        $q->where('uss.mark', 'like', '%到账%')
1947
+                            ->whereOr('uss.mark', 'like', '%管理员调整vr%');
1948
+                    });
1949
+            },
1950
+            'transitionvr' => [['uss.mark', 'like', '%佣金转VR%']],
1951
+            'jcshqvr' => [['uss.mark', 'like', '%购买精彩%']],
1952
+            'hyzqvr' => [['uss.mark', 'like', '%购买会员%']],
1953
+            'allbuyvr' => [['uss.mark', 'like', '%购买%']],
1954
+        ];
1955
+
1956
+        foreach ($conditions as $key => $condition) {
1957
+            $subQuery = clone $query;
1958
+            if (is_callable($condition)) {
1959
+                // 如果是闭包函数,直接调用
1960
+                $condition($subQuery);
1961
+            } elseif (!empty($condition)) {
1962
+                // 如果是数组条件,使用where
1963
+                $subQuery->where($condition);
1964
+            }
1965
+            $statistics[$key] = decimal2($subQuery->sum('uss.number'));
1966
+        }
1967
+
1968
+        return $statistics;
1969
+    }
1970
+
1971
+
1952 1972
 
1953 1973
 
1954 1974