input('page'); $pageSize = 20; if($page<=0){ $page = 1; } $offset = ($page-1) * $pageSize; $count = Templates::where('is_del',0)->count(); if ($count > 1) { // 总页数 $pages = ceil($count/$pageSize); }else{ // 总页数 $pages = 1; } $result = Templates::where('is_del',0)->orderBy('id', 'desc')->offset($offset)->limit($pageSize)->get(); $result = json_decode(json_encode($result),true); foreach($result as $k=>&$v){ # 获取销售 $salers = TemplatesSalers::select('templates_salers.*', 'admin.realname as admin_name')->leftJoin('admin', 'admin.id', '=', 'templates_salers.admin_id')->where('templates_salers.t_id', $v['id'])->where('templates_salers.is_del', 0)->get(); $v['salers'] = $salers; $v['salers_k'] = count($salers); } return view('template/index', ['result' =>$result, 'page' =>$page, 'count' =>$count, 'pages' =>$pages, ]); } /** * @return \Illuminate\View\View */ public function create() { return view('template/create'); } /** * @param Request $request * @return \Illuminate\Http\RedirectResponse */ public function store(Request $request) { $this->validate($request, [ 'url' => 'required|unique:templates', ], [ 'url.required' => '模板链接不能为空', 'url.unique' => '该模板链接已存在', ]); $template = new Templates(); $template->url = trim($request->input('url')); $template->note = trim($request->input('note')); //图片上传 阿里云oss if ($request->hasFile('img') && $request->file('img')->isValid()) { $file = $request->file('img'); $ossClient=new oss(); // 上传阿里云 $file = $ossClient->upload($file->getClientOriginalExtension(), $file->getRealPath(), 'upload/seafoodPic'.date("Y-m-d",time()).'/'.date('His')); $img=$file['oss-request-url']; $template->img=str_replace("kx-youhuiquan.oss-cn-beijing.aliyuncs.com","imgs.726p.com",$img); } $template->save(); return redirect('/admin/template/index')->with('info', '添加模板成功'); } /** * @param $id * @return \Illuminate\View\View */ public function edit($id) { $template = Templates::findOrFail($id); return view('template/edit', ['template' => $template, 'id'=>$id]); } /** * @param Request $request * @return \Illuminate\Http\RedirectResponse */ public function update(Request $request) { $id = (int)$request->input('id'); $this->validate($request, [ 'url' => 'required|unique:templates,url,'.$id.',id', ], [ 'url.required' => '模板链接不能为空', 'url.unique' => '该模板链接已存在', ]); $template = Templates::findOrFail($id); $template->url = trim($request->input('url')); $template->note = trim($request->input('note')); //图片上传 阿里云oss if ($request->hasFile('img') && $request->file('img')->isValid()) { $file = $request->file('img'); $ossClient=new oss(); // 上传阿里云 $file = $ossClient->upload($file->getClientOriginalExtension(), $file->getRealPath(), 'upload/seafoodPic'.date("Y-m-d",time()).'/'.date('His')); $img=$file['oss-request-url']; $template->img=str_replace("kx-youhuiquan.oss-cn-beijing.aliyuncs.com","imgs.726p.com",$img); } $template->save(); return redirect('/admin/template/index')->with('info', '修改模板成功'); } /** * @param $id * @return \Illuminate\Http\RedirectResponse */ public function assignSalers(Request $request) { $t_id = (int)$request->input('id'); $salers = $request->input('salers'); $assign_type = (int)$request->input('assign_type'); if( empty($salers) ){ exit(''); } if($assign_type == 1){ //平均分配 $count = count($salers); $weight_avg = round(1000 / $count) / 10; }else{ $weights = array(); $total = 0; foreach( $salers as $k=>$id ){ $weight_id = 'weight'.$id; $weights[$k] = trim( $request->input($weight_id) ); if(!$weights[$k]){ $weights[$k] = 0; } $total += $weights[$k]; } if($total>100){ exit(''); } } //如果已经有 ,删除未选中 TemplatesSalers::where('t_id', $t_id)->whereNotIn('admin_id',$salers)->update(['is_del'=>1]); foreach( $salers as $k=>$admin_id ){ if($assign_type == 1){ $weight = $weight_avg; }else{ $weight = $weights[$k]; } TemplatesSalers::updateOrCreate( ['t_id'=>$t_id, 'admin_id'=>$admin_id], ['is_del'=>0, 'weight'=>$weight] ); } exit(''); } /** * 获取分配销售 * @return \Illuminate\View\View */ public function getAssigns(Request $request){ $id = $request->input('id'); #销售筛选 //$saler_ids = DB::table('admin_role')->where('role_name', '销售')->lists('user_id'); $adminList = Admin::select('id', 'realname', 'username', 'team_id')->where('id','>', 1)->where(function ($query) { $query->whereNotNull('qrcode')->where('qrcode', '<>', ''); })->get(); $adminList = json_decode(json_encode($adminList), true); $assign_admin = TemplatesSalers::where('t_id', $id)->where('is_del', 0)->lists('weight', 'admin_id'); $team_info = DB::table('teams')->lists('name', 'id'); foreach($adminList as &$admin){ if( isset($assign_admin[$admin['id']]) ){ $admin['weight'] = $assign_admin[$admin['id']]; }else{ $admin['weight'] = ''; } if(isset($team_info[$admin['team_id']])){ $admin['team_name'] = $team_info[$admin['team_id']]; }else{ $admin['team_name'] = ''; } } return view('template/assign', [ 'adminlist' =>$adminList, 'id' =>$id ]); } /** * @return \Illuminate\View\View */ public function logindex(Request $request) { $page = (int)$request->input('page'); $pageSize = 20; if($page<=0){ $page = 1; } $offset = ($page-1) * $pageSize; $count = TemplatesLog::count(); if ($count > 1) { // 总页数 $pages = ceil($count/$pageSize); }else{ // 总页数 $pages = 1; } $result = TemplatesLog::orderBy('id', 'desc')->offset($offset)->limit($pageSize)->get(); $result = json_decode(json_encode($result),true); foreach($result as $k=>&$v){ # 获取销售名字 $v['admin_name'] = Admin::where('id', $v['admin_id'])->pluck('realname'); } return view('template/logindex', ['result' =>$result, 'page' =>$page, 'count' =>$count, 'pages' =>$pages, ]); } /** * 销售引流模板分配日志报表 */ public function templateLogReport(Request $request){ $admin_id = (int)$request->input('admin_id'); $team_id = (int)$request->input('team_id'); $stime = $request->input('stime'); $etime = $request->input('etime'); //假如有团队筛选,检索销售队员 $sale_ids = null; if($team_id>0){ $sale_ids = DB::table('admin')->where('team_id', $team_id)->lists('id'); } $page = (int)$request->input('page'); $pageSize = 20; if($page<=0){ $page = 1; } $offset = ($page-1) * $pageSize; $count = TemplatesLog::select(DB::raw('left(create_time,10) as day,admin_id'))->where(function($query) use($admin_id, $stime, $etime, $sale_ids){ if($admin_id>0) $query->where('admin_id', $admin_id); if($stime) $query->where('create_time', '>=', $stime); if($etime) $query->where('create_time', '<=', $etime. ' 23:59:59'); if($sale_ids !== null) $query->whereIn('admin_id', $sale_ids); })->groupBy('day')->groupBy('admin_id')->get(); $count = count($count); if ($count > 1) { // 总页数 $pages = ceil($count/$pageSize); }else{ // 总页数 $pages = 1; } $result = TemplatesLog::select(DB::raw('left(create_time,10) as day,admin_id,count(1) as tcount, count(if(type=1,true,null)) as pv_count'))->where(function($query) use($admin_id, $stime, $etime, $sale_ids){ if($admin_id>0) $query->where('admin_id', $admin_id); if($stime) $query->where('create_time', '>=', $stime); if($etime) $query->where('create_time', '<=', $etime. ' 23:59:59'); if($sale_ids !== null) $query->whereIn('admin_id', $sale_ids); })->groupBy('day')->groupBy('admin_id')->orderBy('day', 'desc')->offset($offset)->limit($pageSize)->get(); $result = json_decode(json_encode($result), true); foreach($result as $k=>&$v){ //获取销售当天加粉情况 $custDetail = CustDetail::select('fan_add', 'new_reply', 'new_consult', 'old_consult', 'admin_name')->where('dtime', $v['day'])->where('admin_id', $v['admin_id'])->where('is_del', 0)->first(); if(!empty($custDetail)){ $v['fan_add'] = $custDetail->fan_add; $v['new_reply'] = $custDetail->new_reply; $v['old_consult'] = $custDetail->old_consult; $v['new_consult'] = $custDetail->new_consult; $v['admin_name'] = $custDetail->admin_name; }else{ $v['fan_add'] = ''; $v['new_reply'] = ''; $v['old_consult'] = ''; $v['new_consult'] = ''; $v['admin_name'] = DB::table('admin')->where('id', $v['admin_id'])->pluck('realname'); } $v['long_count'] = $v['tcount'] - $v['pv_count']; //点击率 $v['click_rate'] = $v['pv_count']>0 && $v['long_count']>0 ? round( $v['long_count'] / $v['pv_count'], 4 ) * 100 . '%' : ''; $v['change_rate'] = $v['long_count']>0 && $v['fan_add']>0 ? round( $v['fan_add'] / $v['long_count'], 4 ) * 100 . '%' : ''; } $teamList = DB::table('teams')->select('id', 'name')->get(); $teamList = json_decode(json_encode($teamList), true); $adminList = DB::table('admin')->select('id', 'realname', 'username')->where('id','>', 1)->get(); $adminList = json_decode(json_encode($adminList), true); return view('template/templateLogReport', ['result'=>$result, 'page' =>$page, 'count' =>$count, 'pages' =>$pages, 'teamlist' =>$teamList, 'adminlist' =>$adminList, 'team_id' =>$team_id, 'admin_id' =>$admin_id, 'stime' =>$stime, 'etime' =>$etime, ]); } /** * 销售引流模板分配日志报表 */ public function templateLogReport_export(Request $request){ $admin_id = (int)$request->input('admin_id'); $team_id = (int)$request->input('team_id'); $stime = $request->input('stime'); $etime = $request->input('etime'); //假如有团队筛选,检索销售队员 $sale_ids = null; if($team_id>0){ $sale_ids = DB::table('admin')->where('team_id', $team_id)->lists('id'); } $result = TemplatesLog::select(DB::raw('left(create_time,10) as day,admin_id,count(1) as tcount, count(if(type=1,true,null)) as pv_count'))->where(function($query) use($admin_id, $stime, $etime, $sale_ids){ if($admin_id>0) $query->where('admin_id', $admin_id); if($stime) $query->where('create_time', '>=', $stime); if($etime) $query->where('create_time', '<=', $etime. ' 23:59:59'); if($sale_ids !== null) $query->whereIn('admin_id', $sale_ids); })->groupBy('day')->groupBy('admin_id')->orderBy('day', 'desc')->get(); $result = json_decode(json_encode($result), true); foreach($result as $k=>&$v){ //获取销售当天加粉情况 $custDetail = CustDetail::select('fan_add', 'new_reply', 'new_consult', 'old_consult', 'admin_name')->where('dtime', $v['day'])->where('admin_id', $v['admin_id'])->where('is_del', 0)->first(); if(!empty($custDetail)){ $v['fan_add'] = $custDetail->fan_add; $v['new_reply'] = $custDetail->new_reply; $v['old_consult'] = $custDetail->old_consult; $v['new_consult'] = $custDetail->new_consult; $v['admin_name'] = $custDetail->admin_name; }else{ $v['fan_add'] = ''; $v['new_reply'] = ''; $v['old_consult'] = ''; $v['new_consult'] = ''; $v['admin_name'] = DB::table('admin')->where('id', $v['admin_id'])->pluck('realname'); } $v['long_count'] = $v['tcount'] - $v['pv_count']; //点击率 $v['click_rate'] = $v['pv_count']>0 && $v['long_count']>0 ? round( $v['long_count'] / $v['pv_count'], 4 ) * 100 . '%' : ''; $v['change_rate'] = $v['long_count']>0 && $v['fan_add']>0 ? round( $v['fan_add'] / $v['long_count'], 4 ) * 100 . '%' : ''; } $indexKey = ['day','admin_name','pv_count','long_count','fan_add','click_rate','change_rate','new_reply','new_consult','old_consult']; $title = ['日期', '销售名', 'PV量', '长按次数', '加粉数', '点击率', '转化率', '新粉回复数', '新粉询价数', '老粉询价数']; $filename = 'xiaoshoudaofen_'.date('Y-m-d_H').'.xlsx'; return Order::export_excel($result, $filename, $indexKey, $title); } /* * @return \Illuminate\View\View */ public function sourceindex(Request $request) { $page = (int)$request->input('page'); $pageSize = 20; if($page<=0){ $page = 1; } $offset = ($page-1) * $pageSize; $count = TemplatesSource::where('is_del',0)->count(); if ($count > 1) { // 总页数 $pages = ceil($count/$pageSize); }else{ // 总页数 $pages = 1; } $result = TemplatesSource::where('is_del',0)->orderBy('id', 'desc')->offset($offset)->limit($pageSize)->get(); $result = json_decode(json_encode($result),true); foreach($result as $k=>&$v){ # 获取销售 $salers = TemplatesSourceSalers::select('templates_source_salers.*', 'admin.realname as admin_name')->leftJoin('admin', 'admin.id', '=', 'templates_source_salers.admin_id')->where('templates_source_salers.t_id', $v['id'])->where('templates_source_salers.is_del', 0)->get(); $v['salers'] = $salers; $v['salers_k'] = count($salers); # 获取模板图 $v['img'] = Templates::where('id', $v['t_id'])->pluck('img'); } return view('template/sourceindex', ['result' =>$result, 'page' =>$page, 'count' =>$count, 'pages' =>$pages, ]); } /** * @return \Illuminate\View\View */ public function sourcecreate() { return view('template/sourcecreate'); } /** * @param Request $request * @return \Illuminate\Http\RedirectResponse */ public function sourcestore(Request $request) { $this->validate($request, [ 't_id' => 'required', ], [ 't_id.required' => '模板不能为空', ]); $template = new TemplatesSource(); $template->t_id = intval($request->input('t_id')); $template->note = trim($request->input('note')); //图片上传 阿里云oss if ($request->hasFile('img') && $request->file('img')->isValid()) { $file = $request->file('img'); $ossClient=new oss(); // 上传阿里云 $file = $ossClient->upload($file->getClientOriginalExtension(), $file->getRealPath(), 'upload/seafoodPic'.date("Y-m-d",time()).'/'.date('His')); $img=$file['oss-request-url']; $template->back_img=str_replace("kx-youhuiquan.oss-cn-beijing.aliyuncs.com","imgs.726p.com",$img); } if($template->save()){ //生成连接 $template->url = $this->createSourceUrl($template->t_id, $template->id); $template->save(); } return redirect('/admin/template/sourceindex')->with('info', '添加模板成功'); } /** * @param $id * @return \Illuminate\View\View */ public function sourceedit($id) { $template = TemplatesSource::findOrFail($id); return view('template/sourceedit', ['template' => $template, 'id'=>$id]); } /** * @param Request $request * @return \Illuminate\Http\RedirectResponse */ public function sourceupdate(Request $request) { $id = (int)$request->input('id'); $this->validate($request, [ 't_id' => 'required', ], [ 't_id.required' => '模板不能为空', ]); $template = TemplatesSource::findOrFail($id); $t_id = (int)$request->input('t_id'); if( $template->t_id != $t_id ){ //模板更改,生成新连接 $template->t_id = $t_id; $template->url = $this->createSourceUrl($t_id, $template->id); } $template->note = trim($request->input('note')); //图片上传 阿里云oss if ($request->hasFile('img') && $request->file('img')->isValid()) { $file = $request->file('img'); $ossClient=new oss(); // 上传阿里云 $file = $ossClient->upload($file->getClientOriginalExtension(), $file->getRealPath(), 'upload/seafoodPic'.date("Y-m-d",time()).'/'.date('His')); $img=$file['oss-request-url']; $template->back_img=str_replace("kx-youhuiquan.oss-cn-beijing.aliyuncs.com","imgs.726p.com",$img); } $template->save(); return redirect('/admin/template/sourceindex')->with('info', '修改成功'); } }