'ios']); $type = $param['type']=='ios' ? 'iosVersion' : 'androidVersion'; $where = [['code','in',['ossImgSetting','cutImgSize',$type]]]; $data = AppSetting::where($where)->select()->toArray(); $arr = []; foreach ($data as $v) { if ($v['content']) $arr = array_merge($arr,json_decode($v['content'],true)); } $data = $arr; //图片oss配置 $arr['ali_oss_access_key_id'] = config('app.ali_oss_access_key_id'); $arr['ali_oss_access_key_secret'] = config('app.ali_oss_access_key_secret'); $arr['ali_oss_end_point'] = config('app.ali_oss_end_point'); $arr['ali_oss_bucket'] = config('app.ali_oss_bucket'); $arr['ali_oss_bindurl'] = config('app.ali_oss_bindurl'); $arr = json_encode($arr); $key = 'zqxggetuserdataa'; $iv = 'zqxgivaesyoudata'; $str = openssl_encrypt($arr, 'AES-128-CBC', $key,OPENSSL_RAW_DATA,$iv); $str = base64_encode($str); return json(['code'=>0,'data'=>$str,'msg'=>'','str'=>$str]); } /** * 切换店面列表 * 用手机号关联不同店面 */ public function company() { //关联店面 $phones = Employee::where([['id','=',$this->employeeId]])->value('phone'); $employees = Employee::where([['phone', '=', $phones],['uid','>',0], ['state', '=', '在职'], ['disable', '=', 0]])->column('root_id, is_manager, org_id,name,uid,phone', 'root_id'); $orgs = Org::where([['id', 'in', array_column($employees, 'org_id')]])->column('id,name', 'id'); $notifyList = Miniprogram::where([['root_id', 'in', array_column($employees, 'root_id')]])->column('root_id,notify', 'root_id'); $companyList = Company::with(['brand'])->where([['root_id', 'in', array_column($employees, 'root_id')]])->select()->visible(['company_name', 'root_id', 'status', 'end_date','logo','company_group'])->toArray(); // $aec = new Aec(config('app.aec_key'), config('app.aec_iv')); foreach ($companyList as &$item) { $item['client_type'] = isset($notifyList[$item['root_id']]) ? $notifyList[$item['root_id']]['notify'] : ''; $item['is_manager'] = isset($employees[$item['root_id']]) ? $employees[$item['root_id']]['is_manager'] : 0; $item['org_name'] = (isset($employees[$item['root_id']]) && isset($orgs[$employees[$item['root_id']]['org_id']])) ? $orgs[$employees[$item['root_id']]['org_id']]['name'] : ''; if ($item['status'] == 1) { $item['off'] = 1; $item['off_remark'] = '账号被禁用'; } elseif ($item['end_date'] < date('Y-m-d')) { $item['off'] = 1; $item['off_remark'] = '账号已过期'; } else { $item['off'] = 0; $item['off_remark'] = '账号正常'; } if(!empty($item['logo']) && !empty($item['brand'])){ $item['brand']['logo']=$item['logo']; } $item['this'] = $item['root_id']==$this->rootId ? 1 : 0; $item['name'] = isset($employees[$item['root_id']]) ? $employees[$item['root_id']]['name'] : ''; //手机号 $item['phone'] = isset($employees[$item['root_id']]) ? $employees[$item['root_id']]['phone'] : ''; if ($item['phone']) $item['phone'] = substr_replace($aec->decrypt($item['phone']), '******', 3, 6); $item['uid'] = isset($employees[$item['root_id']]) ? $employees[$item['root_id']]['uid'] : 0; } //头像 $uids = array_column($companyList,'uid'); $imgs = User::where([['id','in',$uids]])->column('headimgurl','id'); //所属集团 $pids = array_column($companyList,'company_group'); $pname = Company::where([['id','in',$pids]])->column('company_name','id'); foreach ($companyList as $key => $value) { $companyList[$key]['headimgurl'] = $value['uid']&&isset($imgs[$value['uid']]) ? $imgs[$value['uid']] : ''; $companyList[$key]['p_name'] = $value['company_group']&&isset($pname[$value['company_group']]) ? $pname[$value['company_group']] : ''; } return json(['code' => 0, 'data' => $companyList]); } /** * 切换店面 */ public function changeShop() { $param = Request::only(['root_id'=>0]); $company = Company::where('root_id',$param['root_id'])->findOrEmpty(); if ($company->isEmpty() || $company->end_date < date('Y-m-d') || $company->status == 1) return json(['code' => 1, 'data' =>'切换失败','msg'=>'切换失败']); // $y_phone = Employee::where('id',$this->employeeId)->value('phone'); $operaters = Employee::where([['root_id','=',$param['root_id']],['phone','=',$y_phone],['uid','>',0],['state','=','在职']])->order('last_login_time desc,updatetime desc')->findOrEmpty(); if($operaters->isEmpty()) return json(['code' => 1, 'data' =>'切换失败','msg'=>'切换失败']); $t = [ 'employee_id' => $operaters->id, 'root_id' => $operaters->root_id, 'uid' => $operaters->uid, 'is_manager'=>$operaters->is_manager ]; //信息加密 $aes = new Aes(config('app.jwt_key')); $key = $aes->encrypt(http_build_query($t)); // token数据设置 $payload = array( "iss" => "https://" . request()->domain(), "aud" => 'app', "iat" => time(), "nbf" => time(), "data" => $key ); $data['token'] = JWT::encode($payload, config('app.jwt_key')); $head = User::where([['id', '=', $operaters->uid]])->value('headimgurl'); $data['check']['headimgurl'] = $head ?: ''; $data['company_name'] = $operaters->company->name; $data['name'] = $operaters->name; $data['phone'] = $operaters->phone; //默认创建一个根目录文件夹 $floder = VrFloder::where([['root_id', '=', $operaters->root_id], ['create_user', '=', $operaters->id], ['fld_type', '=', 1], ['depth', '=', 0]])->findOrEmpty(); if ($floder->isEmpty()) { //添加一个根目录 VrFloder::insert([ 'fld_name' => '我的', 'createtime' => time(), 'vr_num' => 0, 'fld_type' => 1, 'create_user' => $operaters->id, 'lft' => 1, 'rgt' => 2, 'depth' => 0, 'root_id' => $operaters->root_id ]); } $operaters->last_login_time = date('Y-m-d H:i:s');//最近登陆时间 $operaters->save(); return success('获取成功', $data); } /** * app工作台顶补轮播图 * skip 0不跳 1跳转h5 */ public function getTopBrana() { $ali_oss_bindurl = config('app.ali_oss_bindurl'); if ($this->rootId == 23 || $this->rootId == 1027) { $data = [ 'url' => 'https://' . $ali_oss_bindurl . '/' .'Material/6497f97f79690.png', 'skip' => 1 ]; }else{ $data = [ 'url' => 'https://' . $ali_oss_bindurl . '/' .'Material/649109c90cd6d.jpg', 'skip' => 0 ]; } return success('获取成功', $data); } /** * 安卓手机品牌设置 * phoneType 1=华为、2=荣耀、3=小米、4=OPPO、5=vivo * OPPO: 13.0 = /Music/Recordings/Call Recordings */ public function getMobileBrand() { $param = Request::only(['phoneType'=>0,'systemVersion'=>0]); if(!$param['phoneType'] || !$param['systemVersion']) return json(['code'=>0,'data'=>'']); $mobile_brand = [1=>'华为',2=>'荣耀',3=>'小米',4=>'OPPO',5=>'VIVO']; //未知品牌手机 if(!isset($mobile_brand[$param['phoneType']])) return json(['code'=>0,'data'=>'']); $version = [ 26 => [ 1 => '/Sounds/CallRecord', 2 => '/Sounds/CallRecord', 3=> '/MIUI/sound_recorder/call_rec', 4 => '/Recordings', 5 => '/Record/Call' ], 31 => [ 1 => '/Sounds/CallRecord', 2 => '/Sounds/CallRecord', 3=> '/MIUI/sound_recorder/call_rec', 4 => '/Recordings', 5 => '/Recordings/Record/Call' ], 33 => [ 1 => '/Sounds/CallRecord', 2 => '/Sounds/CallRecord', 3=> '/MIUI/sound_recorder/call_rec', 4 => '/Music/Recordings/Call Recordings', 5 => '/Recordings/Record/Call' ] ]; if (isset($version[$param['systemVersion']])) return json(['code'=>0,'data'=>$version[$param['systemVersion']][$param['phoneType']]]); //未查询到版本号 使用最接近的版本号 $keys = array_keys($version); rsort($keys); if($param['systemVersion']0,'data'=>'']); $res = ''; foreach ($keys as $val) { if($param['systemVersion'] > $val){ $res = $version[$val][$param['phoneType']]; } } return json(['code'=>0,'data'=>$res]); } /** * 保存录音文件 * length=通话时长 * size=文件大小 */ public function setMusicFile() { $param = Request::only(['customer_id'=>0,'url'=>'','size'=>0,'length'=>0]); if(!$param['customer_id'] || !$param['url']) return json(['code'=>1,'msg'=>'保存失败']); $where = [['customer_id','=',$param['customer_id']],['employee_id','=',$this->employeeId],['data_type','=','mobile_call']]; $info = CustomerVisitLog::where($where)->order('id desc')->findOrEmpty(); if($info->isEmpty()) return json(['code'=>1,'msg'=>'保存失败']); //检测录音文件 if(!ossFileExist($param['url'])) return json(['code'=>1,'msg'=>'通话录音文件不存在']); if(strpos($info->remark,'#')===false) $info->remark = $info->remark.',通话时长'.$param['length'].'秒#'.$param['url']; $info->save(); //修改通话时长 $log = OutCallLog::where([['customer_id','=',$param['customer_id']],['employee_id','=',$this->employeeId]])->order('id desc')->findOrEmpty(); if(!$log->isEmpty()){ $log->billsec = $param['length']; $log->fsize = $param['size']; $log->url = config('app.ali_oss_bindurl').$param['url']; $log->status = 1; $log->save(); } return json(['code'=>0,'data'=>'保存完成']); } }