sunhao 5 years ago
parent
commit
a90b1dc854

+ 94 - 15
app/Http/Controllers/Admin/StatisticsController.php

@@ -19,6 +19,7 @@ use App\DistrictRoi15;
19 19
 use App\DistrictRoi45;
20 20
 use App\DistrictRoi60;
21 21
 use App\SalerTargets;
22
+use App\RedisModel as Redis;
22 23
 use Illuminate\Http\Request;
23 24
 use Illuminate\Support\Facades\DB;
24 25
 
@@ -3959,6 +3960,7 @@ class StatisticsController extends Controller
3959 3960
      */
3960 3961
     public function districtRoiAllTotal(Request $request){
3961 3962
         $only_roi = (int)$request->input('only_roi');
3963
+        $sort = (int)$request->input('sort'); //排序 0:7日降序 1:15日降序 2:30日降序 3:45日降序 4:60日降序
3962 3964
         $page = (int)$request->input('page');
3963 3965
         $pageSize = 20;
3964 3966
         if($page<=0){
@@ -3969,25 +3971,61 @@ class StatisticsController extends Controller
3969 3971
         $city = $request->input('city');
3970 3972
 
3971 3973
         if($city !== null){
3972
-            $city = str_replace('市', '', $city);
3973
-        }
3974
-
3975
-        $count = DistrictRoi7::where(function($query) use($city){    
3976
-            if($city) $query->where('city', 'like', '%'.$city.'%');
3977
-        })->groupBy('city')->get();
3978
-
3979
-        $count = count($count);
3980
-        if ($count > 1) {
3981
-            // 总页数
3982
-            $pages = ceil($count/$pageSize);
3974
+            $city = str_replace('市', '', $city); //单独搜城市不走redis 不用排序
3983 3975
         }else{
3984
-            // 总页数
3985
-            $pages = 1;
3976
+            //从redis取数据
3977
+            $redis_key = 'seafood.districtRoiAllTotal';
3978
+            $redisData = Redis::get($redis_key);
3979
+            if(!empty($redisData)){
3980
+                $result = json_decode($redisData, true);
3981
+                switch ($sort) {
3982
+                    case '0':
3983
+                        $sort_c = 'total_roi';
3984
+                        break;
3985
+                    case '1':
3986
+                        $sort_c = 'total_roi15';
3987
+                        break;
3988
+                    case '2':
3989
+                        $sort_c = 'total_roi30';
3990
+                        break;
3991
+                    case '3':
3992
+                        $sort_c = 'total_roi45';
3993
+                        break;
3994
+                    case '4':
3995
+                        $sort_c = 'total_roi60';
3996
+                        break;
3997
+                    default:
3998
+                        $sort_c = 'total_roi';
3999
+                        break;
4000
+                }
4001
+                if($sort>0){
4002
+                    $sortArr=array_column($result, $sort_c);
4003
+                    array_multisort($sortArr, SORT_DESC,  $result);
4004
+                }
4005
+                $count = count($result);
4006
+                $result = array_slice($result, $offset, $pageSize);
4007
+                if ($count > 1) {
4008
+                    // 总页数
4009
+                    $pages = ceil($count/$pageSize);
4010
+                }else{
4011
+                    // 总页数
4012
+                    $pages = 1;
4013
+                }
4014
+                return view('statistics/districtRoiAllTotal', ['result' =>$result,
4015
+                    'page'              =>$page,
4016
+                    'count'             =>$count,
4017
+                    'pages'             =>$pages,                                    
4018
+                    'city'              =>$city,                                        
4019
+                    'only_roi'          =>$only_roi,                                        
4020
+                    'sort'          =>$sort,                                        
4021
+                ]);
4022
+
4023
+            }                       
3986 4024
         }
3987 4025
 
3988 4026
         $result = DistrictRoi7::select(DB::raw('city,sum(cost) as cost,sum(gzh_count) as gzh_count,sum(fan_count) as fan_count,sum(new_fan_order_count) as new_fan_order_count,sum(new_fan_order_amount) as new_fan_order_amount,sum(order_count) as order_count,sum(order_amount) as sum_order_amount, sum(order_amount)/sum(cost) as roi'))->where(function($query) use($city){    
3989
-            if($city) $query->where('city', 'like', '%'.$city.'%');
3990
-        })->groupBy('city')->orderBy('roi', 'desc')->offset($offset)->limit($pageSize)->get();
4027
+            if($city) $query->where('city', 'like', $city.'%');
4028
+        })->groupBy('city')->orderBy('roi', 'desc')->get();
3991 4029
 
3992 4030
         $result = json_decode(json_encode($result), true);
3993 4031
         foreach($result as $k=>&$v){
@@ -4056,12 +4094,53 @@ class StatisticsController extends Controller
4056 4094
 
4057 4095
         }
4058 4096
 
