12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001 |
- <?php
- namespace app\sys\controller;
- use app\model\Building;
- use app\model\BuildingHousetype;
- use app\model\Community;
- use think\facade\View;
- use app\model\Setting;
- use app\model\SmartScreen;
- use think\facade\Request;
- use app\model\SmartScreenCate;
- use app\model\SmartScreenData;
- use toolkits\Aec;
- use app\model\CustomerVisitLog;
- use xiaohongwu\Vr;
- use app\model\Designer;
- use app\model\Employee;
- use app\model\User;
- use app\model\Customer;
- use app\model\Permission;
- use app\model\Company;
- use app\model\ConstructionStep;
- use app\model\CustomerWisdomImg;
- use app\model\RenovatePrice;
- use app\model\RenovatePriceItem;
- use app\model\SmartScreenLog;
- use app\model\VrGroup;
- use think\facade\Cache;
- use app\model\DesignerCollectionWorks;
- use app\model\Org;
- use app\model\SmartScreenConstruction;
- use app\model\SmartScreenProject;
- use app\model\Housetype;
- use app\model\SmartScreenProjectCate;
- use app\model\DesignerCustomerPlandata;
- use app\model\CustomerPortraitFieldSelect;
- use app\model\Decostyle;
- use openssl\Aes;
- class Wisdom
- {
- private $modular;
- private $root_id;
- private $employee_id;
- private $customer_id;
- public function __construct()
- {
- $this->modular = ['introduce' => '公司简介', 'pattern' => '模式优势', 'boutique' => '精品设计', 'science' => '材料', 'major' => '大牌软装', 'customized' => '定制家具', 'realistic' => '实景样板房', 'praise' => '口碑及服务', 'platinum' => '铂金工程'];
- $param = Request::only(['token' => '']);
- $value = '';
- if ($param['token']) {
- $aec = new Aec(config('app.aec_key'), config('app.aec_iv'));
- $value = $aec->decrypt($param['token']);
- }
- if(!$value){
- json(['code'=>1,'msg'=>'参数错误'])->send();
- exit;
- }
- $value = explode('#',$value);
- $this->root_id = $value[0];
- $this->employee_id = $value[1];
- $this->customer_id = $value[2];
- }
- /**
- * 面板
- */
- public function index()
- {
- //9个模块
- $modular = array_keys($this->modular);
- $where = [
- ['root_id', '=', $this->root_id],
- ['code', 'in', $modular]
- ];
- $res = SmartScreen::where($where)->column('*', 'code');
- $ali_oss_bindurl = config('app.ali_oss_bindurl');
- foreach ($res as $k2 => $v2) {
- $res[$k2]['background_img'] = $v2['background_img'] ? 'https://' . $ali_oss_bindurl . '/' . $v2['background_img'] : '';
- $res[$k2]['lcon_img'] = $v2['lcon_img'] ? 'https://' . $ali_oss_bindurl . '/' . $v2['lcon_img'] : '';
- }
- $diff = array_diff($modular, array_keys($res));
- $row = [];
- foreach ($diff as $v) {
- $row[$v] = [
- 'title' => $this->modular[$v],
- 'code' => $v,
- 'background_img' => '',
- 'lcon_img' => ''
- ];
- }
- $row = array_merge($res, $row);
- //排序后的数据
- $where = [
- ['name', '=', 'wisdomMenuOrder'],
- ['root_id', '=', $this->root_id]
- ];
- $ids = Setting::where($where)->value('content');
- $order = Permission::where([['uri','like','%smartScreen/content?type=%']])->order('sort asc,id asc')->column('uri,id');
- if ($ids) {
- $ids = array_flip(explode(',',$ids));
- foreach ($order as $key => $value) {
- $order[$key]['order'] = $ids[$value['id']];
- }
- array_multisort(array_column($order,'order'),SORT_ASC, $order);
- }
- $order = array_column($order,'uri');
-
- $res = [];
- foreach ($order as $v2) {
- foreach ($row as $v3) {
- if(strpos($v2,$v3['code']) !== false){
- $res[$v3['code']] = $v3;
- break;
- }
- }
- }
- //前端跳需要转参数
- $url = SmartScreen::changeState('url');
- foreach ($res as $k4 => $v4) {
- $field = $url[$k4];
- $res[$k4] = array_merge($v4,$field);
- }
- //录音开关
- $where = [
- ['name', '=', 'recordingSwitch'],
- ['root_id', '=', $this->root_id]
- ];
- $info = Setting::where($where)->findOrEmpty();
- $switch = (!$info->isEmpty() && $info->content) ? 1 : 0;
- //公司名称
- $company_name = Company::where('root_id',$this->root_id)->value('company_name');
- $bind = $this->customer_id ? 1 : 0;
- //设计师编辑方案管理判断
- $empdata = Employee::with(['org'])->where([['root_id', '=', $this->root_id], ['id', '=', $this->employee_id]])->field('id,org_id')->find();
- $is_designer = !empty($empdata['org']['org_type']) && $empdata['org']['org_type'] == 2 ? 1 : 0;
- $designer_edit = $is_designer ? 1 : 0;
- $plandata = ['background_img' => '', 'code' => 'plandata', 'lcon_img' => '', 'logo' => 'icon-fanganguanli_mian', 'title' => '方案资料', 'url' => '/index/programme', 'sort' => 2];
- $res['plandata'] = $plandata;
- return json(['code' => 0, 'data' => $res, 'designer_edit' => $designer_edit, 'switch' => $switch, 'company_name' => $company_name, 'bind' => $bind]);
- }
- /**
- * 获取一级分类
- */
- public function getCate1()
- {
- $param = Request::only(['type'=>'']);
- $where = [
- ['root_id','=',$this->root_id],
- ['level','=',1],
- ['pid','=',0],
- ['del','=',0],
- ['code','=',$param['type']]
- ];
- $res = SmartScreenCate::where($where)->select()->toArray();
- return json(['code'=> 0, 'data'=> $res]);
- }
- /**
- * 获取二级分类
- */
- public function getCate2()
- {
- $param = Request::only(['type'=>'','pid'=>0]);
- $where = [
- ['root_id','=',$this->root_id],
- ['level','=',2],
- ['pid','=',$param['pid']],
- ['del','=',0],
- ['code','=',$param['type']]
- ];
- $cate2 = SmartScreenCate::where($where)->select()->toArray();
- $where = [
- ['root_id','=',$this->root_id],
- ['level','=',3],
- ['pid','in',array_column($cate2,'id')],
- ['del','=',0],
- ['code','=',$param['type']]
- ];
- $cate3 = SmartScreenCate::where($where)->select()->toArray();
- foreach ($cate2 as $k2 => $v2) {
- $cate2[$k2]['child'] = [];
- foreach ($cate3 as $k3 => $v3) {
- if ($v2['id']==$v3['pid']) {
- $cate2[$k2]['child'][] = $v3;
- }
- }
- }
- return json(['code'=> 0, 'data'=> $cate2]);
- }
- /**
- * 获取内容
- */
- public function getData()
- {
- $param = Request::only(['cate1'=>0,'cate2'=>0,'cate3'=>'','page'=>1,'limit'=>10,'community_id'=>0,'decostyle_id'=>0,'housetype_id'=>0]);
- $where[] = ['cate1','=',$param['cate1']];
- $where[] = ['del','=',0];
- $where[] = ['root_id','=',$this->root_id];
- if ($param['cate2']) $where[] = ['cate2','=',$param['cate2']];
- if ($param['cate3']){
- $ids = explode(',',$param['cate3']);
- $where[] = ['cate3','in',$ids];
- }
- if($param['community_id']) $where[] = ['community_id','=',$param['community_id']];
- if($param['decostyle_id']) $where[] = ['decostyle_id','=',$param['decostyle_id']];
- if($param['housetype_id']) $where[] = ['housetype_id','=',$param['housetype_id']];
- $list = SmartScreenData::with(['designer'=>function($query){
- $query->field('id,name')->bind(['designer_name'=>'name']);
- },'community'=>function($query){
- $query->field('id,title')->bind(['community_name'=>'title']);
- },'decostyle'=>function($query){
- $query->field('id,title')->bind(['decostyle_name'=>'title']);
- },'housetype'=>function($query){
- $query->field('id,title')->bind(['housetype_name'=>'title']);
- },'cate1'=>function($query){
- $query->field('id,title,is_case')->bind(['cate1_name'=>'title','is_case'=>'is_case']);
- },'cate2'=>function($query){
- $query->field('id,title')->bind(['cate2_name'=>'title']);
- },'cate3'=>function($query){
- $query->field('id,title')->bind(['cate3_name'=>'title']);
- }])->where($where)->page($param['page'],$param['limit'])->select()->toArray();
- $vrObj = new Vr();
- foreach ($list as $k => $v) {
- $list[$k]['vr_case_img'] = $v['vr_case'] ? getFirstImg($v['vr_case']) : '';
- //封面图
- if ($v['is_case']==0 && $v['difference']==3) {
- $list[$k]['leixing'] = 'VR';
- $list[$k]['covers'] = $v['vr_case'] ? getFirstImg($v['vr_case']) : '';
- }elseif ($v['is_case']==0 && $v['difference']==1){
- $list[$k]['leixing'] = '视频';
- if ($v['cover']) {
- $list[$k]['covers'] = $v['cover'];
- }elseif ($v['video_case']) {
- $list[$k]['covers'] = $v['video_case'].'?x-oss-process=video/snapshot,t_100,f_jpg,w_200,m_fast';
- }else{
- $list[$k]['covers'] = '';
- }
- // $list[$k]['covers'] = $v['cover'] ? $v['cover'].'?x-oss-process=image/resize,w_50' : '';
- // $list[$k]['covers'] = $v['covers'] ? $v['video_case'].'?x-oss-process=video/snapshot,t_100,f_jpg,w_200,m_fast' : '';
- }elseif ($v['is_case']==0 && $v['difference']==2){
- $list[$k]['leixing'] = '图文';
- $list[$k]['covers'] = $v['cover'];
- }elseif ($v['is_case']==0 && $v['difference']==4){
- $list[$k]['leixing'] = 'PDF';
- $list[$k]['covers'] = $v['cover'];
- }elseif($v['difference']==5){
- $list[$k]['leixing'] = 'VR作品';
- $list[$k]['covers'] = '';
- //VR作品
- if ($v['vr_case']) {
- $sid = str_replace(substr($v['vr_case'],0,-32),'',$v['vr_case']);
- $info = VrGroup::where('sid',$sid)->field('pic_path')->findOrEmpty();
- $list[$k]['covers'] = $info->isEmpty() ? '' : $info->pic_path;
- }
- }else{
- $list[$k]['leixing'] = '案例';
- $list[$k]['covers'] = $v['cover'];
- }
- }
- $count = SmartScreenData::where($where)->count();
- return json(['code'=> 0, 'data'=> $list,'count'=>$count]);
- }
- /**
- * 获取详情
- */
- public function getRead()
- {
- $param = Request::only(['id'=>0]);
- $where = [
- ['id','=',$param['id']]
- ];
- $vrObj = new Vr();
- $res = SmartScreenData::with(['designer'=>function($query){
- $query->field('id,name')->bind(['designer_name'=>'name','position'=>'position','image_photo'=>'image_photo']);
- },'community'=>function($query){
- $query->field('id,title')->bind(['community_name'=>'title']);
- },'decostyle'=>function($query){
- $query->field('id,title')->bind(['decostyle_name'=>'title']);
- },'housetype'=>function($query){
- $query->field('id,title')->bind(['housetype_name'=>'title']);
- },'cate1'=>function($query){
- $query->field('id,title')->bind(['cate1_name'=>'title','is_case'=>'is_case']);
- },'cate2'=>function($query){
- $query->field('id,title')->bind(['cate2_name'=>'title']);
- },'cate3'=>function($query){
- $query->field('id,title')->bind(['cate3_name'=>'title']);
- }])->where('id',$param['id'])->find();
- $res->vr_case_img = '';
- if ($res->vr_case && strpos($res->vr_case,'vr/#')) {
- //2023-06-02 vr作品获取封面图
- $sid = str_replace(substr($res->vr_case,0,-32),'',$res->vr_case);
- $info = VrGroup::where('sid',$sid)->field('pic_path')->findOrEmpty();
- $res->vr_case_img = $info->isEmpty() ? '' : $info->pic_path;
- }elseif ($res->vr_case) {
- $res->vr_case_img = $vrObj->getFirstImg($res->vr_case);
- }
- $res->good_at = [];
- if($res->designer_id){
- $designer = Designer::where('employee_id',$res->designer_id)->findOrEmpty();
- if (!$designer->isEmpty()) {
- $res->good_at = $designer->good_at;
- }
- }
- if ($res->vr_case) {
- $url_res = filter_var($res->vr_case, FILTER_VALIDATE_URL);
- if ($url_res === FALSE){
- $res->vr_case = '';
- }
- }
- $employee['phone'] = $employee['name'] = $employee['img'] = '';
- if ($this->employee_id) {
- $info = Employee::where('id',$this->employee_id)->find();
- $employee['phone'] = $info->phone;
- $employee['name'] = $info->name;
- $employee['img'] = User::where('id',$info->uid)->value('headimgurl');
- }
- return json(['code'=> 0, 'data'=> $res,'info'=>$employee]);
- }
- /**
- * 讲解记录
- * $time = 0#unix,1#unix,0#unix
- */
- public function saveLog()
- {
- if(!$this->employee_id || !$this->customer_id) return json(['code'=> 1, 'data'=> '未绑定客户','msg'=>'未绑定客户']);
- $param = Request::only(['file'=>'','time'=>'']);
- $info = Employee::where('id',$this->employee_id)->find();
- $customer_name = Customer::where('id',$this->customer_id)->value('name');
- $count = explode(',',$param['time']);
- if (count($count)<=1) {
- $param['time'] = '';
- $param['unix'] = 0;
- }else{
- $param['unix'] = end($count);
- $str = array_slice($count,0,count($count)-1);
- $param['time'] = implode('',$str);
-
- }
- $param['time'] = '接待了客户:'.$customer_name.',谈单时长:'.ceil($param['unix']/60).'分钟;<br/>智慧屏讲解内容:<br/>'.$param['time'];
- $save = [
- 'customer_id'=>$this->customer_id,
- 'type'=>1,
- 'remark'=>$param['time'].'@讲解智慧屏##'.$param['file'],
- 'employee_id'=>$this->employee_id,
- 'user_id' => $info->uid,
- 'customer_employee_id' => $this->employee_id,
- 'org_id' => $info->org_id,
- 'customer_org_id' => $info->org_id,
- 'state'=>'未到访',
- 'next_contact_date' =>date('Y-m-d'),
- 'talking_order_time'=> ceil($param['unix']/60)
- ];
- CustomerVisitLog::create($save);
- return json(['code'=> 0, 'data'=> '保存成功']);
- }
- /**
- * 获取客户智慧屏图片图片
- */
- public function getWisdomImg(){
- if(!$this->employee_id || !$this->customer_id) return json(['code'=> 0, 'data'=> [],'msg'=>'']);
- $param = Request::only(['type'=>0]);
- $where = [
- 'customer_id'=>$this->customer_id,
- 'type'=>$param['type'],
- 'root_id' => $this->root_id
- ];
- $list = CustomerWisdomImg::where($where)->field('id,img')->order('id asc')->select()->toArray();
- return json(['code'=> 0, 'data'=>$list, 'msg'=> '获取成功']);
- }
- /**
- * 获取报价套餐
- */
- public function getRenovatePackage(){
- if(!$this->employee_id || !$this->customer_id) return json(['code'=> 0, 'data'=> ['package_list'=>[],'cusdata'=>[]],'msg'=>'']);
- //$param = Request::only(['type'=>0]);
- $package_list = RenovatePrice::where([['root_id','=',$this->root_id],['status','=',0]])->field('id,package_name,addtime')->order('sort desc')->select()->toArray();
- $cusdata = Customer::where([['org_id','in',orgSubIds($this->root_id)],['id','=',$this->customer_id]])->field('id,name,phone,community_name,square,ext')->find();
- $cusdata['unit_number'] = '';
- if(!empty($cusdata['ext'])){
- $ext = json_decode($cusdata['ext'],true);
- foreach($ext as $key=>$val){
- if(!empty($val['keyname']) && $val['keyname'] == 'unit_number') $cusdata['unit_number'] = $val['value'];
- }
- }
- $data = ['package_list'=>$package_list,'cusdata'=>$cusdata];
- return json(['code'=> 0, 'data'=>$data, 'msg'=> '获取成功']);
- }
- /**
- * 计算报价
- */
- public function callRenovatePrice()
- {
- if(!$this->employee_id || !$this->customer_id) return json(['code'=>0,'data'=>[],'msg'=>'获取成功']);
-
- $param = Request::only(['hall'=>0,'room'=>0,'kitchen'=>0,'toilet'=>0,'square'=>0,'package_id'=>0,'out_square'=>0,'name'=>'','community_name'=>'']);
- $package_id = !empty($param['package_id']) ? explode(',',$param['package_id']) : '';
- if(empty($package_id)) return json(['code'=>'1','msg'=>'套餐参数错误']);
- if(empty($param['square'])) return json(['code'=>1,'msg'=>'面积为空']);
- $cusdata = Customer::where([['org_id','in',orgSubIds($this->root_id)],['id','=',$this->customer_id]])->find();
- if(!empty($param['name'])) $cusdata->name = $param['name'];
- if(!empty($param['community_name'])) $cusdata->community_name = $param['community_name'];
- if(!empty($param['square'])) $cusdata->square = $param['square'];
- $cusdata->save();
- $packdata = RenovatePrice::with('item')->where([['root_id','=',$this->root_id],['id','in',$package_id]])->select()->toArray();
- if(empty($packdata)) return json(['code'=>1,'msg'=>'套餐不存在']);
- foreach($packdata as $k=>$v){
- $price = 0;
- $discount_price = 0;
- //$item = $v['item'] ? $v['item'] : [];
- //if(empty($item)) $price = 0;
- //rule 1=>单价*套内建筑面积 2=>单价*建筑面积 3=>单价*卧室数 4=>单价*卫生间数 5=>单价*厨房数 6=>固定价 7=>单价*客厅数
- foreach($v['item'] as $key=>$val){
- if($val['rule']==1 && !empty($param['square'])){
- $price+= $val['price'] * $param['square'];
- $discount_price+= $val['discount_price'];
- $packdata[$k]['item'][$key]['item_price'] = round($val['price'] * $param['square'] * $v['service_price'],2);
- }
- if($val['rule']==2 && !empty($param['out_square'])){
- $price+= $val['price'] * $param['out_square'];
- $discount_price+= $val['discount_price'];
- $packdata[$k]['item'][$key]['item_price'] = round($val['price'] * $param['out_square'] * $v['service_price'],2);
- }
- if($val['rule']==3 && !empty($param['room'])){
- $price+= $val['price'] * $param['room'];
- $discount_price+= $val['discount_price'];
- $packdata[$k]['item'][$key]['item_price'] = round($val['price'] * $param['room'] * $v['service_price'],2);
- }
- if($val['rule']==4 && !empty($param['toilet'])){
- $price+= $val['price'] * $param['toilet'];
- $discount_price+= $val['discount_price'];
- $packdata[$k]['item'][$key]['item_price'] = round($val['price'] * $param['toilet'] * $v['service_price'],2);
- }
- if($val['rule']==5 && !empty($param['kitchen'])){
- $price+= $val['price'] * $param['kitchen'];
- $discount_price+= $val['discount_price'];
- $packdata[$k]['item'][$key]['item_price'] = round($val['price'] * $param['kitchen'] * $v['service_price'],2);
- }
- if($val['rule']==6){
- $price+= $val['price'];
- $discount_price+= $val['discount_price'];
- $packdata[$k]['item'][$key]['item_price'] = round($val['price'] * $v['service_price'],2);
- }
- if($val['rule']==7 && !empty($param['hall'])){
- $price+= $val['price'] * $param['hall'];
- $discount_price+= $val['discount_price'];
- $packdata[$k]['item'][$key]['item_price'] = round($val['price'] * $param['hall'] * $v['service_price'],2);
- }
- }
- $price = $price * $v['service_price'] + $v['devise_price'] - $discount_price;
- $packdata[$k]['price'] = round($price,2);
- $packdata[$k]['discount_price'] = $discount_price;
- $packdata[$k]['yuan_price'] = round($price,2) + $discount_price;
- }
- $remark = '客户'.$cusdata->name.'于'.date('Y-m-d H:i:s').'使用';
- $msg = '';
- foreach($packdata as $k=>$v){
- $msg.= $v['package_name'].'套餐进行装修报价,价格为'.$v['price'].'元,优惠金额为'.$v['discount_price'].'元';
- }
- //echo ($remark.trim($msg,','));exit;
- $info = Employee::where([['root_id','=',$this->root_id],['id','=',$this->employee_id]])->find();
- //增加客户计算报价的记录
- $save = [
- 'customer_id'=>$this->customer_id,
- 'type'=>1,
- 'remark'=>$remark.trim($msg,','),
- 'employee_id'=>$this->employee_id,
- 'user_id' => $info->uid,
- 'customer_employee_id' => $this->employee_id,
- 'org_id' => $info->org_id,
- 'customer_org_id' => $info->org_id,
- 'state'=>$cusdata->state != '待确认' ? 10 : 1,
- 'next_contact_date' =>date('Y-m-d')
- ];
- CustomerVisitLog::create($save);
- return json(['code'=>0,'data'=>$packdata,'msg'=>'获取成功']);
- }
- /**
- * 生成绑定二维码
- * 每次刷新都是新码
- *
- */
- public function getQrcode()
- {
- $list = scandir('upload');
- foreach ($list as $v) {
- if(strpos($v,'wisdomqrcode') !== false) @unlink('upload/'.$v); //删除失效文件
- }
- $str = 'wisdomqrcode'.uniqid().'@'.$this->root_id.'@';
- $name = $str.'.jpg';
- $img = qrcode($str, 'upload/'.$name);
- $url = request()->domain().'/'.'upload/'.$name;
- return json(['code'=>0,'data'=>$url,'msg'=>'获取成功','str'=>$str]);
- }
- /**
- * 循环调用api
- */
- public function ergodic()
- {
- $param = Request::only(['str'=>'']);
- if(!$param['str']) return json(['code'=>1,'data'=>'未绑定','msg'=>'未绑定']);
- $res = Cache::get($param['str']);
- if($res){
- $aec = new Aec(config('app.aec_key'), config('app.aec_iv'));
- $value = $aec->decrypt($res);
- $value = explode('#',$value);
- $root_id = $value[0];
- $employee_id = $value[1];
- $customer_id = $value[2];
- $log_data['root_id'] = $root_id;
- $log_data['employee_id'] = $employee_id;
- $log_data['customer_id'] = $customer_id;
- $log_data['str'] = $res;
- $log_data['time'] = 0;
- SmartScreenLog::create($log_data);
- return json(['code'=>0,'data'=>$res,'msg'=>'获取成功']);
- }else{
- return json(['code'=>1,'data'=>'未绑定','msg'=>'未绑定']);
- }
- }
- /**
- * 解绑
- */
- public function logout()
- {
- $param = Request::only(['str'=>'']);
- $log_where[] = ['root_id', '=', $this->root_id];
- $log_where[] = ['employee_id', '=', $this->employee_id];
- $log_where[] = ['customer_id', '=', $this->customer_id];
- $log_where[] = ['str', '=', $param['str']];
- $find = SmartScreenLog::where($log_where)->findOrEmpty();
- if (!$find->isEmpty()) {
- $time = time() - strtotime($find['addtime']);
- $find->time = $time;
- $find->endtime = date('Y-m-d H:i:s');
- $find->save();
- }
- $res = Cache::delete($param['str']);
- $aec = new Aec(config('app.aec_key'), config('app.aec_iv'));
- $str = $aec->encrypt($this->root_id.'#0#0');
- return json(['code'=>0,'data'=>$str,'msg'=>'解绑成功']);
- }
- /**
- * 客户设计师列表
- */
- public function cus_designer_list()
- {
- $orgids = orgSubIds($this->root_id);
- $where[] = ['org_id', 'in', $orgids];
- $where[] = ['id', '=', $this->customer_id];
- $assign = Customer::where($where)->value('assigned_personnel');
- $list = [];
- if (!empty($assign)) {
- $list = Employee::hasWhere('org', ['org_type' => 2])->where('Employee.id', 'in', explode(',', $assign))->column('Employee.id,Employee.name');
- }
- return json(['code' => 0, 'data' => $list, 'msg' => '获取成功']);
- }
- /**
- * 设计师个人介绍
- */
- public function designer_detail($designer_id)
- {
- $dw[] = ['root_id', '=', $this->root_id];
- $dw[] = ['employee_id', '=', $designer_id];
- $data = Designer::where($dw)->field('headimgurl,good_at,desc,position,work_years,good_house,design_concept,vcr')->find();
- $data['is_designer'] = !empty($data) ? 1 : 2;
- $data['employee_name'] = Employee::where([['root_id', '=', $this->root_id], ['id', '=', $this->employee_id]])->value('name');
- return json(['code' => 0, 'data' => $data, 'msg' => '获取成功']);
- }
- /**
- * 设计师作品集
- */
- public function designer_worklist()
- {
- $param = Request::only(['page' => 1, 'limit' => 10, 'housetype_id' => 0, 'designer_id']);
- if (empty($param['designer_id'])) return json(['code' => 1, 'msg' => '请选择设计师']);
- $dw[] = ['root_id', '=', $this->root_id];
- $dw[] = ['employee_id', '=', $param['designer_id']];
- if (!empty($param['housetype_id'])) $dw[] = ['housetype_id', '=', $param['housetype_id']];
- $list = DesignerCollectionWorks::with(['decostyle', 'housetype'])->where($dw)->page($param['page'], $param['limit'])->select()->toArray();
- foreach ($list as $key => $val) {
- if ($val['type'] == 2 && !empty($val['vr_case'])) {
- $list[$key]['cover_img'] = !empty($val['vr_case'][0]['vr_img']) ? $val['vr_case'][0]['vr_img'] : '';
- }
- }
- return json(['code' => 0, 'data' => $list, 'msg' => '获取成功']);
- }
- /**
- * 作品集户型分类
- */
- public function work_housetype($designer_id)
- {
- $dw[] = ['root_id', '=', $this->root_id];
- $dw[] = ['employee_id', '=', $designer_id];
- $ids = DesignerCollectionWorks::where($dw)->group('housetype_id')->column('housetype_id');
- $list = Housetype::where([['root_id', '=', $this->root_id], ['id', 'in', $ids]])->column('id,name');
- return json(['code' => 0, 'data' => $list, 'msg' => '获取成功']);
- }
- /**
- * 设计师作品详情
- */
- public function designer_workdet()
- {
- $param = Request::only(['designer_id' => 0, 'id' => 0]);
- $where[] = ['root_id', '=', $this->root_id];
- $where[] = ['employee_id', '=', $param['designer_id']];
- $where[] = ['id', '=', $param['id']];
- $data = DesignerCollectionWorks::with(['decostyle', 'housetype'])->where($where)->find();
- $info = Employee::with(['user' => function ($query) {
- $query->field('id,headimgurl');
- }])->where([['root_id', '=', $this->root_id], ['id', '=', $this->employee_id]])->field('uid,name,phone')->find()->toArray();
- $info['img'] = !empty($info['user']['headimgurl']) ? $info['user']['headimgurl'] : '';
- if (empty($data)) return json(['code' => 1, 'msg' => '数据不存在']);
- return json(['code' => 0, 'data' => $data, 'info' => $info, 'msg' => '获取成功']);
- }
- /**
- * 工地状态
- */
- public function construction_step()
- {
- $root_id = $this->root_id;
- $step_list = ConstructionStep::where('root_id', '=', $root_id)->order('order asc')->select()->toArray();
- return json(['code' => 0, 'data' => $step_list]);
- }
- /**
- * 在施工地
- */
- public function construction()
- {
- $root_id = $this->root_id;
- $param = request()->only(['page'=> 1, 'limit'=> 15, 'keyword'=> '', 'emp_name'=> '', 'status'=> '']);
- $model = SmartScreenConstruction::with(['designer', 'employee'])->where([['root_id', '=', $root_id]]);
- if (!empty($param['keyword'])){
- $where_k = [['owner_name|address', 'like', '%' . $param['keyword'] . '%']];
- $model = $model->where($where_k);
- }
- if (!empty($param['emp_name'])) {
- $where_e = [['project_manager|inspection', 'like', '%' . $param['emp_name'] . '%']];
- $emp_name = $param['emp_name'];
- $designer_org = Org::where([['path', 'like', $root_id . '%'], ['org_type', '=', 2], ['status', '=', 1]])->column('id');
- $designer_id = Employee::where([['root_id', '=', $root_id], ['name', 'like', '%' . $param['emp_name'] . '%'], ['state', '=', '在职'], ['org_id', 'in', $designer_org]])->column('id');
- $where_d = [['designer_id', 'in', $designer_id]];
- if (empty($designer_id)) {
- $model = $model->where($where_e);
- } else {
- $model = $model->where(function ($query) use ($emp_name, $where_d) {
- $query->whereOr([[['project_manager', 'like', '%' . $emp_name . '%']], [['inspection', 'like', '%' . $emp_name . '%']], $where_d]);
- });
- }
- }
- if (!empty($param['status'])) {
- $where_s = [['status', '=', $param['status']]];
- $model = $model->where($where_s);
- }
- $count = $model->count();
- $list = $model->order('addtime desc')->page($param['page'], $param['limit'])->select()->toArray();
- return json(['code'=> 0, 'data'=> $list, 'count'=> $count]);
- }
- /**
- * 项目清单
- */
- public function project(){
- $root_id = $this->root_id;
- $param = request()->only(['page'=> 1, 'limit'=> 15, 'keyword'=> '']);
- $where[] = ['root_id', '=', $root_id];
- $keyword = $param['keyword'];
- $list = SmartScreenProjectCate::with(['project'=> function($query) use ($keyword){
- if ($keyword) {
- $query->where('name', 'like', '%' . $keyword . '%')->with('employee');
- } else {
- $query->with('employee');
- }
- }])->withCount(['project'=> function($query) use ($keyword){
- $query->where('name', 'like', '%' . $keyword . '%')->with('employee');
- }])->where('root_id', '=', $root_id)->page($param['page'], $param['limit'])->select()->toArray();
- $count = SmartScreenProjectCate::where($where)->count();
- return json(['code'=> 0, 'data'=> $list, 'count'=> $count]);
- }
- /**
- * 获取设计师的所有客户
- */
- public function designer_cuslist()
- {
- $param = request()->only(['page' => 1, 'limit' => 15, 'keyword' => '']);
- $check = Employee::with(['org'])->where([['root_id', '=', $this->root_id], ['id', '=', $this->employee_id]])->find();
- if (!empty($check['org']) && $check['org']['org_type'] != 2) return json(['code' => 1, 'data' => [], 'msg' => '获取成功']);
- $orgids = orgSubIds($this->root_id);
- $where[] = ['org_id', 'in', $orgids];
- $where[] = ['designer_id|assigned_personnel', 'find in set', $this->employee_id];
- $where[] = ['state', 'not in', Customer::changeState('无效', 'chaos')];
- $orCondition = [];
- if (!empty($param['keyword'])) {
- $aec = new Aes(config('app.aec_key'), config('app.aec_iv'));
- $aecPhone = $aec->encrypt($param['keyword']);
- $orCondition = [
- [['name', 'like', '%'.$param['keyword'].'%']],
- [['phone', '=', $aecPhone]]
- ];
- }
- if (empty($orCondition))
- $list = Customer::with(['plandata'])->where($where)->field('id,name,community_name,sex,ext')->page($param['page'], $param['limit'])->order('assign_time desc')->select()->toArray();
- else
- $list = Customer::with(['plandata'])->where($where)->where(function ($query) use ($orCondition) {
- $query->whereOr($orCondition);
- })->field('id,name,community_name,sex,ext')->page($param['page'], $param['limit'])->order('assign_time desc')->select()->toArray();
- foreach ($list as &$val) {
- $imglist = CustomerWisdomImg::where(['customer_id' => $val['id']])->field('img')->select()->toArray();
- $val['img_cont'] = count($imglist);
- $val['vr_cont'] = !empty($val['plandata']['vrurl']) ? count($val['plandata']['vrurl']) : 0;
- $val['pdf_cont'] = !empty($val['plandata']['pdfurl']) ? count($val['plandata']['pdfurl']) : 0;
- $val['plandata']['imgurl'] = !empty($imglist) ? array_column($imglist,'img') : '';
- $housetype_arrow = '';
- if (!empty($val['ext'])) {
- $ext_data = json_decode($val['ext'], true);
- foreach ($ext_data as $k => $v) {
- if (isset($v['keyname']) && $v['keyname'] == 'housetype_arrow' && !empty($v['value'])) {
- $housetype_arrow = CustomerPortraitFieldSelect::where([['pid', '=', $v['id']], ['id', '=', $v['value']]])->value('name');
- }
- }
- }
- $val['housetype_arrow'] = $housetype_arrow;
- }
- $count = Customer::where($where)->count();
- return json(['code' => 0, 'data' => $list, 'count' => $count, 'msg' => '获取成功']);
- }
- /**
- * 客户的方案资料详情
- */
- public function planDetail($cid = null)
- {
- $cid = empty($cid) ? $this->customer_id : $cid;
- $orgids = orgSubIds($this->root_id);
- $customer = Customer::where([['id', '=', $cid], ['org_id', 'in', $orgids]])->find();
- if (empty($customer)) return json(['code' => 0, 'data' => [], 'msg' => '获取失败']);
- $data = DesignerCustomerPlandata::where([['root_id', '=', $this->root_id], ['designer_id', '=', $this->employee_id], ['customer_id', '=', $cid]])->find();
- if (empty($data)) $data = [];
- else $data = $data->toArray();
- $imgList = CustomerWisdomImg::where([['root_id', '=', $this->root_id], ['customer_id', '=', $cid]])->order('addtime asc')->column('img');
- $ali_oss_bindurl = config('app.ali_oss_bindurl');
- foreach ($imgList as $k => $img) {
- $imgList[$k] = 'https://' . $ali_oss_bindurl . '/' . $img;
- }
- $data['imgurl'] = $imgList;
- return json(['code' => 0, 'data' => $data, 'msg' => '获取成功']);
- }
- /**
- * 设计师编辑客户的方案资料
- */
- public function designer_editplan()
- {
- $param = request()->only(['customer_id' => 0, 'imgurl' => '', 'vrurl' => '', 'pdfurl' => '']);
- if (empty($param['customer_id'])) return json(['code' => 1, 'msg' => '参数错误']);
- $where[] = ['root_id', '=', $this->root_id];
- $where[] = ['designer_id', '=', $this->employee_id];
- $where[] = ['customer_id', '=', $param['customer_id']];
- $check = DesignerCustomerPlandata::where($where)->find();
- $vrstr = '';
- if (!empty($param['vrurl'])) {
- $vrlist = explode(',', $param['vrurl']);
- foreach ($vrlist as $val) {
- $vrstr .= vrlinkSet($val) . ',';
- }
- $vrstr = trim($vrstr, ',');
- }
- $save = [
- 'vrurl' => $vrstr,
- 'pdfurl' => $param['pdfurl']
- ];
- if (empty($check)) {
- $save['designer_id'] = $this->employee_id;
- $save['customer_id'] = $param['customer_id'];
- $save['root_id'] = $this->root_id;
- DesignerCustomerPlandata::create($save);
- } else {
- $save['id'] = $check->id;
- DesignerCustomerPlandata::update($save);
- }
- if (!empty($param['imgurl'])) {
- $imgList = explode(',', $param['imgurl']);
- $domain = config('app.ali_oss_bindurl');
- $replaceDomain = 'https://' . $domain . '/';
- $nowHad = CustomerWisdomImg::where([
- ['root_id', '=', $this->root_id],
- ['customer_id', '=', $param['customer_id']]
- ])->column('id');
- $updateId = [];
- foreach ($imgList as $v) {
- $v = str_replace($replaceDomain, '', $v);
- $save = [
- 'root_id' => $this->root_id,
- 'customer_id' => $param['customer_id'],
- 'img' => $v
- ];
- $hadid = CustomerWisdomImg::where($save)->value('id');
- if ($hadid) {
- $updateId[] = $hadid;
- } else {
- $customerWisdomImg = CustomerWisdomImg::create($save);
- $updateId[] = $customerWisdomImg->id;
- }
- }
- $delId = array_diff($nowHad, $updateId);
- if ($delId)
- CustomerWisdomImg::where([['id', 'in', $delId]])->delete();
- }
- return json(['code' => 0, 'msg' => '编辑成功']);
- }
- /**
- * 获取VR链接第一帧
- */
- public function get_vrimg($url)
- {
- $url = vrlinkSet($url);
- $data = ['vr_link' => $url, 'vr_img' => getFirstImg($url)];
- return json(['code' => 0, 'data' => $data, 'msg' => '获取成功']);
- }
- /**
- * 清空客户方案资料
- */
- public function delPlandata($cid)
- {
- $where[] = ['customer_id', '=', $cid];
- $where[] = ['root_id', '=', $this->root_id];
- $where[] = ['designer_id', '=', $this->employee_id];
- $check = DesignerCustomerPlandata::where($where)->find();
- if (empty($check)) return json(['code' => 1, 'msg' => '数据不存在']);
- $check->imgurl = $check->vrurl = $check->pdfurl = null;
- $check->save();
- CustomerWisdomImg::where([
- 'root_id' => $this->root_id,
- 'customer_id' => $cid,
- ])->delete();
- return json(['code' => 0, 'msg' => '清除成功']);
- }
- /*
- * 作品集户型
- */
- public function housetypelist()
- {
- $housetype = Housetype::where(['root_id' => $this->root_id])->field('id,name')->select();
- $decostyles = Decostyle::field('id,name')->where([['root_id', '=', $this->root_id], ['type', '=', 0]])->select();
- $data = ['housetype' => $housetype, 'decostyles' => $decostyles];
- return json(['code' => 0, 'data' => $data, 'msg' => '获取成功']);
- }
- /**
- * 设计师增加个人作品
- */
- public function designer_add_works()
- {
- $param = Request::only(['id' => 0, 'title', 'style_id' => 0, 'housetype_id' => 0, 'square', 'money', 'type', 'desc' => '', 'vr_case' => '']);
- if (strlen($param['title']) > 50) {
- return json(['code' => 1, 'msg' => '作品名称过长']);
- }
- $cover_img = $vrstr = null;
- if (!empty($param['vr_case']) && $param['type'] == 2) {
- $vrlist = explode(',', $param['vr_case']);
- foreach ($vrlist as $val) {
- $vrstr .= vrlinkSet($val) . ',';
- }
- $vrstr = trim($vrstr, ',');
- }
- if (!empty($param['desc']) && $param['type'] == 1) {
- $imgs = explode(',', $param['desc']);
- $cover_img = $imgs[0];
- }
- $add = [
- 'title' => $param['title'],
- 'housetype_id' => $param['housetype_id'],
- 'square' => $param['square'],
- 'money' => $param['money'],
- 'type' => $param['type'],
- 'desc' => $param['desc'],
- 'cover_img' => $cover_img,
- 'vr_case' => $vrstr,
- 'style_id' => $param['style_id']
- ];
- if ($param['id']) {
- $check = DesignerCollectionWorks::where([['root_id', '=', $this->root_id], ['employee_id', '=', $this->employee_id], ['id', '=', $param['id']]])->find();
- if (empty($check)) return json(['code' => 1, 'msg' => '数据不存在']);
- $add['id'] = $param['id'];
- DesignerCollectionWorks::update($add);
- } else {
- $empdata = Employee::with(['org'])->where([['root_id', '=', $this->root_id], ['id', '=', $this->employee_id]])->field('id,org_id')->find();
- $add['employee_id'] = $this->employee_id;
- $add['root_id'] = $this->root_id;
- $add['designer_id'] = $empdata['org']['org_type'] == 2 ? $this->employee_id : 0;
- $ms = DesignerCollectionWorks::create($add);
- }
- return json(['code' => 0, 'msg' => '编辑成功']);
- }
- /**
- * 设计师个人作品详情
- */
- public function designer_worksdet()
- {
- $param = Request::only(['id']);
- $data = DesignerCollectionWorks::with(['decostyle', 'housetype'])->where([['root_id', '=', $this->root_id], ['employee_id', '=', $this->employee_id], ['id', '=', $param['id']]])->find();
- if (empty($data)) return json(['code' => 1, 'msg' => '数据不存在']);
- return json(['code' => 0, 'data' => $data, 'msg' => '获取成功']);
- }
- /**
- * 设计师作品集列表
- */
- public function designer_work()
- {
- $param = Request::only(['page' => 1, 'limit' => 10, 'keyword', 'type', 'housetype_id']);
- $where[] = ['root_id', '=', $this->root_id];
- $where[] = ['employee_id', '=', $this->employee_id];
- if (!empty($param['keyword'])) $where[] = ['title', 'like', '%' . $param['keyword'] . '%'];
- if (!empty($param['type'])) $where[] = ['type', '=', $param['type']];
- if (!empty($param['housetype_id'])) $where[] = ['housetype_id', '=', $param['housetype_id']];
- $list = DesignerCollectionWorks::with(['decostyle', 'housetype'])->where($where)->page($param['page'], $param['limit'])->select()->toArray();
- foreach ($list as $key => $val) {
- if ($val['type'] == 2 && !empty($val['vr_case'])) {
- $list[$key]['cover_img'] = !empty($val['vr_case'][0]['vr_img']) ? $val['vr_case'][0]['vr_img'] : '';
- }
- }
- $count = DesignerCollectionWorks::where($where)->count();
- return json(['code' => 0, 'data' => $list, 'count' => $count, 'msg' => '获取成功']);
- }
- /**
- * 设计师个人作品集户型分类
- */
- public function designer_housetype()
- {
- $dw[] = ['root_id', '=', $this->root_id];
- $dw[] = ['employee_id', '=', $this->employee_id];
- $ids = DesignerCollectionWorks::where($dw)->group('housetype_id')->column('housetype_id');
- $list = Housetype::where([['root_id', '=', $this->root_id], ['id', 'in', $ids]])->column('id,name');
- return json(['code' => 0, 'data' => $list, 'msg' => '获取成功']);
- }
- /**
- * 内部资料
- */
- public function private_data(){
- $page = input('page', 1, 'intval');
- $limit = input('limit', 10, 'intval');
- $keyword = input('keyword', '', 'trim');
- $where[] = ['BuildingHousetype.root_id', '=', $this->root_id];
- if ($keyword) {
- $community_id = Community::where([['root_id', '=', $this->root_id], ['name', 'like', '%' . $keyword . '%']])->column('id');
- $building_id = Building::where([['root_id', '=', $this->root_id], ['community_id', 'in', $community_id]])->column('id');
- $where[] = ['BuildingHousetype.building_id', 'in', $building_id];
- }
- $list = BuildingHousetype::has('file', '>', 0)->with(['file', 'building'])->where($where)->page($page, $limit)->select()->toArray();
- $count = BuildingHousetype::has('file', '>', 0)->where($where)->count();
- return json(['code'=> 0, 'data'=> $list, 'msg'=> '获取成功', 'count'=> $count]);
- }
- }
|