param('type'); $name = request()->param('name'); View::assign('type', $type); View::assign('name', $name); $root_id = request()->employee->root_id; $param['id'] = $type; //二级分类 $w[] = ['type','=','cate']; $w[] = ['root_id','=',$root_id]; $w[] = ['pid','=',$param['id']]; $cate = TalkskillCates::where($w)->field('name,id')->order('id asc')->select()->toArray(); view::assign('cate', $cate); //房屋类型 $w1[] = ['type','=','house_type']; $w1[] = ['root_id','=',$root_id]; $w1[] = ['pid','=',0]; $house_type = TalkskillCates::where($w1)->field('name,id')->order('id asc')->select()->toArray(); view::assign('house_type', $house_type); //适用人群 $w3[] = ['root_id','=',$root_id]; $user_cate = TalkskillUsersCate::where($w3)->field('name,id')->order('id asc')->select()->toArray(); view::assign('user_cate', $user_cate); // 上传人 $empIds = TalkskillModel::where([['root_id', '=', $root_id]])->whereRaw("FIND_IN_SET('" . $name . "' , cate1)")->column('employee_id'); $employee = Employee::where([['id', 'in', $empIds]])->select(); View::assign('employee', $employee); return View::fetch(); } /* * 话术列表数据 */ public function talkskilllist() { $param = Request::param(); $where = [ ['root_id', '=', request()->employee->root_id], ['del', '=', 0], ['content', '<>', ''], ['approve', '=', 1] ]; if (!empty($param['keyword'])) { $where[] = ['title', 'like', '%' . $param['keyword'] . '%']; } $sql = TalkskillModel::with('employee')->where($where); if (!empty($param['name'])) { $sql->whereRaw("FIND_IN_SET('" . $param['name'] . "' , cate1)"); } if (!empty($param['cate'])) { $sql->whereRaw("FIND_IN_SET('" . $param['cate'] . "' , cate2)"); } if (!empty($param['house_type'])) { $sql->whereRaw("FIND_IN_SET('" . $param['house_type'] . "' , house_type)"); } if (!empty($param['user_cate'])) { $sql->whereRaw("FIND_IN_SET('" . $param['user_cate'] . "' , user_cate)"); } if (!empty($param['addtime'])) { list($start_date, $end_date) = explode(' - ', $param['addtime']); $sql->whereRaw("addtime >= '".$start_date."'"); $sql->whereRaw("addtime < '". date('Y-m-d H:i:s', strtotime($end_date) + 86400) ."'"); } if (!empty($param['employee_id'])) { $sql->whereRaw("employee_id=".$param['employee_id']); } // 获取数据 $list = $sql->page($param['page'], $param['limit'])->order('addtime desc')->select()->toArray(); $count = $sql->count(); return json(['code' => 0, 'data' => $list, 'count' => $count, 'msg' => '获取成功']); } /* * 话术添加页 */ public function talkskilladd() { $root_id = request()->employee->root_id; $w[] = ['root_id','=',$root_id]; $w[] = ['pid','=',0]; $w[] = ['type','=','cate']; $list = TalkskillCates::where($w)->field('id,name')->order('id asc')->select(); View::assign('type',$list); return View::fetch(); } /* * 话术分类添加 */ public function add_talkskill_label() { $value = Request::param('value'); if (empty($value)) return json(['code' => 1, 'msg' => '请输入场景名称']); $isAdd = TalkskillLabel::where(['label_name' => $value, 'root_id' => request()->employee->root_id])->count(); if ($isAdd > 0) return json(['code' => 1, 'msg' => '场景已存在']); $objId = TalkskillLabel::insertGetId(['label_name' => $value, 'root_id' => request()->employee->root_id]); return json(['code' => 0, 'msg' => '添加成功', 'data' => ['id' => $objId, 'name' => $value]]); } /* * 话术分类列表 */ public function label_list() { $id = request()->param('id'); $labelArray = []; if (!empty($id)) { $labelArray = TalkskillModel::where(['id' => $id, 'root_id' => request()->employee->root_id])->value('label'); $labelArray = explode(',', $labelArray); } $label = TalkskillLabel::where('root_id', request()->employee->root_id)->select(); $data = []; foreach ($label as $val) { $data[] = [ 'name' => $val['label_name'], 'value' => $val['id'], 'selected' => in_array($val['id'], $labelArray) ? true : false ]; } $data = hanziInitsort($data,'name'); return json($data); } /* * 话术添加 */ public function add_talkskill() { $param = Request::only(['title', 'user_cate','content', 'label'=>0, 'id', 'type', 'files_data', 'images_data', 'fiels_exist', 'images_exist', 'operationType', 'state','box'=>'','house_type'=>'','cate1'=>'','cate2'=>'']); $param['user_cate'] = str_replace(' ','',$param['user_cate']); $data = [ 'title' => $param['title'], 'content' => $param['content'], 'label' => $param['label'], 'root_id' => request()->employee->root_id, 'type' => 'admin', 'imgs' => isset($param['images_data']) && $param['images_data'] ? implode(',', $param['images_data']) : null, 'videos' => isset($param['files_data']) && $param['files_data'] ? implode(',', $param['files_data']) : null, 'user_cate' => $param['user_cate'], 'house_type' => $param['house_type'], 'cate1' => $param['cate1'], 'cate2' => $param['cate2'], 'employee_id'=>request()->employee->id ]; if (isset($param['images_exist']) && $param['images_exist']) { $data['imgs'] = $data['imgs'] ? $data['imgs'] . ',' . implode(',', $param['images_exist']) : implode(',', $param['images_exist']); } if (isset($param['fiels_exist']) && $param['fiels_exist']) { $data['videos'] = $data['videos'] ? $data['videos'] . ',' . implode(',', $param['fiels_exist']) : implode(',', $param['fiels_exist']); } if (empty($param['id'])) { dataStatistics(request()->employee->root_id,'talkskill_count',1,'inc');//manage应用首页统计数据 TalkskillModel::insert($data); } else { $data['id'] = $param['id']; unset($data['type']); $talkill = TalkskillModel::where(['id' => $data['id'], 'root_id' => request()->employee->root_id])->find(); $talkill->save($data); if ($param['operationType'] == 'submit') { event(new Msg($talkill->employee_id, '您提问的“' . $param['title'] . '”问题已有回复,请点击查看', 'talkskill')); } if ($param['operationType'] == 'share') { $approve = $this->approve($param['id'], $param['state'],$param['box']); if ($approve == false) return json(['code' => 1, 'msg' => '操作失败']); } } return json(['code' => 0, 'msg' => '操作成功']); } /* * 话术编辑查看 */ public function talkskilldetail() { $where = [ 'id' => Request::param('id'), 'root_id' => request()->employee->root_id, 'del' => 0 ]; $data = TalkskillModel::where($where)->find(); $data = $data->getData(); $data['imgs'] = empty($data['imgs']) ? '' : explode(',', $data['imgs']); $data['videos'] = empty($data['videos']) ? '' : explode(',', $data['videos']); $data['cate1_count'] = $data['cate1'] ? count(array_filter(explode(',',$data['cate1']))) : 0; $data['cate2_count'] = $data['cate2'] ? count(array_filter(explode(',',$data['cate2']))) : 0; $data['house_type_count'] = $data['house_type'] ? count(array_filter(explode(',',$data['house_type']))) : 0; $data['user_cate_count'] = $data['user_cate'] ? count(array_filter(explode(',',$data['user_cate']))) : 0; View::assign('data', $data); View::assign('ali_oss_bindurl', config('app.ali_oss_bindurl')); //操作类型:正常编辑,提问回复,共享修改 $operationType = Request::param('operationType'); View::assign('operationType', isset($operationType) ? $operationType : ''); $list = TalkskillUsersCate::where([['root_id', '=', request()->employee->root_id]])->order('id asc')->select(); View::assign('type',$list); return View::fetch(); } /* * 话术编辑页面下拉 */ public function talkskilldetail_select() { $id = Request::param('id'); $root_id = request()->employee->root_id; $where = [ 'id' => $id, 'root_id' => $root_id, 'del' => 0 ]; $data = TalkskillModel::where($where)->find(); $cate2 = explode(',',$data->cate2); $house_types = explode(',',$data->house_type); //话术一级 $root_id = request()->employee->root_id; $wc[] = ['type','=','cate']; $wc[] = ['root_id','=',$root_id]; $wc[] = ['pid','=',0]; $cate1 = TalkskillCates::where($wc)->field('name,name value,id')->order('id asc')->select()->toArray(); foreach ($cate1 as $k0 => $v0) { $cate1[$k0]['selected'] = ($data['cate1'] && strpos($data['cate1'],$v0['name'])!==false) ? true : false; } $data1['cate'] = $cate1; //话术二级下拉 $root_id = request()->employee->root_id; $pid = TalkskillCates::where([['name','=',$data['cate1']],['root_id','=',$root_id],['pid','=',0]])->value('id'); $w[] = ['type','=','cate']; $w[] = ['root_id','=',$root_id]; $w[] = ['pid','=',$pid]; $cate = TalkskillCates::where($w)->field('name,name value,id')->order('id asc')->select()->toArray(); foreach ($cate as $k => $v) { $cate[$k]['selected'] = ($cate2 && in_array($v['name'],$cate2)) ? true : false; } $data1['cate2'] = $cate; //房屋类型 $w1[] = ['type','=','house_type']; $w1[] = ['root_id','=',$root_id]; $w1[] = ['pid','=',0]; $house_type = TalkskillCates::where($w1)->field('name,name value,id')->order('id asc')->select()->toArray(); foreach ($house_type as $k2 => $v2) { $house_type[$k2]['selected'] = ($house_type && in_array($v2['name'],$house_types)) ? true : false; } $data1['house_type'] = $house_type; //适用人群 $w3[] = ['root_id','=',$root_id]; $user_cate = TalkskillUsersCate::where($w3)->field('name,name value,id')->order('id asc')->select()->toArray(); foreach ($user_cate as $k3 => $v3) { $user_cate[$k3]['selected'] = ($data['user_cate'] && strpos($data['user_cate'],$v3['name'])!==false) ? true : false; } $data1['user_date'] = $user_cate; return json(['code' => 0, 'data' => $data1]); } /** * 话术详情 */ public function talkskillview(){ $id = Request::param('id'); View::assign('id', $id); $root_id = !empty(Request::param('root_id')) ? Request::param('root_id') : request()->employee->root_id; View::assign('root_id', $root_id); $where = [ 'id' => $id, 'root_id' => $root_id, 'del' => 0 ]; $data = TalkskillModel::where($where)->find()->toArray(); switch ($data['type']){ case 'admin': $data['type_name'] = '官方创建'; break; case 'submit': $employee = Employee::find($data['employee_id']); $data['type_name'] = $employee['name'] . '提问'; break; case 'share': $data['type_name'] = '共享话术'; break; default: $data['type_name'] = '官方创建'; break; } View::assign('data', $data); return View::fetch(); } /* * 话术删除 */ public function talkskilldel() { $where = [ 'id' => Request::param('id'), 'root_id' => request()->employee->root_id ]; TalkskillModel::where($where)->update(['del' => 1]); dataStatistics(request()->employee->root_id,'talkskill_count',1,'dec');//manage应用首页统计数据 return json(['code' => 0, 'msg' => '操作成功']); } /* * 话术评论列表 */ public function talkskillcomment($id) { if (!Request()->isAjax()) { View::assign('id', $id); return View::fetch(); } $param = Request()->param(); $root_id = !empty(Request::param('root_id')) ? Request::param('root_id') : request()->employee->root_id; // 请求条件初始化 $where = [ 'root_id' => $root_id, 'taid' => $param['id'], 'approve' => 1 ]; $data = TalkskillComment::with(['User'])->where($where)->page($param['page'], $param['limit'])->order(['approve' => 'asc', 'use' => 'desc', 'praise' => 'desc'])->select()->toArray(); $count = TalkskillComment::where($where)->count(); return json(['code' => 0, 'data' => $data, 'count' => $count, 'msg' => '获取成功']); } /** * 评论删除 */ public function talkskillCommentDel($id) { $rs = TalkskillComment::where(['id' => $id, 'root_id' => request()->employee->root_id])->find(); if ($rs) { TalkskillModel::where(['id' => $rs['taid'], 'root_id' => request()->employee->root_id])->dec('commentCount')->update(); $rs->delete(); } } /* * 业务员提交的问题 */ public function feedbacklist() { if (!request()->isAjax()) return View::fetch(); $param = Request::param(); $where = [ ['root_id', '=', request()->employee->root_id], ['del', '=', 0], ['type', '=', 'submit'], ['content', '=', ''] ]; if (!empty($param['keyword'])) $where[] = ['title|content', 'like', '%' . $param['keyword'] . '%']; // 获取数据 $list = TalkskillModel::with(['employee'])->where($where)->page($param['page'], $param['limit'])->order('addtime desc')->select(); $count = TalkskillModel::where($where)->count(); return json(['code' => 0, 'data' => $list, 'count' => $count, 'msg' => '获取成功']); } /* * 业务员上传的话术审核列表 */ public function approve_talkskill() { if (!request()->isAjax()) return View::fetch(); $param = Request::param(); $where = [ ['root_id', '=', request()->employee->root_id], ['del', '=', 0], ['approve', '=', 0], ['type', '=', 'share'] ]; if (!empty($param['keyword'])) { $where[] = ['title', 'like', '%' . $param['keyword'] . '%']; } // 获取数据 $list = TalkskillModel::with(['employee'])->where($where)->page($param['page'], $param['limit'])->order(['addtime' => 'desc'])->select()->toArray(); $count = TalkskillModel::where($where)->count(); return json(['code' => 0, 'data' => $list, 'count' => $count, 'msg' => '获取成功']); } /* * 话术提问列表 */ public function talkskill_questions() { if (!request()->isAjax()) return View::fetch(); $param = Request::param(); $where = [ ['root_id', '=', request()->employee->root_id], ['del', '=', 0], ['approve', '=', 0], ['type', '=', 'share'] ]; if (!empty($param['keyword'])) { $where[] = ['title', 'like', '%' . $param['keyword'] . '%']; } // 获取数据 $list = TalkskillModel::with(['employee'])->where($where)->page($param['page'], $param['limit'])->order(['addtime' => 'desc'])->select()->toArray(); $count = TalkskillModel::where($where)->count(); return json(['code' => 0, 'data' => $list, 'count' => $count, 'msg' => '获取成功']); } /* * 批量审核 */ public function talkskill_approve() { $root_id = request()->employee->root_id; $ids = input('ids'); $approve = input('status', 0); $box = input('box','');//驳回原因 Db::startTrans(); try { $where[] = ['root_id', '=', $root_id]; $where[] = ['id', 'in', $ids]; $u['approve'] = $approve == 1 ? 1 : 2; //审批,0待审核,1审核通过,2不通过 $u['aprove_employee_id'] = request()->employee->id; $u['aprove_time'] = date('Y-m-d H:i:s'); $u['approve_from'] = 0; TalkskillModel::where($where)->update($u); //查询增加的贡献值 $contribution = CreditsSetting::where(['code' => 'talkskill_credits', 'root_id' => request()->employee->root_id])->value('value'); if (empty($contribution)) $contribution = 1; //贡献值 $list = TalkskillModel::where($where)->select(); foreach ($list as $k => $v) { if ($approve == 1) { //贡献值入库 $sum = Credits::where(['root_id' => $root_id, 'employee_id' => $v['employee_id'], 'type' => 1])->sum('credits'); $array = [ 'employee_id' => $v['employee_id'], 'root_id' => $root_id, 'credits' => $contribution, 'sum' => $sum + $contribution, 'type' => 1, 'json' => $v['id'], 'remark' => '共享话术审核通过' ]; Credits::create($array); } $s = $approve == 1 ? '已' : '未'; if ($s=='已') { //累计勋章 Console::call('medal',['talkskill',(string)$v['employee_id'],(string)$root_id]); event(new Msg($v['employee_id'], '您共享的“'.$v['title'].'”' . $s . '审核通过', 'talkskillApprove')); }else{ event(new Msg($v['employee_id'], '您共享的“'.$v['title'].'”' . '被驳回,原因是:'.$box, 'talkskillApprove')); } } Db::commit(); } catch (Exception $e) { // 回滚事务 Db::rollback(); return json(["code" => 1, 'msg' => '操作失败']); } return json(["code" => 0, 'msg' => '操作成功']); } /* * 审核业务员上传的话术 */ private function approve($id, $state,$box='') { $data = TalkskillModel::where(['id' => $id, 'del' => 0, 'type' => 'share', 'approve' => 0])->find(); if (empty($data)) return false; $data->approve = $state == 1 ? 1 : 2; $data->aprove_employee_id = request()->employee->id; $data->aprove_time = date('Y-m-d H:i:s'); $data->box = $box; $data->approve_from = 0; $data->save(); if ($data->employee_id != 0) { $s = $data->approve == 1 ? '已' : '未'; if ($s=='已') { //累计勋章 Console::call('medal',['talkskill',(string)$data->employee_id,(string)$data->root_id]); event(new Msg($data->employee_id, '您共享的“'.$data['title'].'”' . $s . '审核通过', 'talkskillApprove')); dataStatistics(request()->employee->root_id,'talkskill_count',1,'inc');//manage应用首页统计数据 }else{ event(new Msg($data->employee_id, '您共享的“'.$data['title'].'”' . '被驳回,原因是:'.$box, 'talkskillApprove')); } } if ($state != 1) return true; //查询增加的贡献值 $contribution = CreditsSetting::where(['code' => 'talkskill_credits', 'root_id' => request()->employee->root_id])->value('value'); if (empty($contribution)) $contribution = 1; //积分入库 $sum = Credits::where(['root_id' => request()->employee->root_id, 'employee_id' => $data['employee_id'], 'type' => 1])->sum('credits'); $array = [ 'employee_id' => $data['employee_id'], 'root_id' => request()->employee->root_id, 'credits' => $contribution, 'sum' => $sum + $contribution, 'type' => 1, 'remark' => '共享话术' ]; Credits::create($array); return true; } /* * 业务员评论的话术审核列表 */ public function approve_comment() { if (!request()->isAjax()) return View::fetch(); $param = Request::param(); $where = [ ['root_id', '=', request()->employee->root_id], ['approve', '=', 0], ]; if (!empty($param['keyword'])) { $where[] = ['comments', 'like', '%' . $param['keyword'] . '%']; } // 获取数据 $list = TalkskillComment::with(['talkskill'])->where($where)->page($param['page'], $param['limit'])->order(['addtime' => 'desc'])->select()->toArray(); $uid = array_column($list, 'uid'); $name = Employee::where([['root_id', '=', request()->employee->root_id], ['uid', 'in', $uid]])->column('name', 'uid'); foreach ($list as &$item) { $item['name'] = isset($name[$item['uid']]) ? $name[$item['uid']] : ''; } $count = TalkskillComment::where($where)->count(); return json(['code' => 0, 'data' => $list, 'count' => $count, 'msg' => '获取成功']); } /* * 业务员评论的话术展示 */ public function comment_detail() { $id = request()->param('id'); $comment = TalkskillComment::with(['talkskill'])->where(['root_id' => request()->employee->root_id, 'id' => $id])->find(); View::assign('data', $comment); return View::fetch(); } //批量审核回答 public function all_approve_comment() { $root_id = request()->employee->root_id; $ids = input('ids'); $approve = input('status', 0); Db::startTrans(); try { $where[] = ['root_id', '=', $root_id]; $where[] = ['id', 'in', $ids]; $u['approve'] = $approve == 1 ? 1 : 2; //审批,0待审核,1审核通过,2不通过 $u['aprove_employee_id'] = request()->employee->id; $u['aprove_time'] = date('Y-m-d H:i:s'); $u['approve_from'] = 0; TalkskillComment::where($where)->update($u); //查询增加的贡献值 $contribution = CreditsSetting::where(['code' => 'talkskill_contribution_value', 'root_id' => request()->employee->root_id])->value('value'); if (empty($contribution)) $contribution = 1; //贡献值 $list = TalkskillComment::where($where)->select(); foreach ($list as $k => $v) { //业务员 $employee_id = Employee::where(['root_id' => request()->employee->root_id, 'uid' => $v['uid'], 'state' => '在职'])->value('id'); if (empty($employee_id)) continue; if ($approve == 1) { //审核通过后话术表增加回答数量 TalkskillModel::where(['id' => $v['taid']])->inc('commentCount')->update(); //更新最新回答时间 $this->updateOrderDate($v['taid']); //贡献值入库 $sum = Credits::where(['root_id' => $root_id, 'employee_id' => $employee_id, 'type' => 1])->sum('credits'); $array = [ 'employee_id' => $employee_id, 'root_id' => $root_id, 'credits' => $contribution, 'sum' => $sum + $contribution, 'type' => 1, 'json' => $v['id'], 'remark' => '话术评论审核通过增加贡献值' ]; Credits::create($array); } $s = $approve == 1 ? '已' : '未'; if ($s=='已') { //累计勋章 Console::call('medal',['comment',(string)$employee_id,(string)request()->employee->root_id]); } event(new Msg($employee_id, '您提交的话术回答“'.$v['comments'].'”' . $s . '审核通过', 'talkskillApprove')); } Db::commit(); } catch (Exception $e) { // 回滚事务 Db::rollback(); return json(["code" => 1, 'msg' => '操作失败']); } return json(["code" => 0, 'msg' => '操作成功']); } /* * 审核业务员评论的内容 */ public function comment() { $param = Request::param(['id', 'state', 'comments','box'=>'']); $data = TalkskillComment::where(['id' => $param['id'], 'root_id' => request()->employee->root_id, 'approve' => 0])->find(); if (empty($data)) return json(['code' => 1, 'msg' => '审核失败']); $data->approve = $param['state'] == 1 ? 1 : 2; $data->comments = $param['comments']; $data->aprove_employee_id = request()->employee->id; $data->aprove_time = date('Y-m-d H:i:s'); $data->box = $param['box']; $data->approve_from = 0; $data->save(); $employee_id = Employee::where(['root_id' => request()->employee->root_id, 'uid' => $data['uid'], 'state' => '在职'])->value('id'); if (empty($employee_id)) return json(['code' => 1, 'msg' => '员工不存在']); // 添加消息 $s = $data->approve == 1 ? '已' : '未'; if ($s=='已') { $this->updateOrderDate($data->taid); //累计勋章 Console::call('medal',['comment',(string)$employee_id,(string)request()->employee->root_id]); event(new Msg($employee_id, '您提交的话术回答“'.$data->comments.'”' . $s . '审核通过', 'talkskillApprove')); }else{ event(new Msg($employee_id, '您提交的话术回答“'.$data->comments.'”' . '被驳回,原因是:'.$param['box'], 'talkskillApprove')); } if ($param['state'] != 1) return json(['code' => 0, 'msg' => '操作成功']); //审核通过后话术表增加回答数量 TalkskillModel::where(['id' => $data['taid']])->inc('commentCount')->update(); //查询增加的贡献值 $contribution = CreditsSetting::where(['code' => 'talkskill_contribution_value', 'root_id' => request()->employee->root_id])->value('value'); if (empty($contribution)) $contribution = 1; //积分入库 $sum = Credits::where(['root_id' => request()->employee->root_id, 'employee_id' => $employee_id, 'type' => 1])->sum('credits'); $array = [ 'employee_id' => $employee_id, 'root_id' => request()->employee->root_id, 'credits' => $contribution, 'sum' => $sum + $contribution, 'type' => 1, 'remark' => '话术评论审核通过增加贡献值' ]; Credits::create($array); return json(['code' => 0, 'msg' => '操作成功']); } /* * 更新最新回答时间 * $id 话术id */ public function updateOrderDate($id) { $data = TalkskillComment::where(['taid' => $id, 'root_id' => request()->employee->root_id, 'approve' => 1])->order('id desc')->findOrEmpty(); if (!$data->isEmpty()) { TalkskillModel::where('id',$id)->update(['order_date'=>date('Y-m-d H:i:s')]); } return true; } /* * 分类管理 */ public function cate_talkskill() { $w[] = ['root_id','=',request()->employee->root_id]; $w[] = ['pid','=',0]; $w[] = ['type','=','cate']; $type = TalkskillCates::where($w)->field('id,name label_name')->order('id asc')->select(); View::assign('type', $type); $root_id = request()->employee->root_id; $employee_id = request()->employee->id; // echo $root_id;die; //话术总数 $where = [ ['del','=',0], ['approve','=',1], ['root_id','=',$root_id] ]; $c = TalkskillModel::where($where)->field('id,root_id,type,employee_id')->select()->toArray(); //count话术总数,gf_upload官方上传,yewu_upload业务员上传,yewu_tiwen业务员提问 $data['count'] = $data['gf_upload'] = $data['yewu_upload'] = $data['yewu_tiwen'] = 0; $data['count'] = count($c); foreach ($c as $k => $v) { if ($v['employee_id']==0 && $v['type']=='admin') { $data['gf_upload']+=1; }elseif ($v['type']=='share') { $data['yewu_upload']+=1; }elseif ($v['type']=='submit') { $data['yewu_tiwen']+=1; } } //label_count应用场景数量,gf_huida官方回答,gf_huashu_grwth官方话术占比, yewu_huida业务员回答, yewu_huashu_grawth业务话术占比 $data['label_count'] = count($type); $w1[] = ['type','=','submit']; $w1[] = ['content', 'not null', '']; $w1[] = ['content','<>','']; $w1 = array_merge($where,$w1); $data['gf_huida'] = TalkskillModel::where($w1)->count(); $data['gf_huashu_grwth'] = $data['count']==0 ? '0%' : round($data['gf_upload']/$data['count']*100,2).'%'; $w2[] = ['root_id','=',$root_id]; $w2[] = ['approve','=',1]; $data['yewu_huida'] = TalkskillComment::where($w2)->count(); $data['count'] = $data['count']+$data['yewu_huida']; $data['yewu_huashu_grawth'] = $data['count']==0 ? '0%' : round($data['yewu_upload']/$data['count']*100,2).'%'; $data['yewu_tiwen_grawth'] = $data['count']==0 ? '0%' : round($data['yewu_tiwen']/$data['count']*100,2).'%'; // echo $data['yewu_huida'];die; View::assign('data',$data); return View::fetch(); } /* * 分类管理列表 */ public function cate_talkskill_list() { $param = Request::only(['page' => 1, 'limit' => 10, 'keyword','type'=>'']); $root_id = request()->employee->root_id; $count = 0; //一级场景 $cw[] = ['root_id','=',$root_id]; $cw[] = ['pid','=',0]; $cw[] = ['type','=','cate']; if (!empty($param['type'])) { $cw[] = ['name','=',$param['type']]; } $data = TalkskillCates::where($cw)->field('*,name label_name')->page($param['page'] , $param['limit'])->order('id asc')->select()->toArray(); $count = TalkskillCates::where($cw)->count(); if ($data) { $where2[] = ['cate1','in',array_column($data, 'name')]; $where2[] = ['root_id', '=', $root_id]; $where2[] = ['del', '=', 0]; $where2[] = ['approve', '=', 1]; if (isset($param['keyword']) && $param['keyword']) { $where2[] = ['title', 'like', '%' . trim($param['keyword']) . '%']; } // if (!empty($param['type'])) { // $where2[] = ['cate1','=',$param['type']]; // } $label_count = TalkskillModel::where($where2)->field('addtime,label label_id,id,use_count,cate1,view_num')->order('id asc')->select()->toArray(); $label_counts = $dates = $person_count = $viewCount = []; foreach ($label_count as $v) { //话术数量 $label_counts[$v['cate1']] = isset($label_counts[$v['cate1']]) ? $label_counts[$v['cate1']] += 1 : 1; //最近话术上传时间 $dates[$v['cate1']] = $v['addtime']; //使用人次 $person_count[$v['cate1']] = isset($person_count[$v['cate1']]) ? $person_count[$v['cate1']] + $v['use_count'] : $v['use_count']; //浏览人次 $viewCount[$v['cate1']] = isset($viewCount[$v['cate1']]) ? $viewCount[$v['cate1']] + $v['view_num'] : $v['view_num']; } foreach ($data as $k => $v) { $data[$k]['talkill_count'] = isset($label_counts[$v['name']]) ? $label_counts[$v['name']] : 0; $data[$k]['update_time'] = isset($dates[$v['name']]) ? $dates[$v['name']] : ''; $data[$k]['use_count'] = isset($person_count[$v['name']]) ? $person_count[$v['name']] : 0; $data[$k]['view_num'] = isset($viewCount[$v['name']]) ? $viewCount[$v['name']] : 0; //来源 if($v['from_type'] == 0) { $data[$k]['from'] = '店面发布'; }elseif($v['from_type'] == 1){ $data[$k]['from'] = '集团指派'; }else{ $company = Company::where('root_id',$v['from_root_id'])->value('company_name'); $data[$k]['from'] = $company.'共享'; } } } return json(['code' => 0, 'msg' => '获取成功', 'data' => $data, 'count' => $count]); //旧版 // $param = Request::param(); // $condition = [ // ['root_id', '=', request()->employee->root_id], // ['from_type', 'in', [0,2]] // ]; // if (!empty($param['type'])) { // $condition[] = ['id', '=', $param['type']]; // } // $data = TalkskillLabel::where($condition)->page($param['page'] , $param['limit'])->order('id desc')->select()->toArray(); // $count = TalkskillLabel::where($condition)->count(); // $ids = array_column($data, 'id'); // $where1 = []; // foreach ($ids as $v) { // $where1[] = "FIND_IN_SET(" . $v . " , label)"; // } // $where2 = [ // ['root_id', '=', request()->employee->root_id], // ['del', '=', 0], // ['approve', '=', 1], // ['content', '<>', ''], // ]; // if (isset($param['keyword']) && $param['keyword']) { // $where2[] = ['title', 'like', '%' . $param['keyword'] . '%']; // } // $label_count = TalkskillModel::where($where2)->whereRaw(implode(' or ', $where1))->field('addtime,label label_id,id,use_count')->select()->toArray(); // $talkill_count = $update_time = $use_count = []; // foreach ($label_count as $v) { // $label_ids = explode(',', $v['label_id']); // foreach ($label_ids as $v2) { // //话术数量 // $talkill_count[$v2] = isset($talkill_count[$v2]) ? $talkill_count[$v2] += 1 : 1; // //最近话术上传时间 // $update_time[$v2] = isset($update_time[$v2]) ? ($update_time[$v2] > $v['addtime'] ? $update_time[$v2] : $v['addtime']) : $v['addtime']; // //使用人次 // $use_count[$v2] = isset($use_count[$v2]) ? $use_count[$v2] + $v['use_count'] : $v['use_count']; // } // } // foreach ($data as $k => $v) { // $data[$k]['talkill_count'] = isset($talkill_count[$v['id']]) ? $talkill_count[$v['id']] : 0; // $data[$k]['update_time'] = isset($update_time[$v['id']]) ? $update_time[$v['id']] : ''; // $data[$k]['use_count'] = isset($use_count[$v['id']]) ? $use_count[$v['id']] : 0; // } // return json(['code' => 0, 'msg' => '获取成功', 'data' => $data, 'count' => $count]); } /* * 分类管理添加 */ public function cate_talkskill_add() { $param = Request::param(); $condition[] = ['label_name', '=', $param['name']]; $condition[] = ['root_id', '=', request()->employee->root_id]; $model = TalkskillLabel::where($condition); $models = new TalkskillLabel; $info = $model->find(); if ($info) { return json(['code' => 1, 'msg' => '名称已存在']); } $models->label_name = $param['name']; $models->root_id = request()->employee->root_id; $models->save(); return json(['code' => 0, 'msg' => '保存成功', 'data' => '']); } /* * 分类管理编辑 */ public function cate_talkskill_edit() { $param = Request::param(); $conditions = [['id', '=', $param['id']]]; $condition[] = ['label_name', '=', $param['name']]; $condition[] = ['root_id', '=', request()->employee->root_id]; $data['label_name'] = $param['name']; $model = TalkskillLabel::where($condition); $models = TalkskillLabel::where($conditions); $info = $model->find(); if ($info) { return json(['code' => 1, 'msg' => '名称已存在']); } $models->update($data); return json(['code' => 0, 'msg' => '保存成功', 'data' => '']); } /* * 员工热词搜索列表 */ public function hot_word() { if (!request()->isAjax()) return View::fetch(); $param = Request::param(); $condition = [['root_id', '=', request()->employee->root_id]]; if (!empty($param['keyword'])) $condition[] = ['keyword', 'like', '%' . $param['keyword'] . '%']; $list = TalkskillHotKeyword::where($condition)->page($param['page'], $param['limit'])->order('use_count desc')->select()->toArray(); $count = TalkskillHotKeyword::where($condition)->count(); return json(['code' => 0, 'data' => $list, 'count' => $count]); } /* * 员工热词搜索删除 */ public function how_keyword_del() { $id = Request::param('id'); TalkskillHotKeyword::where(['id' => $id, 'root_id' => request()->employee->root_id])->delete(); return json(['code' => 0, 'msg' => '删除成功']); } private function isEmptyRow($row) { foreach ($row as $cell) { if (null !== $cell) return false; } return true; } /* * 导入话术 */ public function importing() { $request = request(); if (!$request->isAjax()) { return View::fetch(); } // var_dump(request()->employee->root_id);die; $fileExtendName = substr(strrchr($_FILES['file']["name"], '.'), 1); $filename = $_FILES['file']['tmp_name']; if ($fileExtendName == 'xlsx') { $objReader = IOFactory::createReader('Xlsx'); } else { $objReader = IOFactory::createReader('Xls'); } $objPHPExcel = $objReader->load($filename); //$filename可以是上传的表格,或者是指定的表格 $sheet = $objPHPExcel->getSheet(0); //excel中的第一张sheet $highestRow = $sheet->getHighestDataRow(); $highestColumn = $sheet->getHighestDataColumn(); //// to make crm import log record $fileoriname = $_FILES['file']['name']; $a = 0; $realnum = 0; $badphonenum = 0; $saves = $cates = []; for ($i = 2; $i <= $highestRow; $i++) { $rowData = $sheet->rangeToArray('A' . $i . ':' . $highestColumn . $i, NULL, TRUE, FALSE); if ($this->isEmptyRow(reset($rowData))) { continue; } else { $realnum++; } // skip empty row $save = []; $save['title'] = trim((string) $objPHPExcel->getActiveSheet()->getCell('A' . $i)->getValue()); $save['content'] = trim((string) $objPHPExcel->getActiveSheet()->getCell('B' . $i)->getValue()); $save['label'] = trim((string) $objPHPExcel->getActiveSheet()->getCell('C' . $i)->getValue()); $save['user_cate'] = trim((string) $objPHPExcel->getActiveSheet()->getCell('D' . $i)->getValue()); $save['root_id'] = request()->employee->root_id; $saves[] = $save; } //处理分类 $cates = array_unique(array_filter(array_column($saves, 'label'))); $cates = $cates ? explode(',', implode(',', $cates)) : []; $f_cates = TalkskillLabel::where([['root_id', '=', request()->employee->root_id]])->column('label_name'); $cates = $cates ? array_diff($cates, $f_cates) : []; $cate_s = []; foreach ($cates as $k => $v) { $c = []; $c['label_name'] = $v; $c['root_id'] = request()->employee->root_id; $cate_s[] = $c; } //适用人群 $user_cates = array_unique(array_filter(array_column($saves,'user_cate'))); $f_user_cate = TalkskillUsersCate::where([['root_id', '=', request()->employee->root_id]])->column('name'); $user_cates = $user_cates ? array_diff($user_cates, $f_user_cate) : []; $user_cates_s = []; foreach ($user_cates as $k5 => $v5) { $user_cates_s[] = [ 'name' => $v5, 'root_id' => request()->employee->root_id ]; } TalkskillUsersCate::insertAll($user_cates_s); $label = new TalkskillLabel; $label = $label->saveAll($cate_s)->toArray(); $f_cates = TalkskillLabel::where([['root_id', '=', request()->employee->root_id]])->column('id', 'label_name'); foreach ($saves as $k => $v) { $label = explode(',', $v['label']); $l_label = []; foreach ($label as $k2 => $v2) { if (isset($f_cates[trim($v2)])) $l_label[] = $f_cates[trim($v2)]; } $saves[$k]['label'] = $l_label ? implode(',', $l_label) : ''; } $taskill = new TalkskillModel; $taskill->saveAll($saves); return json(["code" => 0, 'msg' => '导入成功']); } public function talkskill_delete() { $root_id = request()->employee->root_id; $ids = input('ids'); $where[] = ['root_id', '=', $root_id]; $where[] = ['id', 'in', $ids]; TalkskillModel::where($where)->update(['del' => 1]); dataStatistics(request()->employee->root_id,'talkskill_count',count(array_filter($ids)),'dec');//manage应用首页统计数据 return json(["code" => 0, 'msg' => '删除成功']); } public function get_org_data(){ $root_id = request()->employee->root_id; $org_id = input('org_id',0); $org_id = $org_id ?: request()->employee->root_id; $type = input('type','talkskill'); //查询直系子部门 $org_info = Org::where('id',$org_id)->value('path'); $orgs = $allnodes = org::where([['path','like',$org_info.'%']])->field('id,name,path')->select()->toArray(); $where[] = ['pid','=',$org_id]; $orgids = org::where($where)->column('id'); // $employee_ids = Employee::where([['org_id','in',array_column($orgs,'id')],['root_id','=',request()->employee->root_id],['uid','>',0]])->column('id'); $w2[] = ['employee_id','in',$employee_ids]; $w2[] = ['root_id','=',request()->employee->root_id]; $w2[] = ['del','=',0]; $w2[] = ['approve','=',1]; if ($type=='talkskill') { $w2[] = ['type','=','share']; } elseif ($type=='submit') { $w2[] = ['type','=','submit']; } $employee_talkskill = TalkskillModel::with(['employees'=>function($query){ $query->visible(['id','name','org_id'])->bind(['eid'=>'id','ename'=>'name','uid','org_id']); }])->where($w2) ->visible([]) ->select(); $w3[] = ['approve','=',1]; $w3[] = ['root_id','=',request()->employee->root_id]; $comment = TalkskillComment::where($w3)->group('taid')->column('count(*)','taid'); $all_comment = array_sum(array_values($comment)); $org = $count = $t_comment = $employee = []; foreach ($employee_talkskill as $k => $v) { //话术评论数量 $employee_talkskill['comment_count'] = $v['comment_count'] = isset($comment[$v['id']]) ? $comment[$v['id']] : 0; //部门话术数组 $org[$v['org_id']][] = $v; //部门话术数量 $count[$v['org_id']] = isset($count[$v['org_id']]) ? $count[$v['org_id']]+=1 : 1;//部门话术数量 //部门评论数量 $t_cmment[$v['org_id']] = isset($t_cmment[$v['org_id']]) ? $t_cmment[$v['org_id']]+$v['comment_count'] : $v['comment_count']; } // var_dump(array_sum(array_values($t_cmment)));die; // var_dump(array_column($employee_talkskill,'commentCount'));die; foreach ($allnodes as $k => $v) { $allnodes[$k]['count'] = isset($count[$v['id']]) ? $count[$v['id']] : 0;//本部门话术数量 $allnodes[$k]['comment_count'] = isset($t_cmment[$v['id']]) ? $t_cmment[$v['id']] : 0;//本部门评论数量 $allnodes[$k]['all_count'] = 0;//包含子部门话术总数 $allnodes[$k]['all_comment_count'] = 0;//包含子部门评论总数 foreach ($allnodes as $k2 => $v2) { if (strpos($v2['path'],$v['path']) !== false) { $allnodes[$k]['all_count'] = isset($count[$v2['id']]) ? $count[$v2['id']]+$allnodes[$k]['all_count'] : $allnodes[$k]['all_count']; $allnodes[$k]['all_comment_count'] = isset($t_cmment[$v2['id']]) ? $t_cmment[$v2['id']]+$allnodes[$k]['all_comment_count'] : $allnodes[$k]['all_comment_count']; } } } $orgs = $allnodes; $res = []; $res['person'] = $res['data'] = []; foreach ($orgs as $k => $v) { $orgs[$k]['value'] = $v['value'] = $type=='talkskill'||$type=='submit' ? $v['all_count'] : $v['all_comment_count']; if ($v['id']==$org_id) { $res['person'] = $v; } if(in_array($v['id'],$orgids)){ $res['data'][] = $v; } } $sum = count($employee_talkskill);//全部话术总数 $html = ''; $res['html'] = $html; $res['person_html'] = '

