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']; } $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, ]); } }