|
@@ -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){
|