123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351 |
- <?php
- /**
- * Created by Sublime.
- * User: Williamslife Wang
- * Date: 17/10/18
- * Time: 上午11:20
- */
- namespace App\Http\Controllers\Admin;
- use App\Http\Controllers\Controller;
- use App\Admin;
- use Illuminate\Http\Request;
- use App\Templates;
- use App\TemplatesSalers;
- use App\AdminRole;
- use App\TemplatesLog;
- use App\CustDetail;
- use App\Services\OssServices as oss;
- use Illuminate\Support\Facades\DB;
- class TemplateController extends Controller
- {
- /**
- * @return \Illuminate\View\View
- */
- public function index(Request $request)
- {
- $page = (int)$request->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('<script>parent.layer.msg("分配失败,未选择销售!",{icon:2,time:2000}); var index=parent.layer.getFrameIndex(window.name); parent.layer.close(index);</script>');
- }
- 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('<script>parent.layer.msg("分配权重之和不能超过100!",{icon:2,time:2000}); var index=parent.layer.getFrameIndex(window.name); parent.layer.close(index);</script>');
- }
- }
- //如果已经有 ,删除未选中
- 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('<script>parent.layer.msg("操作成功!",{icon:1,time:1000}); var index=parent.layer.getFrameIndex(window.name); parent.location.href="/admin/template/index";parent.layer.close(index);</script>');
- }
- /**
- * 获取分配销售
- * @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,
- ]);
- }
- }
|