|
@@ -17,6 +17,7 @@ use App\DistrictRoi7;
|
17
|
17
|
use App\DistrictRoi30;
|
18
|
18
|
use App\DistrictRoi15;
|
19
|
19
|
use App\DistrictRoi45;
|
|
20
|
+use App\DistrictRoi60;
|
20
|
21
|
use App\SalerTargets;
|
21
|
22
|
use Illuminate\Http\Request;
|
22
|
23
|
use Illuminate\Support\Facades\DB;
|
|
@@ -3952,8 +3953,205 @@ class StatisticsController extends Controller
|
3952
|
3953
|
$filename = 'cangkufahuo_'.date('Y-m-d_H').'.xlsx';
|
3953
|
3954
|
return Order::export_excel($result, $filename, $indexKey, $title);
|
3954
|
3955
|
}
|
|
3956
|
+
|
|
3957
|
+ /**
|
|
3958
|
+ * 地域roi7 15,30,45,60日汇总
|
|
3959
|
+ */
|
|
3960
|
+ public function districtRoiAllTotal(Request $request){
|
|
3961
|
+ $page = (int)$request->input('page');
|
|
3962
|
+ $pageSize = 20;
|
|
3963
|
+ if($page<=0){
|
|
3964
|
+ $page = 1;
|
|
3965
|
+ }
|
|
3966
|
+
|
|
3967
|
+ $offset = ($page-1) * $pageSize;
|
|
3968
|
+ $city = $request->input('city');
|
|
3969
|
+
|
|
3970
|
+ if($city !== null){
|
|
3971
|
+ $city = str_replace('市', '', $city);
|
|
3972
|
+ }
|
|
3973
|
+
|
|
3974
|
+ $count = DistrictRoi7::where(function($query) use($city){
|
|
3975
|
+ if($city) $query->where('city', 'like', '%'.$city.'%');
|
|
3976
|
+ })->groupBy('city')->get();
|
|
3977
|
+
|
|
3978
|
+ $count = count($count);
|
|
3979
|
+ if ($count > 1) {
|
|
3980
|
+ // 总页数
|
|
3981
|
+ $pages = ceil($count/$pageSize);
|
|
3982
|
+ }else{
|
|
3983
|
+ // 总页数
|
|
3984
|
+ $pages = 1;
|
|
3985
|
+ }
|
|
3986
|
+
|
|
3987
|
+ $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){
|
|
3988
|
+ if($city) $query->where('city', 'like', '%'.$city.'%');
|
|
3989
|
+ })->groupBy('city')->orderBy('roi', 'desc')->offset($offset)->limit($pageSize)->get();
|
|
3990
|
+
|
|
3991
|
+ $result = json_decode(json_encode($result), true);
|
|
3992
|
+ foreach($result as $k=>&$v){
|
|
3993
|
+ //新粉roi
|
|
3994
|
+ $v['new_roi'] = $v['cost']>0 ? round($v['new_fan_order_amount'] / $v['cost'], 4) * 100 .'%' : '';
|
|
3995
|
+ //累计roi
|
|
3996
|
+ $v['total_roi'] = $v['cost']>0 ? round($v['sum_order_amount'] / $v['cost'], 4) * 100 .'%' : '';
|
|
3997
|
+ //数据格式化
|
|
3998
|
+ $v['order_amount'] = round($v['sum_order_amount'],2);
|
|
3999
|
+
|
|
4000
|
+ //15日
|
|
4001
|
+ $data15 = DistrictRoi15::select(DB::raw('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('city', $v['city'])->first();
|
|
4002
|
+ if(isset($data15->cost)){
|
|
4003
|
+ $v['cost15'] = $data15->cost;
|
|
4004
|
+ $v['order_count15'] = $data15->order_count;
|
|
4005
|
+ $v['order_amount15'] = round($data15->sum_order_amount,2);
|
|
4006
|
+ $v['total_roi15'] = $v['cost15']>0 ? round($data15->sum_order_amount / $v['cost15'], 4) * 100 .'%' : '';
|
|
4007
|
+ }else{
|
|
4008
|
+ $v['cost15'] = '';
|
|
4009
|
+ $v['order_count15'] = '';
|
|
4010
|
+ $v['order_amount15'] = '';
|
|
4011
|
+ $v['total_roi15'] = '';
|
|
4012
|
+ }
|
|
4013
|
+
|
|
4014
|
+ //30日
|
|
4015
|
+ $data30 = DistrictRoi30::select(DB::raw('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('city', $v['city'])->first();
|
|
4016
|
+ if(isset($data30->cost)){
|
|
4017
|
+ $v['cost30'] = $data30->cost;
|
|
4018
|
+ $v['order_count30'] = $data30->order_count;
|
|
4019
|
+ $v['order_amount30'] = round($data30->sum_order_amount,2);
|
|
4020
|
+ $v['total_roi30'] = $v['cost30']>0 ? round($data30->sum_order_amount / $v['cost30'], 4) * 100 .'%' : '';
|
|
4021
|
+ }else{
|
|
4022
|
+ $v['cost30'] = '';
|
|
4023
|
+ $v['order_count30'] = '';
|
|
4024
|
+ $v['order_amount30'] = '';
|
|
4025
|
+ $v['total_roi30'] = '';
|
|
4026
|
+ }
|
|
4027
|
+
|
|
4028
|
+ //45日
|
|
4029
|
+ $data45 = DistrictRoi45::select(DB::raw('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('city', $v['city'])->first();
|
|
4030
|
+ if(isset($data45->cost)){
|
|
4031
|
+ $v['cost45'] = $data45->cost;
|
|
4032
|
+ $v['order_count45'] = $data45->order_count;
|
|
4033
|
+ $v['order_amount45'] = round($data45->sum_order_amount,2);
|
|
4034
|
+ $v['total_roi45'] = $v['cost45']>0 ? round($data45->sum_order_amount / $v['cost45'], 4) * 100 .'%' : '';
|
|
4035
|
+ }else{
|
|
4036
|
+ $v['cost45'] = '';
|
|
4037
|
+ $v['order_count45'] = '';
|
|
4038
|
+ $v['order_amount45'] = '';
|
|
4039
|
+ $v['total_roi45'] = '';
|
|
4040
|
+ }
|
|
4041
|
+
|
|
4042
|
+ //60日
|
|
4043
|
+ $data60 = DistrictRoi60::select(DB::raw('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('city', $v['city'])->first();
|
|
4044
|
+ if(isset($data60->cost)){
|
|
4045
|
+ $v['cost60'] = $data60->cost;
|
|
4046
|
+ $v['order_count60'] = $data60->order_count;
|
|
4047
|
+ $v['order_amount60'] = round($data60->sum_order_amount,2);
|
|
4048
|
+ $v['total_roi60'] = $v['cost60']>0 ? round($data60->sum_order_amount / $v['cost60'], 4) * 100 .'%' : '';
|
|
4049
|
+ }else{
|
|
4050
|
+ $v['cost60'] = '';
|
|
4051
|
+ $v['order_count60'] = '';
|
|
4052
|
+ $v['order_amount60'] = '';
|
|
4053
|
+ $v['total_roi60'] = '';
|
|
4054
|
+ }
|
|
4055
|
+
|
|
4056
|
+ }
|
|
4057
|
+
|
|
4058
|
+ return view('statistics/districtRoiAllTotal', ['result' =>$result,
|
|
4059
|
+ 'page' =>$page,
|
|
4060
|
+ 'count' =>$count,
|
|
4061
|
+ 'pages' =>$pages,
|
|
4062
|
+ 'city' =>$city,
|
|
4063
|
+ ]);
|
|
4064
|
+
|
|
4065
|
+ }
|
|
4066
|
+
|
|
4067
|
+ /**
|
|
4068
|
+ * 地域roi7日
|
|
4069
|
+ */
|
|
4070
|
+ public function districtRoiAllTotal_export(Request $request){
|
|
4071
|
+
|
|
4072
|
+ $city = $request->input('city');
|
|
4073
|
+ if($city !== null){
|
|
4074
|
+ $city = str_replace('市', '', $city);
|
|
4075
|
+ }
|
|
4076
|
+
|
|
4077
|
+ $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){
|
|
4078
|
+ if($city) $query->where('city', 'like', '%'.$city.'%');
|
|
4079
|
+ })->groupBy('city')->orderBy('roi', 'desc')->get();
|
|
4080
|
+
|
|
4081
|
+ $result = json_decode(json_encode($result), true);
|
|
4082
|
+ foreach($result as $k=>&$v){
|
|
4083
|
+ //新粉roi
|
|
4084
|
+ $v['new_roi'] = $v['cost']>0 ? round($v['new_fan_order_amount'] / $v['cost'], 4) * 100 .'%' : '';
|
|
4085
|
+ //累计roi
|
|
4086
|
+ $v['total_roi'] = $v['cost']>0 ? round($v['sum_order_amount'] / $v['cost'], 4) * 100 .'%' : '';
|
|
4087
|
+ //数据格式化
|
|
4088
|
+ $v['order_amount'] = round($v['sum_order_amount'],2);
|
|
4089
|
+
|
|
4090
|
+ //15日
|
|
4091
|
+ $data15 = DistrictRoi15::select(DB::raw('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('city', $v['city'])->first();
|
|
4092
|
+ if(isset($data15->cost)){
|
|
4093
|
+ $v['cost15'] = $data15->cost;
|
|
4094
|
+ $v['order_count15'] = $data15->order_count;
|
|
4095
|
+ $v['order_amount15'] = round($data15->sum_order_amount,2);
|
|
4096
|
+ $v['total_roi15'] = $v['cost15']>0 ? round($data15->sum_order_amount / $v['cost15'], 4) * 100 .'%' : '';
|
|
4097
|
+ }else{
|
|
4098
|
+ $v['cost15'] = '';
|
|
4099
|
+ $v['order_count15'] = '';
|
|
4100
|
+ $v['order_amount15'] = '';
|
|
4101
|
+ $v['total_roi15'] = '';
|
|
4102
|
+ }
|
|
4103
|
+
|
|
4104
|
+ //30日
|
|
4105
|
+ $data30 = DistrictRoi30::select(DB::raw('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('city', $v['city'])->first();
|
|
4106
|
+ if(isset($data30->cost)){
|
|
4107
|
+ $v['cost30'] = $data30->cost;
|
|
4108
|
+ $v['order_count30'] = $data30->order_count;
|
|
4109
|
+ $v['order_amount30'] = round($data30->sum_order_amount,2);
|
|
4110
|
+ $v['total_roi30'] = $v['cost30']>0 ? round($data30->sum_order_amount / $v['cost30'], 4) * 100 .'%' : '';
|
|
4111
|
+ }else{
|
|
4112
|
+ $v['cost30'] = '';
|
|
4113
|
+ $v['order_count30'] = '';
|
|
4114
|
+ $v['order_amount30'] = '';
|
|
4115
|
+ $v['total_roi30'] = '';
|
|
4116
|
+ }
|
|
4117
|
+
|
|
4118
|
+ //45日
|
|
4119
|
+ $data45 = DistrictRoi45::select(DB::raw('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('city', $v['city'])->first();
|
|
4120
|
+ if(isset($data45->cost)){
|
|
4121
|
+ $v['cost45'] = $data45->cost;
|
|
4122
|
+ $v['order_count45'] = $data45->order_count;
|
|
4123
|
+ $v['order_amount45'] = round($data45->sum_order_amount,2);
|
|
4124
|
+ $v['total_roi45'] = $v['cost45']>0 ? round($data45->sum_order_amount / $v['cost45'], 4) * 100 .'%' : '';
|
|
4125
|
+ }else{
|
|
4126
|
+ $v['cost45'] = '';
|
|
4127
|
+ $v['order_count45'] = '';
|
|
4128
|
+ $v['order_amount45'] = '';
|
|
4129
|
+ $v['total_roi45'] = '';
|
|
4130
|
+ }
|
|
4131
|
+
|
|
4132
|
+ //60日
|
|
4133
|
+ $data60 = DistrictRoi60::select(DB::raw('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('city', $v['city'])->first();
|
|
4134
|
+ if(isset($data60->cost)){
|
|
4135
|
+ $v['cost60'] = $data60->cost;
|
|
4136
|
+ $v['order_count60'] = $data60->order_count;
|
|
4137
|
+ $v['order_amount60'] = round($data60->sum_order_amount,2);
|
|
4138
|
+ $v['total_roi60'] = $v['cost60']>0 ? round($data60->sum_order_amount / $v['cost60'], 4) * 100 .'%' : '';
|
|
4139
|
+ }else{
|
|
4140
|
+ $v['cost60'] = '';
|
|
4141
|
+ $v['order_count60'] = '';
|
|
4142
|
+ $v['order_amount60'] = '';
|
|
4143
|
+ $v['total_roi60'] = '';
|
|
4144
|
+ }
|
|
4145
|
+ }
|
|
4146
|
+
|
|
4147
|
+ $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'];
|
|
4148
|
+ $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'];
|
|
4149
|
+ $filename = 'districtRoiAll_'.date('Y-m-d_H').'.xlsx';
|
|
4150
|
+ return Order::export_excel($result, $filename, $indexKey, $title);
|
|
4151
|
+ }
|
3955
|
4152
|
|
3956
|
4153
|
}
|
|
4154
|
+
|
3957
|
4155
|
|
3958
|
4156
|
|
3959
|
4157
|
|