'.$res['person']['name'].':'.$person_count_type.'条

'; $res['html'] = $res['person_html'].$res['html']; //导航栏 $org_info = org::where('id',$org_id)->value('path'); $path = array_filter(explode('-',$org_info)); $org_ids = org::where([['id','in',$path]])->field('id,name')->column('id,name','id'); $paths = []; foreach ($path as $k => $v) { $arr = $org_ids[$v]; $index = (int)(mt_rand(100000,9999999).mt_rand(100000,9999999)); $paths[] = ''.$arr['name'].''; } // foreach ($org_ids as $k => $v) { // $index = (int)(mt_rand(100000,9999999).mt_rand(100000,9999999)); // $paths[] = ''.$v['name'].''; // } $res['path'] = implode('/',$paths); $res['html'] = $res['html'].'
'.$res['path']; return json_encode($res); } public function get_person(){ $org_id = input('org_id',0); $org_id = $org_id ?: request()->employee->root_id; $type = input('type','talkskill'); $w2[] = ['employee.org_id','=',$org_id]; $w2[] = ['employee.root_id','=',request()->employee->root_id]; $w2[] = ['talkskill.root_id','=',request()->employee->root_id]; $w2[] = ['employee.state','=','在职']; $w2[] = ['del','=',0]; $w2[] = ['approve','=',1]; $person1 = TalkskillModel::withJoin(['employee'=>[]],'inner'); $w3[] = ['org_id','=',$org_id]; $w3[] = ['root_id','=',request()->employee->root_id]; $w3[] = ['state','=','在职']; $person = Employee::where($w3)->field('name,id')->select()->toArray(); if ($type=='talkskill') { $w2[] = ['talkskill.employee_id','>',0]; $w2[] = ['talkskill.type','=','share']; $person1 = $person1->where($w2) // ->field('employee.org_id,talkskill.id,employee.uid,employee.id as eid,employee.name as ename') ->group('employee_id') ->column('count(*)','employee_id'); // ->toArray(); foreach ($person as $k => $v) { $person[$k]['value'] = isset($person1[$v['id']]) ? $person1[$v['id']] : 0; } }elseif ($type=='submit') { $w2[] = ['talkskill.employee_id','>',0]; $w2[] = ['talkskill.type','=','submit']; $person1 = $person1->where($w2) // ->field('employee.org_id,talkskill.id,employee.uid,employee.id as eid,employee.name as ename') ->group('employee_id') ->column('count(*)','employee_id'); // ->toArray(); foreach ($person as $k => $v) { $person[$k]['value'] = isset($person1[$v['id']]) ? $person1[$v['id']] : 0; } } else{ $person1 = $person1->where($w2)->field('employee.org_id,talkskill.id,employee.uid,employee.id as eid,employee.name as ename')->select()->toArray(); $taids = $person1 ? array_column($person1,'id') : []; $w4[] = ['taid','in',$taids]; $comment = TalkskillComment::where($w4)->group('taid')->column('count(*)','taid'); $comment_all = []; foreach ($person1 as $k => &$v) { $v['comment_count'] = isset($comment[$v['id']]) ? $comment[$v['id']] : 0; $comment_all[$v['eid']] = isset($comment_all[$v['eid']]) ? $comment_all[$v['eid']]+$v['comment_count'] : $v['comment_count']; } foreach ($person as $k => $v) { $person[$k]['value'] = isset($comment_all[$v['id']]) ? $comment_all[$v['id']] : 0; } } $res['data'] = $person; $html = ''; foreach ($person as $k => $v) { $html .= ''.$v['name'].':'.$v['value'].'条    '; } $res['html'] = $html; //导航栏 $org_info = org::where('id',$org_id)->value('path'); $path = array_filter(explode('-',$org_info)); $org_ids = org::where([['id','in',$path]])->field('id,name')->order('id asc')->select()->toArray(); $paths = []; foreach ($org_ids as $k => $v) { $paths[] = ''.$v['name'].''; } $res['path'] = implode('/',$paths); $res['html'] = $res['html'].'





