Browse Source

导出排序

sunhao 5 years ago
parent
commit
3b74d3a91a
1 changed files with 89 additions and 5 deletions
  1. 89 5
      app/Http/Controllers/Admin/StatisticsController.php

+ 89 - 5
app/Http/Controllers/Admin/StatisticsController.php

@@ -4155,17 +4155,60 @@ class StatisticsController extends Controller
4155 4155
     }
4156 4156
 
4157 4157
     /**
4158
-     * 地域roi7日
4158
+     * 地域roi汇总导出
4159 4159
      */
4160 4160
     public function districtRoiAllTotal_export(Request $request){
4161 4161
         $only_roi = (int)$request->input('only_roi');
4162 4162
         $city = $request->input('city');
4163
-        if($city !== null){
4164
-            $city = str_replace('市', '', $city);
4163
+    
4164
+        if($city){
4165
+            $city = str_replace('市', '', $city); //单独搜城市不走redis 不用排序
4166
+        }else{
4167
+            //从redis取数据
4168
+            $redis_key = 'seafood.districtRoiAllTotal';
4169
+            $redisData = Redis::get($redis_key);
4170
+            if(!empty($redisData)){
4171
+                $result = json_decode($redisData, true);
4172
+                switch ($sort) {
4173
+                    case '0':
4174
+                        $sort_c = 'total_roi';
4175
+                        break;
4176
+                    case '1':
4177
+                        $sort_c = 'total_roi15_sort';
4178
+                        break;
4179
+                    case '2':
4180
+                        $sort_c = 'total_roi30_sort';
4181
+                        break;
4182
+                    case '3':
4183
+                        $sort_c = 'total_roi45_sort';
4184
+                        break;
4185
+                    case '4':
4186
+                        $sort_c = 'total_roi60_sort';
4187
+                        break;
4188
+                    default:
4189
+                        $sort_c = 'total_roi';
4190
+                        break;
4191
+                }
4192
+                if($sort>0){
4193
+                    $sortArr=array_column($result, $sort_c);
4194
+                    array_multisort($sortArr, SORT_DESC,  $result);
4195
+                }
4196
+            
4197
+                if($only_roi == 1){
4198
+                    $indexKey = ['city','total_roi','total_roi15','total_roi30','total_roi45','total_roi60'];
4199
+                    $title = ['城市', '7日累计ROI', '15日累计ROI', '30日累计ROI', '45日累计ROI', '60日累计ROI'];
4200
+                }
4201
+                else{
4202
+                    $indexKey = ['city','cost','order_count','order_amount','total_roi','cost15','order_count15','order_amount15','total_roi15','cost30','order_count30','order_amount30','total_roi30','cost45','order_count45','order_amount45','total_roi45','cost60','order_count60','order_amount60','total_roi60'];
4203
+                    $title = ['城市', '7日累计投放成本', '7日累计成单数', '7日累计收入', '7日累计ROI', '15日累计投放成本', '15日累计成单数', '15日累计收入', '15日累计ROI', '30日累计投放成本', '30日累计成单数', '30日累计收入', '30日累计ROI', '45日累计投放成本', '45日累计成单数', '45日累计收入', '45日累计ROI', '60日累计投放成本', '60日累计成单数', '60日累计收入', '60日累计ROI'];
4204
+                }
4205
+                $filename = 'districtRoiAll_'.date('Y-m-d_H').'.xlsx';
4206
+                return Order::export_excel($result, $filename, $indexKey, $title);
4207
+            }                       
4165 4208
         }
4166 4209
 
4167
-        $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){    
4168
-            if($city) $query->where('city', 'like', '%'.$city.'%');
4210
+        $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){    
4211
+            if($city) $query->where('city', 'like', $city.'%');
4169 4212
         })->groupBy('city')->orderBy('roi', 'desc')->get();
4170 4213
 
4171 4214
         $result = json_decode(json_encode($result), true);
@@ -4174,6 +4217,7 @@ class StatisticsController extends Controller
4174 4217
             $v['new_roi'] = $v['cost']>0 ? round($v['new_fan_order_amount'] / $v['cost'], 4) * 100 .'%' : '';
4175 4218
             //累计roi
4176 4219
             $v['total_roi'] = $v['cost']>0 ? round($v['sum_order_amount'] / $v['cost'], 4) * 100 .'%' : '';
4220
+            $v['total_roi_sort'] = rtrim($v['total_roi'], '%') * 100;
4177 4221
             //数据格式化
4178 4222
             $v['order_amount'] = round($v['sum_order_amount'],2);
4179 4223
 
@@ -4184,11 +4228,13 @@ class StatisticsController extends Controller
4184 4228
                 $v['order_count15'] = $data15->order_count;