4097
+        $count = count($result);
4098
+        if($city == null){
4099
+            Redis::set($redis_key, json_encode($result));
4100
+            //计算今日剩余时间
4101
+            $_time = strtotime(date('Y-m-d'). '23:59:59') - time();
4102
+            Redis::expire($redis_key, $_time);
4103
+            switch ($sort) {
4104
+                case '0':
4105
+                    $sort_c = 'total_roi';
4106
+                    break;
4107
+                case '1':
4108
+                    $sort_c = 'total_roi15';
4109
+                    break;
4110
+                case '2':
4111
+                    $sort_c = 'total_roi30';
4112
+                    break;
4113
+                case '3':
4114
+                    $sort_c = 'total_roi45';
4115
+                    break;
4116
+                case '4':
4117
+                    $sort_c = 'total_roi60';
4118
+                    break;
4119
+                default:
4120
+                    $sort_c = 'total_roi';
4121
+                    break;
4122
+            }
4123
+            if($sort>0){
4124
+                $sortArr=array_column($result, $sort_c);
4125
+                array_multisort($sortArr, SORT_DESC,  $result);  
4126
+            }          
4127
+            $result = array_slice($result, $offset, $pageSize);
4128
+        }
4129
+
4130
+        if ($count > 1) {
4131
+            // 总页数
4132
+            $pages = ceil($count/$pageSize);
4133
+        }else{
4134
+            // 总页数
4135
+            $pages = 1;
4136
+        }
4059 4137
         return view('statistics/districtRoiAllTotal', ['result' =>$result,
4060 4138
             'page'              =>$page,
4061 4139
             'count'             =>$count,
4062 4140
             'pages'             =>$pages,                                    
4063 4141
             'city'              =>$city,                                        
4064 4142
             'only_roi'          =>$only_roi,                                        
4143
+            'sort'          =>$sort,                                        
4065 4144
             ]);
4066 4145
 
4067 4146
     }

+ 16 - 4
resources/views/statistics/districtRoiAllTotal.blade.php

@@ -20,7 +20,16 @@
20 20
                   
21 21
                 </select>  
22 22
                 <input class="input-text" style="width:5%;text-align:center" type="text" value="所属城市"/>
23
-                <input id="city" type="text"  class="input-text" style="width:6%;text-align:center" name="city" value="{{$city?$city:''}}">                         
23
+                <input id="city" type="text"  class="input-text" style="width:6%;text-align:center" name="city" value="{{$city?$city:''}}">   
24
+                <input class="input-text" style="width:6%;text-align:center" type="text" value="排序方式"/> 
25
+                <select style="width:10%;text-align:center" id='sort' name="sort">
26
+                    <option value="0">7日roi降序 </option>                   
27
+                    <option value="1">15日roi降序</option>                                     
28
+                    <option value="2">30日roi降序</option>
29
+                    <option value="3">45日roi降序</option>                                                                          
30
+                    <option value="4">60日roi降序</option>                                                                          
31
+                  
32
+                </select>                       
24 33
                 
25 34
                 <a class="btn btn-primary radius"  style="margin-left: 5px" onclick="user_search()" href="javascript:;">搜索</a>
26 35
                 <a class="btn btn-primary radius" onclick="statistics_export()" href="javascript:;"><i class="Hui-iconfont"></i> 导出数据</a>
@@ -119,15 +128,17 @@
119 128
         function user_search(){
120 129
 
121 130
             var city = $('#city').val();
131
+            var sort = $('#sort').val();
122 132
             var only_roi = "{{$only_roi}}";
123 133
             //var page = {{$page}};
124
-            location.href = 'districtRoiAllTotal?city='+city+'&only_roi='+only_roi;
134
+            location.href = 'districtRoiAllTotal?city='+city+'&only_roi='+only_roi+'&sort='+sort;
125 135
         }
126 136
         //导出
127 137
         function statistics_export(){
128 138
             var city = $('#city').val();
139
+            var sort = $('#sort').val();
129 140
             var only_roi = "{{$only_roi}}"
130
-            location.href = '/admin/statistics/districtRoiAllTotal_export?city='+city+'&only_roi='+only_roi;
141
+            location.href = '/admin/statistics/districtRoiAllTotal_export?city='+city+'&only_roi='+only_roi+'&sort='+sort;
131 142
         }
132 143
        
133 144
         $("#data_type").change(function(){
@@ -174,8 +185,9 @@
174 185
             totalSize: {{$count}},
175 186
             callback: function(num) {
176 187
                 var city = $('#city').val();
188
+                var sort = $('#sort').val();
177 189
                 var only_roi = "{{$only_roi}}"
178
-                location.href='districtRoiAllTotal?page='+num+'&city='+city+'&only_roi='+only_roi;
190
+                location.href='districtRoiAllTotal?page='+num+'&city='+city+'&only_roi='+only_roi+'&sort='+sort;
179 191
             }
180 192
         })
181 193