'.$res['path']; return json_encode($res); } /* * 一级获取场景 */ public function get_cate1($root_id) { $w[] = ['root_id','=',$root_id]; $w[] = ['type','=','cate']; $w[] = ['pid','=',0]; $data = TalkskillCates::where($w)->field('*,name label_name')->select(); return $data; } /* * 集团后台话术场景 */ public function groupTalkskillLabel() { $param = request()->param(); $root = isset($param['root_id']) ? $param['root_id'] : request()->employee->root_id; if (!Request::isAjax()) { $type = $this->get_cate1($root); View::assign('type', $type); View::assign('from',isset($param['from']) ? $param['from'] : 'add'); View::assign('root_id',isset($param['root_id']) ? $param['root_id'] : request()->employee->root_id); return View::fetch(); } $w[] = ['root_id','=',$root]; $w[] = ['type','=','cate']; $w[] = ['pid','=',0]; $w[] = ['from_type','=',0];//只能共享自建话术 if (!empty($param['type'])) $w[] = ['id','=',$param['type']]; $data = TalkskillCates::where($w)->field('*,name label_name')->page($param['page'] , $param['limit'])->order('id asc')->select()->toArray(); $count = TalkskillCates::where($w)->count(); //查询场景下的话术 $where = [ ['root_id', '=', $root], ['del', '=', 0], ['approve', '=', 1], ['content', '<>', ''], // ['from_type', '=', 0]//只能共享自建话术 ]; if (isset($param['keyword']) && $param['keyword']) { $where[] = ['title', 'like', '%' . $param['keyword'] . '%']; } $label_count = TalkskillModel::where($where)->group('cate1')->column('count(id)','cate1'); $label_Maxtime = TalkskillModel::where($where)->group('cate1')->column('max(addtime)','cate1'); //查询共享到的店面 foreach ($data as &$v) { $v['talkill_count'] = isset($label_count[$v['name']]) ? $label_count[$v['name']] : 0; $v['update_time'] = isset($label_Maxtime[$v['name']]) ? $label_Maxtime[$v['name']] : ''; $v['shareCompany'] = TalkskillCates::where([['root_id','<>',$root],['text','like','%@'.$v['id'].'%']])->group('root_id')->count(); } return json(['code' => 0, 'msg' => '获取成功', 'data' => $data, 'count' => $count]); } /* * 集团话术列表数据 */ public function groupTalkskillList() { if (!Request::isAjax()) { $param = request()->param(); $root_id = !empty($param['root_id']) ? $param['root_id'] : request()->employee->root_id; View::assign('type', $param['type']); View::assign('from', $param['from']); View::assign('root_id', $param['root_id']); //二级分类 $param['id'] = $param['type']; $w[] = ['type','=','cate']; $w[] = ['root_id','=',$root_id]; $w[] = ['pid','=',$param['id']]; $cate = TalkskillCates::where($w)->field('name,id')->order('id asc')->select()->toArray(); view::assign('cate', $cate); //房屋类型 $w1[] = ['type','=','house_type']; $w1[] = ['root_id','=',$root_id]; $w1[] = ['pid','=',0]; $house_type = TalkskillCates::where($w1)->field('name,id')->order('id asc')->select()->toArray(); view::assign('house_type', $house_type); //适用人群 $w3[] = ['root_id','=',$root_id]; $user_cate = TalkskillUsersCate::where($w3)->field('name,id')->order('id asc')->select()->toArray(); view::assign('user_cate', $user_cate); return View::fetch(); } $param = Request::param(); $cate1 = TalkskillCates::where('id',$param['type'])->value('name'); $root_id = !empty($param['root_id']) ? $param['root_id'] : request()->employee->root_id; $where = [ ['cate1', '=', $cate1], ['del', '=', 0], ['content', '<>', ''], ['approve', '=', 1], ['from_type', '=', 0], ['root_id', '=', $root_id] ]; if (!empty($param['keyword'])) { $where[] = ['title', 'like', '%' . $param['keyword'] . '%']; } $sql = TalkskillModel::where($where); if (!empty($param['cate'])) { $sql->whereRaw("FIND_IN_SET('" . $param['cate'] . "' , cate2)"); } if (!empty($param['house_type'])) { $sql->whereRaw("FIND_IN_SET('" . $param['house_type'] . "' , house_type)"); } if (!empty($param['user_cate'])) { $sql->whereRaw("FIND_IN_SET('" . $param['user_cate'] . "' , user_cate)"); } // 获取数据 $list = $sql->page($param['page'], $param['limit'])->order('addtime desc')->select()->toArray(); $count = $sql->count(); return json(['code' => 0, 'data' => $list, 'count' => $count, 'msg' => '获取成功']); } /* * 共享的店面 */ public function groupShareCompany() { if (!Request::isAjax()) { $id = request()->param('id'); $from = request()->param('from'); view::assign('id',$id); view::assign('from',$from); return View::fetch(); } $param = request()->param(); $from = $param['from'] == 'company' ? 'from2' : 'from1'; $w[] = ['text','like','%@'.$param['id'].'%']; $w[] = ['pid','=',0]; $text = TalkskillCates::where($w)->column('text,root_id');//共享/指派的所有店面和集团; $root_ids = []; foreach ($text as $k => $v) { $text = array_unique(array_filter(explode(',',$v['text']))); foreach ($text as $k2 => $v2) { $arr = explode('@',$v2); if (count($arr)==4 && $arr[3]==$from) { $root_ids[$v['root_id']] = $arr[2];//店面id=>时间 } } } $where[] = ['root_id','in',array_keys($root_ids)]; // $where[] = ['root_id','in',$root_ids]; // if($param['from'] == 'company') // { // $companyId = Company::where('root_id', request()->employee->root_id)->value('id'); // $lastCompany = Company::where('company_group',$companyId)->column('root_id'); // // $where = [ // // ['from_content_id','=',$param['id']], // // ['from_root_id','in',$lastCompany] // // ]; // $where[] = ['root_id','in',$lastCompany]; // }else{ // // $where = [ // // ['from_content_id','=',$param['id']], // // ['from_root_id','=',request()->employee->root_id] // // ]; // $where[] = ['root_id','=',request()->employee->root_id]; // } $data = Company::where($where)->page($param['page'],$param['limit'])->select(); foreach ($data as $k1 => $v1) { $data[$k1]['addtime'] = $root_ids[$v1['root_id']]; } $count = Company::where($where)->count(); // $data = TalkskillLabel::with(['company'])->where($where)->page($param['page'],$param['limit'])->select(); // $count = TalkskillLabel::with(['company'])->where($where)->count(); return json(['code' => 0, 'data' => $data,'count'=>$count]); } /* * 集团后台话术店面共享 */ public function groupCompanyTalkskill() { if (!Request::isAjax()) { return View::fetch(); } $param = Request::param(); //查询店面 $companyId = Company::where('root_id', request()->employee->root_id)->value('id'); $data = Company::where('company_group',$companyId)->field('root_id,company_name')->page($param['page'],$param['limit'])->select()->toArray(); $count = Company::where('company_group',$companyId)->count(); //内容 $root_id = array_column($data,'root_id'); $train = TalkskillModel::where([['root_id','in',$root_id],['del','=',0],['approve', '=', 1],['content', '<>', ''],['from_type','=',0]])->group('root_id')->column('count(id)','root_id'); foreach($data as &$v) { $v['count'] = isset($train[$v['root_id']])?$train[$v['root_id']]:0; } return json(['code' => 0, 'data' => $data, 'count' => $count]); } /* * 指派 */ public function groupAssign() { $param = request()->param(); if (!Request::isAjax()) { View::assign('id',$param['id']); View::assign('from',$param['from']); View::assign('root_id',isset($param['root_id'])?$param['root_id']:''); return View::fetch(); } $id = input('id',0); $companyId = Company::where('root_id', request()->employee->root_id)->value('id'); $where = [['company_group','=',$companyId]]; if ($param['from'] == 'company') { //排除自己共享给自己的课程 $companyId = Company::where('root_id', request()->employee->root_id)->value('id'); $lastCompany = Company::where('company_group',$companyId)->column('root_id'); $label = TalkskillCates::where([['id','=',$id],['root_id','in',$lastCompany]])->find(); $where[] = ['root_id','<>',$label->root_id]; } $data = Company::where($where)->field('root_id,company_name')->page($param['page'],$param['limit'])->select(); $count = Company::where($where)->count(); return json(['code' => 0, 'data' => $data,'count'=>$count]); } /* * 集团指派 */ public function groupAssignAdd() { $param = request()->param(); //共享时查询关联数据 if($param['from'] == 'company')//共享 { $companyId = Company::where('root_id', request()->employee->root_id)->value('id'); $lastCompany = Company::where('company_group',$companyId)->column('root_id'); $where = [ ['id','=',$param['id']], ['root_id','in',$lastCompany] ]; }else{//指派 $where = [ ['id','=',$param['id']], ['root_id','=',request()->employee->root_id] ]; } $talkskillLabel = TalkskillCates::where($where)->find(); if(!$talkskillLabel) return json(['code' => 1, 'msg' => '数据不存在']); Db::startTrans(); try { $ids = explode(',',$param['ids']);//店面id //场景,二级分类,话术 foreach($ids as $v) { $from = $param['from'] == 'add' ? 1 : 2; $this->share_cate1($talkskillLabel,$v,$from); } Db::commit(); return json(['code' => 0, 'msg' => '操作成功']); } catch (\Exception $e) { Db::rollback(); return json(['code' => 1, 'msg' => '操作失败']); } } /* * 共享复制场景 * $data 场景信息 * $root_id 复制的id */ public function share_cate1($data,$root_id,$from) { //如果场景名称已存在则修改 //复制场景 $w[] = [ ['root_id','=',$root_id], ['name','=',$data->name], ['pid','=',0], ['type','=','cate'] ]; $info = TalkskillCates::where($w)->findOrEmpty(); $time = '@'.date('Y-m-d H:i:s').'@from'.$from; if ($info->isEmpty()) { $pid = TalkskillCates::insertGetId([ 'pid' => 0, 'name' => $data->name, 'type' => 'cate', 'root_id' => $root_id, 'from_root_id' => $data->root_id, 'from_content_id' => $data->id, 'from_type' => $from, 'text' => $data->root_id.'@'.$data->id.$time ]); }else{ $pid = $info->id; $arr = $data->root_id.'@'.$data->id.$time; $text = $info->text ? $info->text.','.$arr : $arr; $info->text = $text; $info->save(); } //共享二级分类 $cate2 = TalkskillCates::where('pid',$data->id)->column('id,name');//要复制的分类 $cate2s = TalkskillCates::where('pid',$pid)->column('name');//原有分类 $save = []; foreach ($cate2 as $k9 => $v9) { if (!$cate2s || !in_array($v9['name'],$cate2s)) { $save[] = [ 'pid' => $pid, 'name' => $v9['name'], 'type' => 'cate', 'root_id' => $root_id, 'from_root_id' => $data->root_id, 'from_content_id' => $v9['id'], 'from_type' => $from, 'text' => $data->root_id.'@'.$v9['id'].$time ]; }elseif ($cate2s && in_array($v9['name'],$cate2s)) {// $cate2_info = TalkskillCates::where([['pid','=',$pid],['name','=',$v9['name']]])->findOrEmpty(); if (!$cate2_info->isEmpty()) { $arr = $data->root_id.'@'.$v9['id'].$time; $text = $cate2_info->text ? $cate2_info->text.','.$arr : $arr; $cate2_info->text = $text; $cate2_info->save(); } } } if($save) TalkskillCates::insertAll($save); //复制话术 $n_talk = TalkskillModel::where([['root_id','=',$root_id],['from_content_id','>',0]])->column('from_content_id');//排除已经复制的话术 $talkskill = TalkskillModel::where([['cate1','=',$data->name],['root_id','=',$data->root_id],['id','not in',$n_talk]])->column('*'); $talk = []; foreach ($talkskill as $k3 => $v3) { $talk[] = [ 'title' => $v3['title'], 'content' => $v3['content'], 'root_id' => $root_id, 'type' => 'admin', 'employee_id' => request()->employee->id, 'imgs' => $v3['imgs'], 'videos' => $v3['videos'], 'approve' => 1, 'from_type' => $from, 'from_root_id' => $data->root_id, 'from_content_id' => $v3['id'], 'approve_from' => 0, 'user_cate' => $v3['user_cate'], 'house_type' => $v3['house_type'], 'cate1' => $v3['cate1'], 'cate2' => $v3['cate2'] ]; } if($talk) TalkskillModel::insertAll($talk); return true; } /* * 集团指派 */ // public function groupAssignAdd() // { // $param = request()->param(); // //共享时查询关联数据 // if($param['from'] == 'company') // { // $companyId = Company::where('root_id', request()->employee->root_id)->value('id'); // $lastCompany = Company::where('company_group',$companyId)->column('root_id'); // $where = [ // ['id','=',$param['id']], // ['root_id','in',$lastCompany] // ]; // }else{ // $where = [ // ['id','=',$param['id']], // ['root_id','=',request()->employee->root_id] // ]; // } // $talkskillLabel = TalkskillLabel::where($where)->find(); // if(!$talkskillLabel) return json(['code' => 1, 'msg' => '数据不存在']); // Db::startTrans(); // try { // $ids = explode(',',$param['ids']); // foreach($ids as $v) // { // $from = $param['from'] == 'add' ? 1 : 2; // //场景共享 // $newTypeId = TalkskillLabel::insertGetId([ // 'from_type'=>$from, // 'from_root_id'=>$talkskillLabel['root_id'], // 'from_content_id'=>$talkskillLabel['id'], // 'label_name'=>$talkskillLabel['label_name'] , // 'root_id'=>$v // ]); // $talkskill = TalkskillModel::where([ // ['label','=',$talkskillLabel['id']], // ['del', '=', 0], // ['content', '<>', ''], // ['approve', '=', 1], // ['from_type', '=', 0], // ])->column('*'); // $newTalkskill = []; // //话术数据 // foreach($talkskill as $val) // { // $data = [ // 'title' => $val['title'], // 'content' => $val['content'], // 'label' => $newTypeId, // 'root_id' => $v, // 'type' => 'admin', // 'approve' => $val['approve'], // 'from_type' => $from, // 'from_root_id' => $val['root_id'], // 'from_content_id' => $val['id'], // ]; // $newTalkskill[] = $data; // } // TalkskillModel::insertAll($newTalkskill); // } // Db::commit(); // return json(['code' => 0, 'msg' => '操作成功']); // } catch (\Exception $e) { // Db::rollback(); // return json(['code' => 1, 'msg' => '操作失败']); // } // } /* * 审核记录 */ public function history() { $root_id = request()->employee->root_id; $param = Request::only(['type'=>'share','org_id'=>0,'cate'=>'']); View::assign('type', $param['type']); $org = Org::where([['path', 'like', request()->employee->root_id . '-%']])->field('id,name,level')->order('path asc')->select()->toArray(); view::assign('org', $org); $w1[] = [['root_id','=',request()->employee->root_id],['uid','>',0]]; if ($param['type']=='share') { $eid = TalkskillModel::where([['del','=',0],['root_id','=',$root_id],['employee_id','>',0],['type','=','share'],['approve','>',0]])->group('employee_id')->column('employee_id'); $w1[] = ['id','in',$eid]; }else{ $tid = TalkskillModel::where([['del','=',0],['root_id','=',$root_id],['employee_id','>',0],['type','=','share'],['approve','>',0]])->column('id'); $uid = TalkskillComment::where([['root_id','=',$root_id],['uid','>',0],['approve','>',0],['taid','in',$tid]])->group('uid')->column('uid'); $w1[] = ['uid','in',$uid]; } if ($param['cate']) { if ($param['org_id']) { $w1[] = ['org_id','=',$param['org_id']]; } $employee = Employee::where($w1)->field('id,name')->select()->toArray(); return json(['code' => 0,'data'=>$employee]); }else{ $employee = Employee::where($w1)->field('id,name')->select()->toArray(); } view::assign('employee', $employee); $data['count'] = $data['pass_count'] = $data['no_count'] = 0; if ($param['type']=='share') { $w[] = ['root_id','=',$root_id]; $w[] = ['approve','>',0]; $w[] = ['type','=','share']; $w[] = ['employee_id','>',0]; $w[] = ['del','=',0]; $data['count'] = TalkskillModel::where($w)->count(); $data['pass_count'] = TalkskillModel::where($w)->where('approve',1)->count(); $data['no_count'] = TalkskillModel::where($w)->where('approve',2)->count(); }else{ $w[] = ['root_id','=',$root_id]; $w[] = ['approve','>',0]; $w[] = ['uid','>',0]; $data['count'] = TalkskillComment::where($w)->count(); $data['pass_count'] = TalkskillComment::where($w)->where('approve',1)->count(); $data['no_count'] = TalkskillComment::where($w)->where('approve',2)->count(); } view::assign('data', $data); return View::fetch(); } /* * 审核记录数据接口 */ public function history_list() { $param = Request::only(['type'=>'share','page'=>1,'limit'=>10,'org'=>0,'cate'=>0,'employee_id'=>0,'time'=>'']); $root_id = request()->employee->root_id; if($param['cate']) $w[] = ['approve','=',$param['cate']]; if($param['time']){ $time = explode(' - ',$param['time']); $w[] = ['addtime','between',[$time[0].' 00:00:00',$time[1].' 23:59:59']]; } $w[] = ['root_id','=',$root_id]; $w[] = ['approve','>',0]; //话术审核 if ($param['type']=='share') { if($param['employee_id']) $w[] = ['employee_id','=',$param['employee_id']]; $w[] = ['type','=','share']; $w[] = ['employee_id','>',0]; $w[] = ['del','=',0]; if ($param['org']) { $eids = Employee::where([['org_id','=',$param['org']]])->column('id'); $w[] = ['employee_id','in',$eids]; } $res = TalkskillModel::with(['employee','approveEmployee'])->order('id desc')->where($w)->page($param['page'],$param['limit'])->select(); foreach ($res as $k => $v) { $v->status = $v->approve==1 ? '通过' : '驳回'; $v->org_name = isset($v->employee->org->name) ?$v->employee->org->name : ''; $v->approve_name = (strtotime($v->aprove_time)<=1656665072 || $v->approve_from==0) ? $v->opt_name : $v->approve_name; $v->approve_from = (strtotime($v->aprove_time)<=1656665072 || $v->approve_from==0) ? 0 : 1; } $count = TalkskillModel::where($w)->count(); }else{//回答审核 if($param['employee_id']){ $wx[] = ['id','=',$param['employee_id']]; $wx[] = ['root_id','=',$root_id]; $uid = Employee::where($wx)->value('uid'); $w[] = ['uid','=',$uid]; } if ($param['org']) { $eids = Employee::where([['org_id','=',$param['org']]])->column('uid'); $w[] = ['uid','in',$eids]; } $w[] = ['uid','>',0]; $res = TalkskillComment::with(['talkskills'=>function($query) use ($root_id){ $query->where([['root_id','=',$root_id]])->bind(['title']); },'approveEmployee','employee'=>function($query) use ($root_id){ $query->where([['root_id','=',$root_id], ['state', 'in', ['在职']]]); }])->where($w)->order('id desc')->page($param['page'],$param['limit'])->field('*,comments content')->visible([ ])->select(); $count = TalkskillComment::where($w)->count(); foreach ($res as $k => $v) { $v->name = isset($v->employee->name) ?$v->employee->name : ''; $v->status = $v->approve==1 ? '通过' : '驳回'; $v->org_name = isset($v->employee->org->name) ?$v->employee->org->name : ''; $v->approve_name = (strtotime($v->aprove_time)<=1656665072 || $v->approve_from==0) ? $v->opt_name : $v->approve_name; $v->approve_from = (strtotime($v->aprove_time)<=1656665072 || $v->approve_from==0) ? 0 : 1; } } return json(['code' => 0, 'data'=>$res,'count'=>$count,'msg' => '操作成功']); } /* * 使用人群 */ public function person() { return View::fetch(); } /* * 使用人群列表 */ public function person_list() { $root_id = request()->employee->root_id; $param = Request::only(['page' => 1, 'limit' => 10]); $w[] = ['root_id', '=', $root_id]; $list = TalkskillUsersCate::where($w)->page($param['page'], $param['limit'])->order('id asc')->select(); $count = TalkskillUsersCate::where($w)->count(); return json(['code' => 0, 'data' => $list, 'count' => $count]); } /* * 使用人群添加 */ public function person_add() { $root_id = request()->employee->root_id; $param = Request::only(['name' => '']); $param['name'] = str_replace(' ','',$param['name']); $w[] = ['root_id', '=', $root_id]; $w[] = ['name', '=', $param['name']]; $find = TalkskillUsersCate::where($w)->findOrEmpty(); if (!$find->isEmpty()) return json(['code' => 1, 'data' => '使用人群已存在', 'msg' => '使用人群已存在']); $id = TalkskillUsersCate::insertGetId(['root_id' => $root_id, 'name' => $param['name']]); return json(['code' => 0, 'data' => '添加成功', 'msg' => '添加成功','id'=>$id]); } /* * 使用人群编辑 */ public function person_edit() { $root_id = request()->employee->root_id; $param = Request::only(['id' => 0, 'name' => '']); $w[] = ['root_id', '=', $root_id]; $w[] = ['id', '<>', $param['id']]; $w[] = ['name', '=', $param['name']]; $find = TalkskillUsersCate::where($w)->findOrEmpty(); if (!$find->isEmpty()) return json(['code' => 1, 'data' => '使用人群已存在', 'msg' => '使用人群已存在']); $name = TalkskillUsersCate::where('id', $param['id'])->value('name'); TalkskillUsersCate::where('id', $param['id'])->update(['name' => $param['name']]); $w1[] = ['user_cate', '=', $name]; $w1[] = ['root_id', '=', $root_id]; TalkskillModel::where($w1)->update(['user_cate' => $param['name']]); TalkskillComment::where($w1)->update(['user_cate' => $param['name']]); return json(['code' => 0, 'data' => '修改成功', 'msg' => '修改成功']); } /* * 字典管理 */ public function dictionary(){ return View::fetch(); } /* * type 1场景 ,2房屋类型,3适用人群,4二级分类,新增页下拉 */ public function dictionary_list(){ $root_id = request()->employee->root_id; $param = Request::only(['type' => 1, 'page'=>1, 'limit'=>10, 'pid'=>0, 'scene_type'=> '']); if ($param['type']==1) { //场景列表 $w[] = ['pid','=',0]; $w[] = ['type','=','cate']; $w[] = ['root_id','=',$root_id]; if ($param['scene_type']){ $w[] = ['scene_type', '=', $param['scene_type']]; } $list = TalkskillCates::where($w)->field('name value,name,id')->order('id asc')->page($param['page'],$param['limit'])->select(); $count = TalkskillCates::where($w)->count(); } elseif ($param['type']==2) { //房屋类型列表 $w[] = ['pid','=',0]; $w[] = ['type','=','house_type']; $w[] = ['root_id','=',$root_id]; $list = TalkskillCates::where($w)->field('name value,name,id')->order('id asc')->page($param['page'],$param['limit'])->select(); $count = TalkskillCates::where($w)->count(); } elseif ($param['type']==3) { //适用人群列表 $w[] = ['root_id','=',$root_id]; $list = TalkskillUsersCate::where($w)->field('name value,name,id')->page($param['page'],$param['limit'])->select(); $count = TalkskillUsersCate::where($w)->count(); } elseif ($param['type']==4 && $param['pid']) { //二级分类 $w[] = ['pid','=',$param['pid']]; $w[] = ['type','=','cate']; $w[] = ['root_id','=',$root_id]; $list = TalkskillCates::where($w)->field('name value,name,id')->order('id asc')->page($param['page'],$param['limit'])->select(); $count = TalkskillCates::where($w)->count(); } else{ $list = []; $count = 0; } return json(['code' => 0, 'data' => $list, 'count' => $count]); } /* * 字典管理-场景列表 */ public function dictionary_ajax_cate(){ $root_id = request()->employee->root_id; $param = Request::only(['page'=>1,'limit'=>10]); //一级分类和二级分类 $w[] = ['type','=','cate']; $w[] = ['root_id','=',$root_id]; $w[] = ['pid','=',0]; $list = TalkskillCates::where($w)->field('name,id,show,scene_type')->page($param['page'],$param['limit'])->order('id asc')->select()->toArray(); $count = TalkskillCates::where($w)->count(); $w1[] = ['pid','in',array_column($list,'id')]; $child = TalkskillCates::where($w1)->group('pid')->column('count(id) count','pid'); foreach ($list as $k => $v) { $list[$k]['count'] = isset($child[$v['id']]) ? $child[$v['id']] : 0; } return json(['code' => 0, 'data' => $list, 'count' => $count]); } /* * 字典管理-房屋类型 */ public function dictionary_ajax_house_type(){ $root_id = request()->employee->root_id; $param = Request::only(['page'=>1,'limit'=>10]); //房屋类型 $w[] = ['type','=','house_type']; $w[] = ['root_id','=',$root_id]; $w[] = ['pid','=',0]; $list = TalkskillCates::where($w)->field('name,id,show')->page($param['page'],$param['limit'])->order('id asc')->select()->toArray(); $count = TalkskillCates::where($w)->count(); return json(['code' => 0, 'data' => $list, 'count' => $count]); } /* * 字典管理-适用人群 */ public function dictionary_ajax_user_cate(){ $root_id = request()->employee->root_id; $param = Request::only(['page'=>1,'limit'=>10]); //房屋类型 $w[] = ['root_id','=',$root_id]; $list = TalkskillUsersCate::where($w)->field('name,id,show')->page($param['page'],$param['limit'])->order('id asc')->select()->toArray(); $count = TalkskillUsersCate::where($w)->count(); return json(['code' => 0, 'data' => $list, 'count' => $count]); } /* * 字典管理-新增数据 */ public function dictionary_ajax_add(){ $root_id = request()->employee->root_id; $param = Request::only(['type'=>0, 'name'=>'', 'is_chosen'=> '']); if ($param['type']==0 && $param['name']) { //新增场景 $w = [ ['type','=','cate'], ['pid','=',0], ['root_id','=',$root_id], ['name','=',$param['name']] ]; $info = TalkskillCates::where($w)->findOrEmpty(); if(!$info->isEmpty()) return json(['code' => 1, 'data' => '场景已存在','msg'=>'场景已存在']); $save = [ 'pid' => 0, 'name' => $param['name'], 'type' => 'cate', 'root_id' => $root_id ]; if ($param['is_chosen']) { $save['scene_type'] = 'chosen'; } TalkskillCates::insertGetId($save); }elseif($param['type']==1 && $param['name']){ //房屋类型 $w = [ ['type','=','house_type'], ['pid','=',0], ['root_id','=',$root_id], ['name','=',$param['name']] ]; $info = TalkskillCates::where($w)->findOrEmpty(); if(!$info->isEmpty()) return json(['code' => 1, 'data' => '房屋类型已存在','msg'=>'房屋类型已存在']); $save = [ 'pid' => 0, 'name' => $param['name'], 'type' => 'house_type', 'root_id' => $root_id ]; TalkskillCates::insertGetId($save); } elseif ($param['type']==2 && $param['name']) { //适用部门 $w = [ ['root_id','=',$root_id], ['name','=',$param['name']] ]; $info = TalkskillUsersCate::where($w)->findOrEmpty(); if(!$info->isEmpty()) return json(['code' => 1, 'data' => '适用部门已存在','msg'=>'适用部门已存在']); $save = [ 'name' => $param['name'], 'root_id' => $root_id ]; TalkskillUsersCate::insertGetId($save); }else{ return json(['code' => 1, 'data' => '保存失败','msg'=>'保存失败']); } return json(['code' => 0, 'data' => '保存成功','msg'=>'保存成功']); } /* * 字典管理-编辑数据 */ public function dictionary_ajax_edit(){ $root_id = request()->employee->root_id; $param = Request::only(['type'=>0, 'name'=>'', 'id'=>0, 'is_chosen']); if ($param['type']==0 && $param['name']) { $where = [ ['root_id','=',$root_id], ['id','=',$param['id']] ]; $info = $find = TalkskillCates::where($where)->findOrEmpty(); if($info->isEmpty()) return json(['code' => 1, 'data' => '数据错误', 'msg' => '数据错误']); //新增场景 $w = [ ['type','=','cate'], ['pid','=',0], ['root_id','=',$root_id], ['name','=',$param['name']], ['id','<>',$param['id']] ]; $info = TalkskillCates::where($w)->findOrEmpty(); if(!$info->isEmpty()) return json(['code' => 1, 'data' => '场景已存在', 'msg' => '场景已存在']); $save['name'] = $param['name']; if (isset($param['is_chosen'])) { $save['scene_type'] = ''; if ($param['is_chosen']) { $save['scene_type'] = 'chosen'; } } TalkskillCates::where('id',$param['id'])->update($save); //修改 $wt = [ ['root_id','=',$root_id], ['cate1','=',$find->name], ]; TalkskillModel::where($wt)->update(['cate1'=>$param['name']]); }elseif($param['type']==1 && $param['name']){ $where = [ ['root_id','=',$root_id], ['id','=',$param['id']] ]; $info = $find = TalkskillCates::where($where)->findOrEmpty(); if($info->isEmpty()) return json(['code' => 1, 'data' => '数据错误', 'msg' => '数据错误']); // $w = [ ['type','=','house_type'], ['pid','=',0], ['root_id','=',$root_id], ['name','=',$param['name']], ['id','<>',$param['id']] ]; $info = TalkskillCates::where($w)->findOrEmpty(); if(!$info->isEmpty()) return json(['code' => 1, 'data' => '房屋类型已存在', 'msg' => '房屋类型已存在']); TalkskillCates::where('id',$param['id'])->update(['name'=>$param['name']]); //修改话术中的房屋类型 $talk = TalkskillModel::where([['root_id','=',$root_id],['house_type','like','%'.$find->name.'%']])->column('id,house_type'); foreach ($talk as $v) { $arr = explode(',',$v['house_type']); if (in_array($find->name,$arr)) { $arr = array_diff($arr,[$find->name]); $arr[] = $param['name']; TalkskillModel::where('id',$v['id'])->update(['house_type'=>implode(',',$arr)]); } } } elseif ($param['type']==2 && $param['name']) { $where = [ ['root_id','=',$root_id], ['id','=',$param['id']] ]; $info = $find = TalkskillUsersCate::where($where)->findOrEmpty(); if($info->isEmpty()) return json(['code' => 1, 'data' => '数据错误', 'msg' => '数据错误']); //适用部门 $w = [ ['root_id','=',$root_id], ['name','=',$param['name']], ['id','<>',$param['id']] ]; $info = TalkskillUsersCate::where($w)->findOrEmpty(); if(!$info->isEmpty()) return json(['code' => 1, 'data' => '适用部门已存在', 'msg' => '适用部门已存在']); TalkskillUsersCate::where('id',$param['id'])->update(['name'=>$param['name']]); //修改话术中的适用部门 $talk = TalkskillModel::where([['root_id','=',$root_id],['user_cate','like','%'.$find->name.'%']])->column('id,user_cate'); foreach ($talk as $v) { $arr = explode(',',$v['user_cate']); if (in_array($find->name,$arr)) { $arr = array_diff($arr,[$find->name]); $arr[] = $param['name']; TalkskillModel::where('id',$v['id'])->update(['user_cate'=>implode(',',$arr)]); } } }else{ return json(['code' => 1, 'data' => '编辑失败','msg'=>'编辑失败']); } return json(['code' => 0, 'data' => '保存成功', 'msg' => '保存成功']); } /* * 新增话术新页面 */ public function new_add_talkskill(){ $id = input('id',0); View::assign('id',$id); $name = input('name',''); View::assign('name',$name); return View::fetch(); } /* * 新增话术新页面下拉 */ public function new_add_talkskill_select(){ $root_id = request()->employee->root_id; $param = Request::only(['id'=>0]); //二级分类 $w[] = ['type','=','cate']; $w[] = ['root_id','=',$root_id]; $w[] = ['pid','=',$param['id']]; $cate = TalkskillCates::where($w)->field('name,name value,id')->order('id asc')->select()->toArray(); $data['cate2'] = $cate; //房屋类型 $w1[] = ['type','=','house_type']; $w1[] = ['root_id','=',$root_id]; $w1[] = ['pid','=',0]; $house_type = TalkskillCates::where($w1)->field('name,name value,id')->order('id asc')->select()->toArray(); $data['house_type'] = $house_type; //适用人群 $w3[] = ['root_id','=',$root_id]; $user_cate = TalkskillUsersCate::where($w3)->field('name,name value,id')->order('id asc')->select()->toArray(); $data['user_cate'] = $user_cate; return json(['code' => 0, 'data' => $data]); } /* * 二级分类列表新页面 */ public function cate2_view(){ $id = input('id',0); View::assign('id',$id); return View::fetch(); } /* * 获取二级分类列表 */ public function get_cate2_list(){ $param = Request::only(['page'=>1,'limit'=>10,'id'=>0]); $root_id = request()->employee->root_id; $w = [ ['pid','=',$param['id']], ['root_id','=',$root_id] ]; $list = TalkskillCates::where($w)->page($param['page'],$param['limit'])->order('id asc')->select()->toArray(); $count = TalkskillCates::where($w)->count(); return json(['code' => 0, 'data' => $list,'count'=>$count]); } /* * 二级分类编辑 */ public function cate2_edit(){ $param = Request::only(['name'=>'','id'=>0,'pid'=>0]); $root_id = request()->employee->root_id; $w = [ ['root_id','=',$root_id], ['type','=','cate'], ['pid','>',0] ]; if ($param['id']) { $w[] = ['id','=',$param['id']]; $info = TalkskillCates::where($w)->findOrEmpty(); if($info->isEmpty()) return json(['code' => 1, 'data' => '数据不存在', 'msg' => '数据不存在']); } $w1[] = ['name','=',$param['name']]; $w1[] = ['root_id','=',$root_id]; $w1[] = ['type','=','cate']; $w1[] = ['pid','=',$param['pid']]; if ($param['id']) { $w1[] = ['id','<>',$param['id']]; } $info = TalkskillCates::where($w1)->findOrEmpty(); if(!$info->isEmpty()) return json(['code' => 1, 'data' => '分类已存在', 'msg' => '分类已存在']); if ($param['id']) { $cate1 = TalkskillCates::where('id',$param['pid'])->value('name'); $cate2 = TalkskillCates::where('id',$param['id'])->value('name'); TalkskillCates::where('id',$param['id'])->update(['name'=>$param['name']]); //修改话术二级分类 $talk = TalkskillModel::where([['root_id','=',$root_id],['cate1','=',$cate1],['cate2','like','%'.$cate2.'%']])->column('id,cate2'); foreach ($talk as $v) { $arr = explode(',',$v['cate2']); if (in_array($cate2,$arr)) { $arr = array_diff($arr,[$cate2]); $arr[] = $param['name']; TalkskillModel::where('id',$v['id'])->update(['cate2'=>implode(',',$arr)]); } } return json(['code' => 0, 'data' => '修改成功', 'msg' => '修改成功']); }else{ TalkskillCates::insertGetId([ 'pid' => $param['pid'], 'name' => $param['name'], 'type' => 'cate', 'root_id' => $root_id ]); return json(['code' => 0, 'data' => '保存成功', 'msg' => '保存成功']); } } /* * 场景删除 */ public function cate_del() { $param = Request::param(); if($param['type'] == 2) { $data = TalkskillUsersCate::where(['root_id'=>request()->employee->root_id,'id'=>$param['id']])->find(); }else{ $data = TalkskillCates::where(['root_id'=>request()->employee->root_id,'id'=>$param['id']])->find(); } if(empty($data)) return json(['code' => 1, 'msg' => '数据不存在']); Db::startTrans(); try { if($param['type'] == 0) { //场景是否存在其它分类 $type_id = TalkskillCates::where(['root_id'=>request()->employee->root_id,'pid'=>0,'show'=>1,'type'=>'cate'])->value('id'); if(empty($type_id)) $type_id = TalkskillCates::insertGetId(['pid'=>0,'name'=>'其它','root_id'=>request()->employee->root_id,'show'=>1,'type'=>'cate']); //更新关联内容 TalkskillModel::where(['root_id'=>request()->employee->root_id,'cate1'=>$data['name']])->update(['cate1'=>'其它']); TalkskillChosen::where(['root_id'=> request()->employee->root_id, 'cate1'=> $data['id']])->update(['cate1'=> $type_id]); TalkskillSuccess::where(['root_id'=> request()->employee->root_id, 'cate1'=> $data['id']])->update(['cate1'=> $type_id]); TalkskillCates::where(['root_id'=>request()->employee->root_id,'pid'=>$data['id'],'type'=>'cate'])->update(['pid'=>$type_id]); //去重 $groupId = TalkskillCates::where(['root_id'=>request()->employee->root_id,'pid'=>$type_id,'show'=>1,'type'=>'cate'])->min('id'); TalkskillCates::where([['type','=','cate'],['root_id','=',request()->employee->root_id],['pid','=',$type_id],['show','=',1],['id','<>',$groupId]])->delete(); //删除分类 if($data['scene_type']=='chosen'){ TalkskillCates::where(['root_id'=>request()->employee->root_id,'id'=>$type_id,'type'=>'cate'])->update(['scene_type'=>'chosen']); } $data->delete(); }elseif($param['type'] == 1){ //房屋类型是否存在其它分类 $type_id = TalkskillCates::where(['root_id'=>request()->employee->root_id,'pid'=>0,'show'=>1,'type'=>'house_type'])->value('id'); if(empty($type_id)) $type_id = TalkskillCates::insertGetId(['pid'=>0,'name'=>'其它','root_id'=>request()->employee->root_id,'show'=>1,'type'=>'house_type']); $for = TalkskillModel::where(['root_id'=>request()->employee->root_id])->whereRaw("FIND_IN_SET('" . $data['name'] . "' , house_type)")->field('id,house_type')->select(); foreach($for as $item) { $string = str_replace($data['name'],"其它",$item['house_type']); TalkskillModel::where(['root_id'=>request()->employee->root_id,'id'=>$item['id']])->update(['house_type'=>$string]); } $chosen_for = TalkskillChosen::where(['root_id'=>request()->employee->root_id])->whereRaw("FIND_IN_SET('" . $data['id'] . "' , house_type)")->field('id,house_type')->select(); foreach($chosen_for as $item) { $c_old_house_type = explode(',', $item['house_type']); foreach ($c_old_house_type as $k => $v){ if($v == $data['id']){ $c_old_house_type[$k] = $type_id; } } $string = implode(',', $c_old_house_type); TalkskillChosen::where(['root_id'=>request()->employee->root_id, 'id'=> $item['id']])->save(['house_type'=> $string]); } $success_for = TalkskillSuccess::where(['root_id'=>request()->employee->root_id])->whereRaw("FIND_IN_SET('" . $data['id'] . "' , house_type)")->field('id,house_type')->select(); foreach($success_for as $item) { $s_old_house_type = explode(',', $item['house_type']); foreach ($s_old_house_type as $k => $v){ if($v == $data['id']){ $s_old_house_type[$k] = $type_id; } } $string = implode(',', $s_old_house_type); TalkskillSuccess::where(['root_id'=>request()->employee->root_id, 'id'=> $item['id']])->save(['house_type'=> $string]); } if($data['scene_type']=='chosen'){ TalkskillCates::where(['root_id'=>request()->employee->root_id,'id'=>$type_id,'type'=>'house_type'])->update(['scene_type'=>'chosen']); } $data->delete(); }elseif($param['type'] == 2){ //适用部门是否存在其它分类 $type_id = TalkskillUsersCate::where(['root_id'=>request()->employee->root_id,'show'=>1])->value('id'); if(empty($type_id)) $type_id = TalkskillUsersCate::insertGetId(['name'=>'其它','root_id'=>request()->employee->root_id,'show'=>1]); $for = TalkskillModel::where(['root_id'=>request()->employee->root_id])->whereRaw("FIND_IN_SET('" . $data['name'] . "' , user_cate)")->field('id,user_cate')->select(); foreach($for as $item) { $string = str_replace($data['name'],"其它",$item['user_cate']); TalkskillModel::where(['root_id'=>request()->employee->root_id,'id'=>$item['id']])->update(['user_cate'=>$string]); } $chosen_for = TalkskillChosen::where(['root_id'=>request()->employee->root_id])->whereRaw("FIND_IN_SET('" . $data['id'] . "' , user_cate)")->field('id,user_cate')->select(); foreach($chosen_for as $item) { $c_old_user_cate = explode(',', $item['user_cate']); foreach ($c_old_user_cate as $k => $v){ if($v == $data['id']){ $c_old_user_cate[$k] = $type_id; } } $string = implode(',', $c_old_user_cate); TalkskillChosen::where(['root_id'=>request()->employee->root_id, 'id'=> $item['id']])->save(['user_cate'=> $string]); } $success_for = TalkskillSuccess::where(['root_id'=>request()->employee->root_id])->whereRaw("FIND_IN_SET('" . $data['id'] . "' , user_cate)")->field('id,user_cate')->select(); foreach($success_for as $item) { $s_old_user_cate = explode(',', $item['user_cate']); foreach ($s_old_user_cate as $k => $v){ if($v == $data['id']){ $s_old_user_cate[$k] = $type_id; } } $string = implode(',', $s_old_user_cate); TalkskillSuccess::where(['root_id'=>request()->employee->root_id, 'id'=> $item['id']])->save(['user_cate'=> $string]); } $data->delete(); }elseif($param['type'] == 3){ $label_id = TalkskillCates::where(['root_id'=>request()->employee->root_id,'pid'=>$data['pid'],'show'=>1,'type'=>'cate'])->value('id'); if(empty($label_id)) $label_id = TalkskillCates::insertGetId(['pid'=>$data['pid'],'name'=>'其它','root_id'=>request()->employee->root_id,'show'=>1,'type'=>'cate']); $for = TalkskillModel::where(['root_id'=>request()->employee->root_id])->whereRaw("FIND_IN_SET('" . $data['name'] . "' , cate2)")->field('id,cate2')->select(); foreach($for as $item) { $string = str_replace($data['name'],"其它",$item['cate2']); TalkskillModel::where(['root_id'=>request()->employee->root_id,'id'=>$item['id']])->update(['cate2'=>$string]); } $chosen_for = TalkskillChosen::where(['root_id'=>request()->employee->root_id])->whereRaw("FIND_IN_SET('" . $data['id'] . "' , cate2)")->field('id,cate2')->select(); foreach($chosen_for as $item) { $c_old_cate2 = explode(',', $item['cate2']); foreach ($c_old_cate2 as $k => $v){ if($v == $data['id']){ $c_old_cate2[$k] = $label_id; } } $string = implode(',', $c_old_cate2); TalkskillChosen::where(['root_id'=>request()->employee->root_id, 'id'=> $item['id']])->save(['cate2'=> $string]); } $success_for = TalkskillSuccess::where(['root_id'=>request()->employee->root_id])->whereRaw("FIND_IN_SET('" . $data['id'] . "' , cate2)")->field('id,cate2')->select(); foreach($success_for as $item) { $s_old_cate2 = explode(',', $item['cate2']); foreach ($s_old_cate2 as $k => $v){ if($v == $data['id']){ $s_old_cate2[$k] = $label_id; } } $string = implode(',', $s_old_cate2); TalkskillSuccess::where(['root_id'=>request()->employee->root_id, 'id'=> $item['id']])->save(['cate2'=> $string]); } //删除分类 $data->delete(); } Db::commit(); return json(['code' => 0, 'msg' => '删除成功']); } catch (\Exception $e) { Db::rollback(); return json(['code' => 1, 'msg' => '删除失败']); } } /* * 精选话术分类场景页面 */ public function chosen_cate() { $where[] = ['root_id', '=', request()->employee->root_id]; $where[] = ['pid', '=', 0]; $where[] = ['type', '=', 'cate']; $where[] = ['scene_type', '=', 'chosen']; $type = TalkskillCates::where($where)->order('id asc')->select(); View::assign('type', $type); return View::fetch(); } /* * 精选话术分类场景列表 */ public function chosen_cate_list() { $param = Request::only(['page' => 1, 'limit' => 10, 'keyword', 'type'=> '']); $root_id = request()->employee->root_id; //一级场景 $where[] = ['root_id', '=', $root_id]; $where[] = ['pid', '=', 0]; $where[] = ['type', '=', 'cate']; $where[] = ['scene_type', '=', 'chosen']; if (!empty($param['type'])) { $where[] = ['id', '=', $param['type']]; } $data = TalkskillCates::where($where)->page($param['page'] , $param['limit'])->order('id asc')->select()->toArray(); $count = TalkskillCates::where($where)->count(); if ($data) { $condition = [ ['cate1', 'in', array_column($data, 'id')], ['root_id', '=', $root_id], ['del', '=', 0] ]; if (isset($param['keyword']) && $param['keyword']) { $chosen_id = TalkskillChosen::where(array_merge($condition, [['title', 'like', '%' . trim($param['keyword']) . '%']]))->column('id'); //同时检索回答内容 $content_talkskill_id = TalkskillContent::where([ ['root_id', '=', $root_id], ['talkskill_type', '=', 'chosen'], ['content', 'like', '%' . trim($param['keyword']) . '%'] ])->group('talkskill_id')->column('talkskill_id'); $new_arr = array_merge($chosen_id, $content_talkskill_id); $condition[] = ['id', 'in', $new_arr]; } $talkskill_count = TalkskillChosen::where($condition)->group('cate1')->column('count(id)','cate1'); $talkskill_view = TalkskillChosen::where($condition)->group('cate1')->column('sum(view_times)','cate1'); $talkskill_addtime = TalkskillChosen::where($condition)->group('cate1')->column('max(addtime)','cate1'); foreach ($data as &$v) { //话术数量 $v['talkskill_count'] = isset($talkskill_count[$v['id']]) ? $talkskill_count[$v['id']] : 0; //最近话术上传时间 $v['update_time'] = isset($talkskill_addtime[$v['id']]) ? $talkskill_addtime[$v['id']] : ''; //浏览人次 $v['view_times'] = isset($talkskill_view[$v['id']]) ? $talkskill_view[$v['id']] : 0; //搜索值返回 $v['keyword'] = isset($param['keyword']) ? $param['keyword'] : ''; } } return json(['code' => 0, 'msg' => '获取成功', 'data' => $data, 'count' => $count ]); } /** * 精选话术 * @return string */ public function chosen_index(){ if (!request()->isAjax()){ $type = request()->param('type'); View::assign('type', $type); $root_id = request()->employee->root_id; //二级分类 $where[] = ['type', '=', 'cate']; $where[] = ['root_id', '=', $root_id]; $where[] = ['pid', '=', $type]; $cate = TalkskillCates::where($where)->field('name,id')->order('id asc')->select()->toarray(); view::assign('cate', $cate); //房屋类型 $where_h[] = ['type', '=', 'house_type']; $where_h[] = ['root_id', '=', $root_id]; $where_h[] = ['pid', '=', 0]; $house_type = TalkskillCates::where($where_h)->field('name,id')->order('id asc')->select()->toarray(); view::assign('house_type', $house_type); //适用人群 $where_u[] = ['root_id', '=', $root_id]; $user_cate = TalkskillUsersCate::where($where_u)->field('name,id')->order('id asc')->select()->toarray(); view::assign('user_cate', $user_cate); //通过场景列表筛选关键进入的带入关键词 $keyword = request()->param('keyword'); view::assign('keyword', isset($keyword)?$keyword:''); $empIds = TalkskillChosen::where([['root_id', '=', $root_id],['cate1', '=', $type],['del', '=', 0]])->column('employee_id'); $employee = Employee::where([['id', 'in', $empIds]])->select(); View::assign('employee', $employee); return View::fetch(); } else { $param = Request::param(); $where = [ ['root_id', '=', request()->employee->root_id], ['del', '=', 0], ['cate1', '=', $param['type']] ]; if (!empty($param['keyword'])) { $chosen_id = TalkskillChosen::where(array_merge($where, [['title', 'like', '%' . trim($param['keyword']) . '%']]))->column('id'); //同时检索回答内容 $content_talkskill_id = TalkskillContent::where([ ['root_id', '=', request()->employee->root_id], ['talkskill_type', '=', 'chosen'], ['content', 'like', '%' . trim($param['keyword']) . '%'] ])->group('talkskill_id')->column('talkskill_id'); $new_arr = array_merge($chosen_id, $content_talkskill_id); $where[] = ['id', 'in', $new_arr]; } $sql = TalkskillChosen::with(['employee'=>function($query){ $query->field(['id','opt_name']); }])->where($where); if (!empty($param['cate'])) { $sql->whereRaw("FIND_IN_SET('" . $param['cate'] . "' , cate2)"); } if (!empty($param['house_type'])) { $sql->whereRaw("FIND_IN_SET('" . $param['house_type'] . "' , house_type)"); } if (!empty($param['user_cate'])) { $sql->whereRaw("FIND_IN_SET('" . $param['user_cate'] . "' , user_cate)"); } if (!empty($param['addtime'])) { list($start_date, $end_date) = explode(' - ', $param['addtime']); $sql->whereRaw("addtime >= '".$start_date."'"); $sql->whereRaw("addtime < '". date('Y-m-d H:i:s', strtotime($end_date) + 86400) ."'"); } if (!empty($param['employee_id'])) { $sql->whereRaw("employee_id=".$param['employee_id']); } // 获取数据 $list = $sql->page($param['page'], $param['limit'])->order('addtime desc')->select()->each(function ($item){ $item->cate1_name = TalkskillCates::where('id', '=', $item['cate1'])->value('name'); $cate2_name = TalkskillCates::where('id', 'in', $item['cate2'])->column('name'); $item->cate2_name = implode(',', $cate2_name); $house_type_name = TalkskillCates::where('id', 'in', $item['house_type'])->column('name'); $item->house_type_name = implode(',', $house_type_name); $user_cate_name = TalkskillUsersCate::where('id', 'in', $item['user_cate'])->column('name'); $item->user_cate_name = implode(',', $user_cate_name); $content_img = TalkskillContent::where([['talkskill_id','=',$item->id], ['talkskill_type','=','chosen'], ['root_id','=',request()->employee->root_id], ['img','<>','']])->count(); $item->img = $content_img>0 ? true : false; })->toArray(); $count = $sql->count(); return json(['code' => 0, 'data' => $list, 'count' => $count, 'msg' => '获取成功']); } } /* * 精选话术新增新页面 */ public function chosen_add_new(){ $id = input('id',0); View::assign('id',$id); return View::fetch(); } /* * 精选话术添加 */ public function chosen_add() { if (!request()->isAjax()){ $root_id = request()->employee->root_id; //场景 $where[] = ['type', '=', 'cate']; $where[] = ['root_id', '=', $root_id]; $where[] = ['pid', '=', 0]; $where[] = ['scene_type', '=', 'chosen']; $cate = TalkskillCates::where($where)->field('name,id')->order('id asc')->select()->toarray(); view::assign('cate', $cate); //房屋类型 $where_h[] = ['type', '=', 'house_type']; $where_h[] = ['root_id', '=', $root_id]; $where_h[] = ['pid', '=', 0]; $house_type = TalkskillCates::where($where_h)->field('name,id')->order('id asc')->select()->toarray(); view::assign('house_type', $house_type); //适用人群 $where_u[] = ['root_id', '=', $root_id]; $user_cate = TalkskillUsersCate::where($where_u)->field('name,id')->order('id asc')->select()->toarray(); view::assign('user_cate', $user_cate); return View::fetch(); } else { $param = Request::only(['id', 'title', 'user_cate', 'content', 'house_type'=> '', 'cate1'=> '', 'cate2'=> '']); $data = [ 'title' => $param['title'], 'root_id' => request()->employee->root_id, 'user_cate' => $param['user_cate'], 'house_type' => $param['house_type'], 'cate1' => $param['cate1'], 'cate2' => $param['cate2'], 'employee_id'=> request()->employee->id ]; $result = TalkskillChosen::create($data); dataStatistics(request()->employee->root_id,'talkskill_count',1,'inc');//manage应用首页统计数据 $id = $result->id; if (!empty($param['content'])){ foreach ($param['content'] as $k => $v){ $content = [ 'talkskill_id'=> $id, 'content' => $v['content'], 'type'=> $v['type'], 'talkskill_type'=> 'chosen', 'root_id'=> request()->employee->root_id, 'img'=> '' ]; $img = Request::param('images_'.$k); if(isset($img) && !empty($img)){ $content['img'] = implode(',',$img); } TalkskillContent::create($content); } } return json(['code' => 0, 'msg' => '操作成功']); } } /* * 精选话术编辑 */ public function chosen_edit() { if (!request()->isAjax()){ $id = input('id', '', 'intval'); $where = [ 'id' => $id, 'root_id' => request()->employee->root_id, 'del' => 0 ]; $data = TalkskillChosen::where($where)->find(); if (!empty($data)){ $content = TalkskillContent::where([['talkskill_id', '=', $id], ['talkskill_type', '=', 'chosen']])->order('id asc')->select()->toArray(); foreach($content as &$val){ $val['content'] = json_encode($val['content']); $val['img'] = $val['img'] ? explode(',',$val['img']) : ''; } $data['content'] = $content; } View::assign('oss_bindurl', config('app.ali_oss_bindurl')); View::assign('data', $data); $root_id = request()->employee->root_id; //场景 $where_c[] = ['type', '=', 'cate']; $where_c[] = ['root_id', '=', $root_id]; $where_c[] = ['pid', '=', 0]; $where_c[] = ['scene_type', '=', 'chosen']; $cate = TalkskillCates::where($where_c)->field('name,id')->order('id asc')->select()->toarray(); view::assign('cate', $cate); //房屋类型 $where_h[] = ['type', '=', 'house_type']; $where_h[] = ['root_id', '=', $root_id]; $where_h[] = ['pid', '=', 0]; $house_type = TalkskillCates::where($where_h)->field('name,id')->order('id asc')->select()->toarray(); view::assign('house_type', $house_type); //适用人群 $where_u[] = ['root_id', '=', $root_id]; $user_cate = TalkskillUsersCate::where($where_u)->field('name,id')->order('id asc')->select()->toarray(); view::assign('user_cate', $user_cate); return View::fetch(); } else { $param = Request::only(['id', 'title', 'user_cate', 'content', 'house_type'=> '', 'cate1'=> '', 'cate2'=> '']); $data = [ 'id' => $param['id'], 'title' => $param['title'], 'root_id' => request()->employee->root_id, 'user_cate' => $param['user_cate'], 'house_type' => $param['house_type'], 'cate1' => $param['cate1'], 'cate2' => $param['cate2'], 'employee_id'=> request()->employee->id ]; $talkskill = TalkskillChosen::where(['id' => $data['id'], 'root_id' => request()->employee->root_id])->find(); $talkskill->save($data); $old_content = TalkskillContent::where([['talkskill_id', '=', $param['id']], ['talkskill_type', '=', 'chosen']])->select(); if ($old_content->isEmpty()) { if (!empty($param['content'])){ foreach ($param['content'] as $k => $v){ $content = [ 'talkskill_id'=> $param['id'], 'content' => $v['content'], 'type'=> $v['type'], 'talkskill_type'=> 'chosen', 'root_id'=> request()->employee->root_id, 'img'=> '' ]; $img = Request::param('img_'.$k); $imgnew = Request::param('imgnew_'.$k); if(isset($img) && !empty($img)){ $content['img'] = implode(',',$img); } if(isset($imgnew) && !empty($imgnew)){ $content['img'] = $content['img'] ? $content['img'].','.implode(',',$imgnew) : implode(',',$imgnew) ; } TalkskillContent::create($content); } } } else { if (empty($param['content'])){ //全删 $old_content->delete(); } else { // 删除去掉的话术 foreach ($old_content as $k => $v){ $delete = true; foreach ($param['content'] as $kk => $vv) { if (!empty($vv['id']) && $v['id'] == $vv['id']){ $delete = false; } } if ($delete){ $v->delete(); } } // 更新及添加新话术 foreach ($param['content'] as $k => $v) { if (!empty($v['id'])){ $img = Request::param('img_'.$k); $imgnew = Request::param('imgnew_'.$k); $v['img'] = ''; if(isset($img) && !empty($img)){ $v['img'] = implode(',',$img); } if(isset($imgnew) && !empty($imgnew)){ $v['img'] = $v['img'] ? $v['img'].','.implode(',',$imgnew) : implode(',',$imgnew) ; } TalkskillContent::where('id', '=', $v['id'])->save($v); } else { $content = [ 'talkskill_id'=> $param['id'], 'content' => $v['content'], 'type'=> $v['type'], 'talkskill_type'=> 'chosen', 'root_id'=> request()->employee->root_id, 'img'=> '' ]; $img = Request::param('img_'.$k); $imgnew = Request::param('imgnew_'.$k); if(isset($img) && !empty($img)){ $content['img'] = implode(',',$img); } if(isset($imgnew) && !empty($imgnew)){ $content['img'] = $content['img'] ? $content['img'].','.implode(',',$imgnew) : implode(',',$imgnew) ; } TalkskillContent::create($content); } } } } return json(['code' => 0, 'msg' => '操作成功']); } } /* * 精选话术删除 */ public function chosen_delete() { $where[] = ['root_id','=',request()->employee->root_id]; $param = Request::only(['id'=>0,'ids'=>[]]); $i = 1; if ($param['id']) { $where[] = ['id','=',$param['id']]; }elseif (!empty($param['ids']) && is_array($param['ids'])) { $where[] = ['id','in',$param['ids']]; $i = count(array_filter($param['ids'])); }else{ return json(['code' => 1, 'msg' => '操作失败']); } TalkskillChosen::where($where)->update(['del' => 1]); dataStatistics(request()->employee->root_id,'talkskill_count',$i,'dec');//manage应用首页统计数据 return json(['code' => 0, 'msg' => '操作成功']); } /* * 成功案例分类列表页面 */ public function success_cate() { $where[] = ['root_id', '=', request()->employee->root_id]; $where[] = ['pid', '=', 0]; $where[] = ['type', '=', 'cate']; $type = TalkskillCates::where($where)->order('id asc')->select(); View::assign('type', $type); return View::fetch(); } /** * 成功案例分类 */ public function success_cate_list(){ $param = Request::only(['page' => 1, 'limit' => 10, 'keyword', 'type'=> '']); $root_id = request()->employee->root_id; //一级场景 $where[] = ['root_id', '=', $root_id]; $where[] = ['pid', '=', 0]; $where[] = ['type', '=', 'cate']; if (!empty($param['type'])) { $where[] = ['id', '=', $param['type']]; } $data = TalkskillCates::where($where)->page($param['page'] , $param['limit'])->order('id asc')->select()->toArray(); $count = TalkskillCates::where($where)->count(); if ($data) { $where2[] = ['cate1', 'in', array_column($data, 'id')]; $where2[] = ['root_id', '=', $root_id]; $where2[] = ['del', '=', 0]; if (isset($param['keyword']) && $param['keyword']) { $where2[] = ['title', 'like', '%' . trim($param['keyword']) . '%']; } $talkskill = TalkskillSuccess::where($where2)->order('id asc')->select()->toarray(); $label_counts = $dates = $view_count = []; foreach ($talkskill as $v) { //话术数量 $label_counts[$v['cate1']] = isset($label_counts[$v['cate1']]) ? $label_counts[$v['cate1']] += 1 : 1; //最近话术上传时间 $dates[$v['cate1']] = $v['addtime']; //浏览人次 $view_count[$v['cate1']] = isset($view_count[$v['cate1']]) ? $view_count[$v['cate1']] + $v['view_times'] : $v['view_times']; } foreach ($data as $k => $v) { $data[$k]['talkskill_count'] = isset($label_counts[$v['id']]) ? $label_counts[$v['id']] : 0; $data[$k]['update_time'] = isset($dates[$v['id']]) ? $dates[$v['id']] : ''; $data[$k]['view_times'] = isset($view_count[$v['id']]) ? $view_count[$v['id']] : 0; } } return json(['code' => 0, 'msg' => '获取成功', 'data' => $data, 'count' => $count]); } /** * 成功话术首页 */ public function success_index(){ if (!request()->isAjax()){ $root_id = request()->employee->root_id; //一级分类 $where[] = ['type', '=', 'cate']; $where[] = ['root_id', '=', $root_id]; $where[] = ['pid', '=', 0]; $cate = TalkskillCates::where($where)->order('id asc')->column('*','id'); view::assign('cate', $cate); //二级分类 $label = TalkskillCates::where([['pid', '>', 0], ['type', '=', 'cate'], ['root_id', '=', $root_id]])->select()->toArray(); $joinlabel = []; foreach ($label as $val) { $joinlabel[$val['pid']][$val['id']] = $val['name']; } View::assign('cate2', json_encode($joinlabel)); //房屋类型 $where_h[] = ['type', '=', 'house_type']; $where_h[] = ['root_id', '=', $root_id]; $where_h[] = ['pid', '=', 0]; $house_type = TalkskillCates::where($where_h)->field('name,id')->order('id asc')->select()->toarray(); view::assign('house_type', $house_type); //适用人群 $where_u[] = ['root_id', '=', $root_id]; $user_cate = TalkskillUsersCate::where($where_u)->field('name,id')->order('id asc')->select()->toarray(); view::assign('user_cate', $user_cate); return View::fetch(); } else { $param = Request::param(); $where = [ ['root_id', '=', request()->employee->root_id], ['del', '=', 0], ]; if (!empty($param['keyword'])) { $column_id = TalkskillContent::where([ ['root_id', '=', request()->employee->root_id], ['content', 'like', '%' . $param['keyword'] . '%'], ['talkskill_type', '=', 'success'] // ['type', '=', 0] ])->group('talkskill_id')->column('talkskill_id'); $success_id = TalkskillSuccess::where(array_merge($where, [['title', 'like', '%' . $param['keyword'] . '%']]))->column('id'); $new_arr = array_merge($column_id, $success_id); $where[] = ['id', 'in', $new_arr]; } if(!empty($param['addtime'])){ $times = explode(' - ',$param['addtime']); $where[] = ['addtime','between',[$times[0].' 00:00:00',$times[1].' 23:59:59']]; } $sql = TalkskillSuccess::where($where); if (!empty($param['cate1'])) { $sql->whereRaw("FIND_IN_SET('" . $param['cate1'] . "' , cate1)"); } if (!empty($param['cate2'])) { $sql->whereRaw("FIND_IN_SET('" . $param['cate2'] . "' , cate2)"); } if (!empty($param['house_type'])) { $sql->whereRaw("FIND_IN_SET('" . $param['house_type'] . "' , house_type)"); } if (!empty($param['user_cate'])) { $sql->whereRaw("FIND_IN_SET('" . $param['user_cate'] . "' , user_cate)"); } // 获取数据 $list = $sql->page($param['page'], $param['limit'])->order('addtime desc')->select()->each(function ($item){ $item->cate1_name = TalkskillCates::where('id', '=', $item['cate1'])->value('name'); $cate2_name = TalkskillCates::where('id', 'in', $item['cate2'])->column('name'); $item->cate2_name = implode(',', $cate2_name); $house_type_name = TalkskillCates::where('id', 'in', $item['house_type'])->column('name'); $item->house_type_name = implode(',', $house_type_name); $user_cate_name = TalkskillUsersCate::where('id', 'in', $item['user_cate'])->column('name'); $item->user_cate_name = implode(',', $user_cate_name); $content_img = TalkskillContent::where([['talkskill_id','=',$item->id], ['talkskill_type','=','success'], ['root_id','=',request()->employee->root_id], ['img','<>','']])->count(); $item->img = $content_img>0 ? true : false; })->toArray(); $count = $sql->count(); return json(['code' => 0, 'data' => $list, 'count' => $count, 'msg' => '获取成功']); } } /* * 成功话术新增新页面 */ public function success_add_new(){ $id = input('id',0); View::assign('id', $id); return View::fetch(); } /* * 成功案例添加 */ public function success_add() { if (!request()->isAjax()){ $root_id = request()->employee->root_id; //场景 $where[] = ['type', '=', 'cate']; $where[] = ['root_id', '=', $root_id]; $where[] = ['pid', '=', 0]; $cate = TalkskillCates::where($where)->field('name,id')->order('id asc')->select()->toarray(); view::assign('cate', $cate); //房屋类型 $where_h[] = ['type', '=', 'house_type']; $where_h[] = ['root_id', '=', $root_id]; $where_h[] = ['pid', '=', 0]; $house_type = TalkskillCates::where($where_h)->field('name,id')->order('id asc')->select()->toarray(); view::assign('house_type', $house_type); //适用人群 $where_u[] = ['root_id', '=', $root_id]; $user_cate = TalkskillUsersCate::where($where_u)->field('name,id')->order('id asc')->select()->toarray(); view::assign('user_cate', $user_cate); return View::fetch(); } else { $param = Request::only(['title', 'user_cate', 'content', 'house_type'=> '', 'cate1'=> '', 'cate2'=> '']); $data = [ 'title' => $param['title'], 'root_id' => request()->employee->root_id, 'user_cate' => $param['user_cate'], 'house_type' => $param['house_type'], 'cate1' => $param['cate1'], 'cate2' => $param['cate2'], 'employee_id'=> request()->employee->id ]; $result = TalkskillSuccess::create($data); dataStatistics(request()->employee->root_id,'talkskill_count',1,'inc');//manage应用首页统计数据 $id = $result->id; if (!empty($param['content'])){ foreach ($param['content'] as $k => $v){ $content = [ 'talkskill_id'=> $id, 'content' => $v['content'], 'type'=> $v['type'], 'talkskill_type'=> 'success', 'root_id'=> request()->employee->root_id, 'img'=> '' ]; $img = Request::param('images_'.$k); if(isset($img) && !empty($img)){ $content['img'] = implode(',',$img); } TalkskillContent::create($content); } } return json(['code' => 0, 'msg' => '操作成功']); } } /* * 成功案例编辑 */ public function success_edit() { $id = input('id', '', 'intval'); if (!request()->isAjax()){ $where = [ 'id' => $id, 'root_id' => request()->employee->root_id, 'del' => 0 ]; $data = TalkskillSuccess::where($where)->find(); if (!empty($data)){ $content = TalkskillContent::where([['talkskill_id', '=', $id], ['talkskill_type', '=', 'success']])->order('id asc')->select()->toArray(); foreach($content as &$val){ $val['content'] = json_encode($val['content']); $val['img'] = $val['img'] ? explode(',',$val['img']) : ''; } $data['content'] = $content; } View::assign('oss_bindurl', config('app.ali_oss_bindurl')); View::assign('data', $data); $root_id = request()->employee->root_id; //场景 $where_c[] = ['type', '=', 'cate']; $where_c[] = ['root_id', '=', $root_id]; $where_c[] = ['pid', '=', 0]; $cate = TalkskillCates::where($where_c)->field('name,id')->order('id asc')->select()->toarray(); view::assign('cate', $cate); //房屋类型 $where_h[] = ['type', '=', 'house_type']; $where_h[] = ['root_id', '=', $root_id]; $where_h[] = ['pid', '=', 0]; $house_type = TalkskillCates::where($where_h)->field('name,id')->order('id asc')->select()->toarray(); view::assign('house_type', $house_type); //适用人群 $where_u[] = ['root_id', '=', $root_id]; $user_cate = TalkskillUsersCate::where($where_u)->field('name,id')->order('id asc')->select()->toarray(); view::assign('user_cate', $user_cate); return View::fetch(); } else { $param = Request::only(['id', 'title', 'user_cate', 'content', 'house_type'=> '', 'cate1'=> '', 'cate2'=> '']); $data = [ 'id' => $param['id'], 'title' => $param['title'], 'root_id' => request()->employee->root_id, 'user_cate' => $param['user_cate'], 'house_type' => $param['house_type'], 'cate1' => $param['cate1'], 'cate2' => $param['cate2'], 'employee_id'=> request()->employee->id ]; $talkskill = TalkskillSuccess::where(['id' => $data['id'], 'root_id' => request()->employee->root_id])->find(); $talkskill->save($data); $old_content = TalkskillContent::where([['talkskill_id', '=', $param['id']], ['talkskill_type', '=', 'success']])->select(); if ($old_content->isEmpty()) { if (!empty($param['content'])){ foreach ($param['content'] as $k => $v){ $content = [ 'talkskill_id'=> $param['id'], 'content' => $v['content'], 'type'=> $v['type'], 'talkskill_type'=> 'success', 'root_id'=> request()->employee->root_id, 'img'=> '' ]; $img = Request::param('img_'.$k); $imgnew = Request::param('imgnew_'.$k); if(isset($img) && !empty($img)){ $content['img'] = implode(',',$img); } if(isset($imgnew) && !empty($imgnew)){ $content['img'] = $content['img'] ? $content['img'].','.implode(',',$imgnew) : implode(',',$imgnew) ; } TalkskillContent::create($content); } } } else { if (empty($param['content'])){ //全删 $old_content->delete(); } else { // 删除去掉的话术 foreach ($old_content as $k => $v){ $delete = true; foreach ($param['content'] as $kk => $vv) { if (!empty($vv['id']) && $v['id'] == $vv['id']){ $delete = false; } } if ($delete){ $v->delete(); } } // 更新及添加新话术 foreach ($param['content'] as $k => $v) { if (!empty($v['id'])){ $img = Request::param('img_'.$k); $imgnew = Request::param('imgnew_'.$k); $v['img'] = ''; if(isset($img) && !empty($img)){ $v['img'] = implode(',',$img); } if(isset($imgnew) && !empty($imgnew)){ $v['img'] = $v['img'] ? $v['img'].','.implode(',',$imgnew) : implode(',',$imgnew) ; } TalkskillContent::where('id', '=', $v['id'])->save($v); } else { $content = [ 'talkskill_id'=> $param['id'], 'content' => $v['content'], 'type'=> $v['type'], 'talkskill_type'=> 'success', 'root_id'=> request()->employee->root_id, 'img'=> '' ]; $img = Request::param('img_'.$k); $imgnew = Request::param('imgnew_'.$k); if(isset($img) && !empty($img)){ $content['img'] = implode(',',$img); } if(isset($imgnew) && !empty($imgnew)){ $content['img'] = $content['img'] ? $content['img'].','.implode(',',$imgnew) : implode(',',$imgnew) ; } TalkskillContent::create($content); } } } } } return json(['code' => 0, 'msg' => '操作成功']); } /* * 成功案例删除 */ public function success_delete() { $where[] = ['root_id','=',request()->employee->root_id]; $param = Request::only(['id'=>0,'ids'=>[]]); $i = 1; if ($param['id']) { $where[] = ['id','=',$param['id']]; }elseif (!empty($param['ids']) && is_array($param['ids'])) { $where[] = ['id','in',$param['ids']]; $i = count(array_filter($param['ids'])); }else{ return json(['code' => 1, 'msg' => '操作失败']); } dataStatistics(request()->employee->root_id,'talkskill_count',$i,'dec');//manage应用首页统计数据 TalkskillSuccess::where($where)->update(['del' => 1]); return json(['code' => 0, 'msg' => '操作成功']); } /** * 此方法用于从某个企业复制<精选话术>至另一个企业 */ public function copy_talkskill_chosen($from_root_id = 0 , $new_root_id = 0) { if (!$from_root_id || !$new_root_id) return '错误'; if ($from_root_id == $new_root_id) return '错误'; $company = Company::where([['root_id','in',[$from_root_id,$new_root_id]]])->count(); if($company != 2) return '错误'; //使用人群 $new_user_cate = []; $user_cate = TalkskillUsersCate::where(['root_id'=>$from_root_id])->order('addtime')->select(); foreach($user_cate as $cate){ $have_usercate = TalkskillUsersCate::where(['root_id'=>$new_root_id,'name'=>$cate['name']])->value('id'); if(!empty($have_usercate)){ $uc = $have_usercate; }else{ $uc = TalkskillUsersCate::insertGetId(['root_id'=>$new_root_id,'name'=>$cate['name']]); } $new_user_cate[$cate['id']] = $uc; } //房屋类型 $cates = TalkskillCates::where([['root_id','=',$from_root_id],['type','=','house_type']])->order('addtime')->select(); $new_cates = []; foreach($cates as $item){ $have_cates = TalkskillCates::where([['root_id','=',$new_root_id],['type','=','house_type'],['name','=',$item['name']]])->value('id'); if(!empty($have_cates)){ $add_house_type_id = $have_cates; }else{ $add_house_type_id = TalkskillCates::insertGetId(['root_id'=>$new_root_id,'type'=>'house_type','name'=>$item['name']]); } $new_cates[$item['id']] = $add_house_type_id; } //分类 $cate1 = TalkskillCates::where([['pid','=',0],['scene_type','=','chosen'],['root_id','=',$from_root_id],['type','=','cate']])->order('addtime')->select()->toArray(); $new_cate1 = []; $new_cate2 = []; foreach($cate1 as $value){ $have_cate1 = TalkskillCates::where(['scene_type'=>'chosen','root_id'=>$new_root_id,'type'=>'cate','name'=>$value['name'],'pid'=>0])->value('id'); if(!empty($have_cate1)){ $add_cate1_id = $have_cate1; }else{ $add_cate1_id = TalkskillCates::insertGetId(['scene_type'=>'chosen','root_id'=>$new_root_id,'type'=>'cate','name'=>$value['name'],'pid'=>0]); } $new_cate1[$value['id']] = $add_cate1_id; $cate2 = TalkskillCates::where([['pid','=',$value['id']],['root_id','=',$from_root_id],['type','=','cate']])->order('addtime')->select(); foreach($cate2 as $value2){ $have_cate2 = TalkskillCates::where(['root_id'=>$new_root_id,'type'=>'cate','name'=>$value2['name'],'pid'=>$add_cate1_id])->value('id'); if(!empty($have_cate2)){ $add_cate2_id = $have_cate2; }else{ $add_cate2_id = TalkskillCates::insertGetId(['root_id'=>$new_root_id,'type'=>'cate','name'=>$value2['name'],'pid'=>$add_cate1_id]); } $new_cate2[$value2['id']] = $add_cate2_id; } } $data = TalkskillChosen::where([['root_id','=',$from_root_id],['del','=',0]])->select()->toArray(); foreach($data as $d){ $user_cate_str = explode(',',$d['user_cate']); $create_user_cate = []; foreach($user_cate_str as $u){ $create_user_cate[] = isset($new_user_cate[$u]) ? $new_user_cate[$u] : ''; } $house_type_str = explode(',',$d['house_type']); $create_house_type = []; foreach($house_type_str as $h){ $create_house_type[] = isset($new_cates[$h]) ? $new_cates[$h] : ''; } $cate2_str = explode(',',$d['cate2']); $create_cate2 = []; foreach($cate2_str as $c2){ $create_cate2[] = isset($new_cate2[$c2]) ? $new_cate2[$c2] : ''; } $insert_data = [ 'root_id'=>$new_root_id, 'title'=>$d['title'], 'user_cate'=>implode(',',$create_user_cate), 'house_type'=>implode(',',$create_house_type), 'cate1'=>isset($new_cate1[$d['cate1']]) ? $new_cate1[$d['cate1']] : '', 'cate2'=>implode(',',$create_cate2), ]; $addChosenId = TalkskillChosen::insertGetId($insert_data); $content = TalkskillContent::where(['root_id'=>$d['root_id'],'talkskill_id'=>$d['id'],'talkskill_type'=>'chosen'])->order('addtime')->select(); $contentSaveAll = []; foreach($content as $co){ $contentSaveAll[] = [ 'root_id' => $new_root_id, 'talkskill_id' => $addChosenId, 'content' => $co['content'], 'type' => $co['type'], 'talkskill_type' => $co['talkskill_type'], 'img' => $co['img'], ]; } TalkskillContent::insertAll($contentSaveAll); } return '复制成功'; } /** * 此方法用于从某个企业复制<成功案例话术>至另一个企业 */ public function copy_talkskill_success($from_root_id = 0 , $new_root_id = 0) { if (!$from_root_id || !$new_root_id) return '错误'; if ($from_root_id == $new_root_id) return '错误'; $company = Company::where([['root_id','in',[$from_root_id,$new_root_id]]])->count(); if($company != 2) return '错误'; //使用人群 $new_user_cate = []; $user_cate = TalkskillUsersCate::where(['root_id'=>$from_root_id])->order('addtime')->select(); foreach($user_cate as $cate){ $have_usercate = TalkskillUsersCate::where(['root_id'=>$new_root_id,'name'=>$cate['name']])->value('id'); if(!empty($have_usercate)){ $uc = $have_usercate; }else{ $uc = TalkskillUsersCate::insertGetId(['root_id'=>$new_root_id,'name'=>$cate['name']]); } $new_user_cate[$cate['id']] = $uc; } //房屋类型 $cates = TalkskillCates::where([['root_id','=',$from_root_id],['type','=','house_type']])->order('addtime')->select(); $new_cates = []; foreach($cates as $item){ $have_cates = TalkskillCates::where([['root_id','=',$new_root_id],['type','=','house_type'],['name','=',$item['name']]])->value('id'); if(!empty($have_cates)){ $add_house_type_id = $have_cates; }else{ $add_house_type_id = TalkskillCates::insertGetId(['root_id'=>$new_root_id,'type'=>'house_type','name'=>$item['name']]); } $new_cates[$item['id']] = $add_house_type_id; } //分类 $cate1 = TalkskillCates::where([['pid','=',0],['root_id','=',$from_root_id],['type','=','cate']])->order('addtime')->select()->toArray(); $new_cate1 = []; $new_cate2 = []; foreach($cate1 as $value){ $have_cate1 = TalkskillCates::where(['root_id'=>$new_root_id,'type'=>'cate','name'=>$value['name'],'pid'=>0])->value('id'); if(!empty($have_cate1)){ $add_cate1_id = $have_cate1; }else{ $add_cate1_id = TalkskillCates::insertGetId(['root_id'=>$new_root_id,'type'=>'cate','name'=>$value['name'],'pid'=>0]); } $new_cate1[$value['id']] = $add_cate1_id; $cate2 = TalkskillCates::where([['pid','=',$value['id']],['root_id','=',$from_root_id],['type','=','cate']])->order('addtime')->select(); foreach($cate2 as $value2){ $have_cate2 = TalkskillCates::where(['root_id'=>$new_root_id,'type'=>'cate','name'=>$value2['name'],'pid'=>$add_cate1_id])->value('id'); if(!empty($have_cate)){ $add_cate2_id = $have_cate2; }else{ $add_cate2_id = TalkskillCates::insertGetId(['root_id'=>$new_root_id,'type'=>'cate','name'=>$value2['name'],'pid'=>$add_cate1_id]); } $new_cate2[$value2['id']] = $add_cate2_id; } } $data = TalkskillSuccess::where([['root_id','=',$from_root_id],['del','=',0]])->select()->toArray(); foreach($data as $d){ $user_cate_str = explode(',',$d['user_cate']); $create_user_cate = []; foreach($user_cate_str as $u){ $create_user_cate[] = isset($new_user_cate[$u]) ? $new_user_cate[$u] : ''; } $house_type_str = explode(',',$d['house_type']); $create_house_type = []; foreach($house_type_str as $h){ $create_house_type[] = isset($new_cates[$h]) ? $new_cates[$h] : ''; } $cate2_str = explode(',',$d['cate2']); $create_cate2 = []; foreach($cate2_str as $c2){ $create_cate2[] = isset($new_cate2[$c2]) ? $new_cate2[$c2] : ''; } $insert_data = [ 'root_id'=>$new_root_id, 'title'=>$d['title'], 'user_cate'=>implode(',',$create_user_cate), 'house_type'=>implode(',',$create_house_type), 'cate1'=>isset($new_cate1[$d['cate1']]) ? $new_cate1[$d['cate1']] : '', 'cate2'=>implode(',',$create_cate2), ]; $addChosenId = TalkskillSuccess::insertGetId($insert_data); $content = TalkskillContent::where(['root_id'=>$d['root_id'],'talkskill_id'=>$d['id'],'talkskill_type'=>'success'])->order('addtime')->select(); $contentSaveAll = []; foreach($content as $co){ $contentSaveAll[] = [ 'root_id' => $new_root_id, 'talkskill_id' => $addChosenId, 'content' => $co['content'], 'type' => $co['type'], 'talkskill_type' => $co['talkskill_type'], 'img' => $co['img'], ]; } TalkskillContent::insertAll($contentSaveAll); } return '复制成功'; } /** * 此方法用于从某个企业复制<话术管理>至另一个企业 */ public function copy_talkskill($from_root_id = 0 , $new_root_id = 0) { if (!$from_root_id || !$new_root_id) return '错误'; if ($from_root_id == $new_root_id) return '错误'; $company = Company::where([['root_id','in',[$from_root_id,$new_root_id]]])->count(); if($company != 2) return '错误'; //使用人群 $user_cate = TalkskillUsersCate::where(['root_id'=>$from_root_id])->order('addtime')->select(); foreach($user_cate as $cate){ $have_usercate = TalkskillUsersCate::where(['root_id'=>$new_root_id,'name'=>$cate['name']])->value('id'); if(empty($have_usercate)){ TalkskillUsersCate::insertGetId(['root_id'=>$new_root_id,'name'=>$cate['name']]); } } //房屋类型 $cates = TalkskillCates::where([['root_id','=',$from_root_id],['type','=','house_type']])->order('addtime')->select(); foreach($cates as $item){ $have_cates = TalkskillCates::where([['root_id','=',$new_root_id],['type','=','house_type'],['name','=',$item['name']]])->value('id'); if(empty($have_cates)){ TalkskillCates::insertGetId(['root_id'=>$new_root_id,'type'=>'house_type','name'=>$item['name']]); } } //分类 $cate1 = TalkskillCates::where([['pid','=',0],['root_id','=',$from_root_id],['type','=','cate']])->order('addtime')->select()->toArray(); foreach($cate1 as $value){ $have_cate1 = TalkskillCates::where(['root_id'=>$new_root_id,'type'=>'cate','name'=>$value['name'],'pid'=>0])->value('id'); if(empty($have_cate1)){ $add_cate1_id = TalkskillCates::insertGetId(['root_id'=>$new_root_id,'type'=>'cate','name'=>$value['name'],'pid'=>0]); }else{ $add_cate1_id = $have_cate1; } $cate2 = TalkskillCates::where([['pid','=',$value['id']],['root_id','=',$from_root_id],['type','=','cate']])->order('addtime')->select(); foreach($cate2 as $value2){ $have_cate2 = TalkskillCates::where(['root_id'=>$new_root_id,'type'=>'cate','name'=>$value2['name'],'pid'=>$add_cate1_id])->value('id'); if(empty($have_cate2)){ TalkskillCates::insertGetId(['root_id'=>$new_root_id,'type'=>'cate','name'=>$value2['name'],'pid'=>$add_cate1_id]); } } } //label标签 $label_arr = []; $label = TalkskillLabel::where('root_id',$from_root_id)->order('addtime')->select(); foreach($label as $item){ $have_label = TalkskillLabel::where([['root_id','=',$new_root_id],['label_name','=',$item['label_name']]])->value('id'); if(empty($have_label)){ $label_id = TalkskillLabel::insertGetId(['root_id'=>$new_root_id,'label_name'=>$item['label_name']]); }else{ $label_id = $have_label; } $label_arr[] = $label_id; } $data = TalkskillModel::where([['root_id','=',$from_root_id],['del','=',0],['type','=','admin']])->select()->toArray(); foreach($data as $d){ $insert_data = [ 'root_id'=>$new_root_id, 'title'=>$d['title'], 'content'=>$d['content'], 'label'=>isset($label_arr[$d['label']]) ? $label_arr[$d['label']] : 0, 'type'=>'admin', 'imgs'=>$d['imgs'], 'videos'=>$d['videos'], 'media_id'=>$d['media_id'], 'weixin_media'=>$d['weixin_media'], 'user_cate'=>$d['user_cate'], 'house_type'=>$d['house_type'], 'cate1'=>$d['cate1'], 'cate2'=>$d['cate2'], ]; TalkskillModel::insertGetId($insert_data); } return '复制成功'; } }