4185 4229
                 $v['order_amount15'] = round($data15->sum_order_amount,2);
4186 4230
                 $v['total_roi15'] = $v['cost15']>0 ? round($data15->sum_order_amount / $v['cost15'], 4) * 100 .'%' : '';
4231
+                $v['total_roi15_sort'] = rtrim($v['total_roi15'], '%') * 100;
4187 4232
             }else{
4188 4233
                 $v['cost15'] = '';
4189 4234
                 $v['order_count15'] = '';
4190 4235
                 $v['order_amount15'] = '';
4191 4236
                 $v['total_roi15'] = '';
4237
+                $v['total_roi15_sort'] = 0;
4192 4238
             }
4193 4239
 
4194 4240
             //30日
@@ -4198,11 +4244,13 @@ class StatisticsController extends Controller
4198 4244
                 $v['order_count30'] = $data30->order_count;
4199 4245
                 $v['order_amount30'] = round($data30->sum_order_amount,2);
4200 4246
                 $v['total_roi30'] = $v['cost30']>0 ? round($data30->sum_order_amount / $v['cost30'], 4) * 100 .'%' : '';
4247
+                $v['total_roi30_sort'] = rtrim($v['total_roi30'], '%') * 100;
4201 4248
             }else{
4202 4249
                 $v['cost30'] = '';
4203 4250
                 $v['order_count30'] = '';
4204 4251
                 $v['order_amount30'] = '';
4205 4252
                 $v['total_roi30'] = '';
4253
+                $v['total_roi30_sort'] = 0;
4206 4254
             }
4207 4255
 
4208 4256
             //45日
@@ -4212,11 +4260,13 @@ class StatisticsController extends Controller
4212 4260
                 $v['order_count45'] = $data45->order_count;
4213 4261
                 $v['order_amount45'] = round($data45->sum_order_amount,2);
4214 4262
                 $v['total_roi45'] = $v['cost45']>0 ? round($data45->sum_order_amount / $v['cost45'], 4) * 100 .'%' : '';
4263
+                $v['total_roi45_sort'] = rtrim($v['total_roi45'], '%') * 100;
4215 4264
             }else{
4216 4265
                 $v['cost45'] = '';
4217 4266
                 $v['order_count45'] = '';
4218 4267
                 $v['order_amount45'] = '';
4219 4268
                 $v['total_roi45'] = '';
4269
+                $v['total_roi45_sort'] = 0;
4220 4270
             }
4221 4271
 
4222 4272
             //60日
@@ -4226,12 +4276,46 @@ class StatisticsController extends Controller
4226 4276
                 $v['order_count60'] = $data60->order_count;
4227 4277
                 $v['order_amount60'] = round($data60->sum_order_amount,2);
4228 4278
                 $v['total_roi60'] = $v['cost60']>0 ? round($data60->sum_order_amount / $v['cost60'], 4) * 100 .'%' : '';
4279
+                $v['total_roi60_sort'] = rtrim($v['total_roi60'], '%') * 100;
4229 4280
             }else{
4230 4281
                 $v['cost60'] = '';
4231 4282
                 $v['order_count60'] = '';
4232 4283
                 $v['order_amount60'] = '';
4233 4284
                 $v['total_roi60'] = '';
4285
+                $v['total_roi60_sort'] = 0;
4286
+            }
4287
+
4288
+        }
4289
+
4290
+        if(!$city){
4291
+            Redis::set($redis_key, json_encode($result));
4292
+            //计算今日剩余时间
4293
+            $_time = strtotime(date('Y-m-d'). '23:59:59') - time();
4294
+            Redis::expire($redis_key, $_time);
4295
+            switch ($sort) {
4296
+                case '0':
4297
+                    $sort_c = 'total_roi';
4298
+                    break;
4299
+                case '1':
4300
+                    $sort_c = 'total_roi15_sort';
4301
+                    break;
4302
+                case '2':
4303
+                    $sort_c = 'total_roi30_sort';
4304
+                    break;
4305
+                case '3':
4306
+                    $sort_c = 'total_roi45_sort';
4307
+                    break;
4308
+                case '4':
4309
+                    $sort_c = 'total_roi60_sort';
4310
+                    break;
4311
+                default:
4312
+                    $sort_c = 'total_roi';
4313
+                    break;
4234 4314
             }
4315
+            if($sort>0){
4316
+                $sortArr=array_column($result, $sort_c);
4317
+                array_multisort($sortArr, SORT_DESC,  $result);  
4318
+            }          
4235 4319
         }
4236 4320
 
4237 4321
         if($only_roi == 1){