Group.php 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547
  1. <?php
  2. declare(strict_types=1);
  3. namespace app\mobile\controller;
  4. use app\model\VrFloder;
  5. use app\model\VrGroup;
  6. use app\model\VrView;
  7. use app\model\Employee;
  8. use app\model\User;
  9. use think\facade\Request;
  10. use vr\Krpano;
  11. use OSS\OssClient;
  12. use app\model\VrHotspot;
  13. use think\facade\Queue;
  14. use app\model\AppSetting;
  15. use app\model\Wechat;
  16. use app\model\Miniprogram;
  17. use toolkits\Aec;
  18. use app\model\Building;
  19. use app\model\BuildingHousetype;
  20. use app\model\BuildingProgress;
  21. class Group extends Base
  22. {
  23. /**
  24. * 个人中心-内容管理 列表
  25. */
  26. public function myContentList()
  27. {
  28. //固定5个倒序
  29. $res = VrGroup::where([['emp_id','=',$this->employeeId],['status','=',2]])->limit(5)->order('id desc')->field('id,pic_path,title,sid,status')->select()->toArray();
  30. //今日新增数量
  31. $count = VrGroup::where([['emp_id','=',$this->employeeId],['createtime','>=',strtotime(date('Y-m-d'))]])->count();
  32. return json(['code'=>0,'data'=>$res,'count'=>$count,'msg'=>'']);
  33. }
  34. /**
  35. * 作品列表
  36. */
  37. public function list()
  38. {
  39. $param = Request::only(['floder_id'=>0,'limit'=>10,'page'=>1,'status'=>'']);
  40. $where = [
  41. ['floder_id','=',$param['floder_id']],
  42. ['emp_id','=',$this->employeeId],
  43. ['status','<>',0]
  44. ];
  45. if($param['status']!=='') $where[] = ['status','=',$param['status']];
  46. $res = VrGroup::where($where)->page((int)$param['page'],(int)$param['limit'])->order('id desc')->select()->toArray();
  47. $count = VrGroup::where($where)->count();
  48. return json(['code'=>0,'data'=>$res,'msg'=>'']);
  49. }
  50. /**
  51. * 获取草稿箱作品
  52. */
  53. public function getDraftsList()
  54. {
  55. $param = Request::only(['page'=>1,'limit'=>10]);
  56. $where = [
  57. ['status','=',0],
  58. ['emp_id','=',$this->employeeId]
  59. ];
  60. $data = VrGroup::where($where)->field('id,pic_path,updatetime,title,sid,status')->order('id desc')->page((int)$param['page'],(int)$param['limit'])->select()->toArray();
  61. foreach ($data as $k => $v) {
  62. $data[$k]['updatetime'] = $v['updatetime'] ? date('Y.m.d H:i',strtotime($v['updatetime'])) : '';
  63. }
  64. $count = VrGroup::where($where)->count();
  65. return json(['code'=>0,'data'=>$data,'count'=>$count]);
  66. }
  67. /**
  68. * 获取文件夹直属作品
  69. */
  70. public function getGroupList()
  71. {
  72. $param = Request::only(['page'=>1,'limit'=>10,'id'=>0]);
  73. $where = [
  74. ['floder_id','=',$param['id']],
  75. ['root_id','=',$this->rootId],
  76. ['status','<>',0]
  77. ];
  78. $data = VrGroup::where($where)->field('id,pic_path,updatetime,title,sid,status')->page((int)$param['page'],(int)$param['limit'])->select()->toArray();
  79. foreach ($data as $k => $v) {
  80. $data[$k]['updatetime'] = $v['updatetime'] ? date('Y.m.d H:i',strtotime($v['updatetime'])) : '';
  81. }
  82. $count = VrGroup::where($where)->count();
  83. return json(['code'=>0,'data'=>$data,'count'=>$count]);
  84. }
  85. /**
  86. * 获取作品详情
  87. */
  88. public function getGroupRead()
  89. {
  90. $param = Request::only(['id'=>0]);
  91. $where = [
  92. ['id','=',$param['id']],
  93. ['root_id','=',$this->rootId],
  94. ['emp_id','=',$this->employeeId]
  95. ];
  96. $info = VrGroup::with(['views'=>function($query){
  97. $query->order('sort asc,id asc');
  98. }])->where($where)->findOrEmpty();
  99. if($info->isEmpty()) return json(['code'=>1,'data'=>'获取失败','msg'=>'获取失败']);
  100. $where = [
  101. ['vr_group_id','=',$info->id]
  102. ];
  103. $views = VrView::with(['hotspot'])->where($where)->order('sort asc')->select()->toArray();
  104. $ali_oss_bindurl = config('app.vr_ali_oss_bindurl');
  105. $url = 'https://' . $ali_oss_bindurl;
  106. foreach ($views as $k => $v) {
  107. $views[$k]['vr_path'] = $url.'/'.$v['structure'];
  108. foreach ($v['hotspot'] as $k2 => $v2) {
  109. $arr = [];
  110. $arr1 = $v2['embedValue'] ? explode('|',$v2['embedValue']) : [];
  111. foreach ($arr1 as $v3) {
  112. $arr1_1 = explode(',',$v3);
  113. $arr[] = ['ath'=>$arr1_1[0],'atv'=>$arr1_1[1]];
  114. }
  115. $v2['embedValue'] = $arr;
  116. $arr2 = $v2['titlePosition'] ? explode(',',$v2['titlePosition']) : [];
  117. $v2['titlePosition'] = $arr2 ? ['ath'=>$arr2[0],'atv'=>$arr2[1]] : [];
  118. $json = json_encode($v2);
  119. $views[$k]['hotspot'][$k2] = ['content'=>$json];
  120. unset($json);
  121. }
  122. }
  123. $info->views = $views;
  124. //头像手机号二维码
  125. $emp = Employee::where('id',$this->employeeId)->field('uid,qrcode,phone')->find();
  126. $emp->headimgurl = User::where('id',$emp->uid)->value('headimgurl');
  127. return json(['code'=>0,'data'=>$info,'emp'=>$emp]);
  128. }
  129. /**
  130. * 编辑作品
  131. */
  132. public function editGroup()
  133. {
  134. $param = Request::only(['id'=>0,'title'=>'','logo_path'=>'','desc'=>'','size'=>'','pic_path'=>'','floder_id'=>0]);
  135. $where = [
  136. ['id','=',$param['id']],
  137. ['root_id','=',$this->rootId],
  138. ['emp_id','=',$this->employeeId]
  139. ];
  140. $info = VrGroup::where($where)->findOrEmpty();
  141. if($info->isEmpty()) return json(['code'=>1,'data'=>'','msg'=>'编辑失败']);
  142. unset($param['id']);
  143. if(empty($param['title'])) unset($param['title']);
  144. if(empty($param['logo_path'])) unset($param['logo_path']);
  145. if(empty($param['desc'])) unset($param['desc']);
  146. if(empty($param['size'])) unset($param['size']);
  147. if(empty($param['pic_path'])) unset($param['pic_path']);
  148. foreach ($param as $k => $v) {
  149. $info->$k = $v;
  150. }
  151. $info->updatetime = time();
  152. $info->save();
  153. return json(['code'=>0,'data'=>'保存完成','msg'=>'保存完成']);
  154. }
  155. /**
  156. * 发布作品
  157. */
  158. public function releaseGroup()
  159. {
  160. $param = Request::only(['id'=>0,'floder_id'=>0]);
  161. $where = [
  162. ['id','=',$param['id']],
  163. ['root_id','=',$this->rootId],
  164. ['emp_id','=',$this->employeeId]
  165. ];
  166. $info = VrGroup::where($where)->findOrEmpty();
  167. //2023-06-02 修改 可以重复编辑 可以重复发布
  168. // $msg = $info->isEmpty() ? '发布失败' : ($info->status==2 ? '作品已发布' : false);
  169. $msg = $info->isEmpty() ? '发布失败' : false;
  170. if($msg !== false) return json(['code'=>1,'data'=>$msg,'msg'=>$msg]);
  171. $switch = AppSetting::where([['code','=','auditSwitch'],['root_id','=',$this->rootId],['content','=',1]])->findOrEmpty();
  172. $info->status = $switch->isEmpty() ? 2 : 1;
  173. $info->publish_time = time();
  174. $info->review_time = time();
  175. if($param['floder_id']) $info->floder_id = $param['floder_id'];
  176. $info->save();
  177. $msg = $switch->isEmpty() ? '发布成功' : '发布完成,等待审核';
  178. if($info->status==2) dataStatistics($this->rootId,'group_count',1,'inc');//manage应用首页统计数据
  179. return json(['code'=>0,'data'=>$msg,'msg'=>$msg]);
  180. }
  181. /**
  182. * 创建一个作品
  183. */
  184. public function saveGroup()
  185. {
  186. $param = Request::only(['floder_id'=>0]);
  187. $sid = md5(time().'@'.mt_rand(1,99999999));
  188. $id = VrGroup::insertGetId([
  189. 'title'=>'',
  190. 'createtime'=>time(),
  191. 'status'=>0,
  192. 'updatetime'=>time(),
  193. 'emp_id'=>$this->employeeId,
  194. 'org_path'=>'',
  195. 'logo_path'=>'',
  196. 'floder_id'=>$param['floder_id'],
  197. 'desc'=>'',
  198. 'pic_path'=>'',
  199. 'view_count'=>0,
  200. 'root_id'=>$this->rootId,
  201. 'size'=>0,
  202. 'sid'=>$sid
  203. ]);
  204. return json(['code'=>0,'id'=>$id,'sid'=>$sid]);
  205. }
  206. /**
  207. * 保存场景
  208. * id 作品id
  209. * size 图片大小
  210. */
  211. public function saveImg()
  212. {
  213. $param = Request::only(['urls'=>'','id'=>0,'size'=>0,'view_title'=>'']);
  214. //垃圾数据
  215. if(empty($param['urls']) || strpos($param['urls'],'.jpg')===false) return json(['code'=>1,'data'=>'创建失败','msg'=>'创建失败']);
  216. //oss文件是否存在
  217. if(!$this->ossCheck($param['urls'])) return json(['code'=>1,'data'=>'文件不存在','msg'=>'文件不存在']);
  218. $group_info = VrGroup::where([['emp_id','=',$this->employeeId],['id','=',$param['id']]])->findOrEmpty();
  219. if($group_info->isEmpty() || !$param['size']) return json(['code'=>1,'data'=>'创建失败','msg'=>'创建失败']);
  220. $floder = explode('/',$param['urls']);//文件夹结构
  221. $img = end($floder);//文件名+后缀
  222. $img_arr = explode('.',$img);
  223. $vid = VrView::insertGetId([
  224. 'view_title'=>$param['view_title'],
  225. 'createtime'=>time(),
  226. 'updatetime'=>time(),
  227. 'pic_path'=>$param['urls'],//封面图
  228. 'emp_id'=>$this->employeeId,
  229. 'org_path'=>'',
  230. 'size'=>$param['size'],
  231. 'sort'=>9999,
  232. 'vr_group_id'=>$param['id'],
  233. 'vr_path'=>$img_arr[0],
  234. 'logo_path'=>'',
  235. 'structure'=>implode('/',array_diff($floder,[$img])).'/',
  236. 'root_id' => $this->rootId,
  237. 'cut_img_status'=>0
  238. ]);
  239. //作品大小
  240. $group_info->size = $group_info->size ? $group_info->size+$param['size'] : $param['size'];
  241. $group_info->view_count = $group_info->view_count ? $group_info->view_count+1 : 1;
  242. if (empty($group_info->pic_path)) $group_info->pic_path = $param['urls'];
  243. $group_info->save();
  244. //入队列然后返回
  245. $this->queued($vid);
  246. dataStatistics($this->rootId,'use_count',$param['size'],'inc');//manage应用首页统计数据
  247. return json(['code'=>0,'id'=>$param['id'],'sid'=>$group_info->sid]);
  248. }
  249. /**
  250. * 入切图队列
  251. */
  252. public function queued($id)
  253. {
  254. $jobHandlerClassName = 'app\jobs\CutImg';
  255. $jobQueueName = 'cutimg2';
  256. $orderData = [ //这个是需要传到消费者的数据
  257. 'view_id'=>$id
  258. ];
  259. $isPushed = Queue::later(0, $jobHandlerClassName, $orderData, $jobQueueName);
  260. return true;
  261. }
  262. /**
  263. * 编辑作品logo
  264. */
  265. public function editGroupLogo()
  266. {
  267. $param = Request::only(['id'=>0,'logo_path'=>'']);
  268. $where = [
  269. ['id','=',$param['id']],
  270. ['root_id','=',$this->rootId],
  271. ['emp_id','=',$this->employeeId]
  272. ];
  273. $info = VrGroup::where($where)->findOrEmpty();
  274. if($info->isEmpty()) return json(['code'=>1,'data'=>'','msg'=>'编辑失败']);
  275. $info->logo_path = $param['logo_path'];
  276. $info->save();
  277. return json(['code'=>0,'data'=>'保存完成','msg'=>'保存完成']);
  278. }
  279. /**
  280. * 编辑作品遮罩
  281. */
  282. public function editGroupMask()
  283. {
  284. $param = Request::only(['id'=>0,'mask'=>'','times'=>0]);
  285. $where = [
  286. ['id','=',$param['id']],
  287. ['root_id','=',$this->rootId],
  288. ['emp_id','=',$this->employeeId]
  289. ];
  290. $info = VrGroup::where($where)->findOrEmpty();
  291. if($info->isEmpty()) return json(['code'=>1,'data'=>'','msg'=>'编辑失败']);
  292. $info->mask = $param['mask'];
  293. $info->times = $param['times'];//放大缩小倍数
  294. $info->save();
  295. return json(['code'=>0,'data'=>'保存完成','msg'=>'保存完成']);
  296. }
  297. /**
  298. * 作品场景排序
  299. */
  300. public function groupOrder()
  301. {
  302. $param = Request::only(['id'=>0,'order'=>'']);
  303. $where = [
  304. ['id','=',$param['id']],
  305. ['root_id','=',$this->rootId],
  306. ['emp_id','=',$this->employeeId]
  307. ];
  308. $info = VrGroup::where($where)->findOrEmpty();
  309. if($info->isEmpty() || empty($param['order'])) return json(['code'=>1,'data'=>'','msg'=>'编辑失败']);
  310. $orders = explode(',',$param['order']);
  311. foreach ($orders as $k => $v) {
  312. VrView::where([['vr_group_id','=',$param['id']],['id','=',$v]])->update(['sort'=>$k]);
  313. }
  314. return json(['code'=>0,'data'=>'排序完成','msg'=>'排序完成']);
  315. }
  316. /**
  317. * 编辑热点
  318. */
  319. public function editHotspot()
  320. {
  321. $param = Request::only(['id'=>0,'hotspot'=>'']);
  322. $where = [
  323. ['id','=',$param['id']],
  324. ['emp_id','=',$this->employeeId]
  325. ];
  326. $info = VrHotspot::where($where)->findOrEmpty();
  327. if($info->isEmpty() || empty($param['hotspot'])) return json(['code'=>1,'data'=>'','msg'=>'编辑失败']);
  328. $arr = $this->checkArr($param['hotspot']);
  329. foreach ($arr as $key => $value) {
  330. $info->$key = $value;
  331. }
  332. $info->save();
  333. return json(['code'=>0,'data'=>'保存完成','msg'=>'保存完成']);
  334. }
  335. private function checkArr($json){
  336. $arr = json_decode($json,true);
  337. $data = [];
  338. foreach ($arr as $key => $val) {
  339. if ($key=='embedValue') {
  340. $embedValue = [];
  341. foreach ($val as $value) {
  342. $embedValue[] = $value['ath'].','.$value['atv'];
  343. }
  344. $data['embedValue'] = $embedValue ? implode('|',$embedValue) : '';
  345. }elseif ($key=='titlePosition' && !empty($arr[$key])) {
  346. $data['titlePosition'] = $val['ath'].','.$val['atv'];
  347. }else{
  348. $data[$key] = $val;
  349. }
  350. }
  351. if(isset($data['isSelected'])) unset($data['isSelected']);
  352. $data['embedType'] = !empty($data['embedValue']) ? 1 : 0;
  353. return $data;
  354. }
  355. /**
  356. * 添加热点
  357. */
  358. public function addHotspot()
  359. {
  360. $param = Request::only(['view_id'=>0,'hotspot'=>'']);
  361. $where = [
  362. ['id','=',$param['view_id']],
  363. ['emp_id','=',$this->employeeId]
  364. ];
  365. $info = VrView::where($where)->findOrEmpty();
  366. if($info->isEmpty() || empty($param['hotspot'])) return json(['code'=>1,'data'=>'','msg'=>'添加失败']);
  367. $save = [
  368. 'view_id'=>$param['view_id'],
  369. 'emp_id'=>$this->employeeId,
  370. 'root_id'=>$this->rootId
  371. ];
  372. $arr = $this->checkArr($param['hotspot']);
  373. $save = array_merge($save,$arr);
  374. $res = VrHotspot::create($save);
  375. return json(['code'=>0,'data'=>$res,'msg'=>'保存完成']);
  376. }
  377. /**
  378. * 删除热点
  379. */
  380. public function delHotspot()
  381. {
  382. $param = Request::only(['id'=>0]);
  383. $where = [
  384. ['id','=',$param['id']],
  385. ['emp_id','=',$this->employeeId]
  386. ];
  387. $info = VrHotspot::where($where)->findOrEmpty();
  388. if($info->isEmpty()) return json(['code'=>1,'data'=>'','msg'=>'删除失败']);
  389. VrHotspot::where($where)->delete();
  390. return json(['code'=>0,'data'=>'删除完成','msg'=>'删除完成']);
  391. }
  392. /**
  393. * 删除作品
  394. */
  395. public function delGroup()
  396. {
  397. $param = Request::only(['id'=>0]);
  398. $where = [
  399. ['id','=',$param['id']],
  400. ['root_id','=',$this->rootId],
  401. ['emp_id','=',$this->employeeId]
  402. ];
  403. $info = VrGroup::where($where)->findOrEmpty();
  404. $msg = $info->isEmpty() ? '删除失败' : ($info->status==1 ? '审核中无法删除' : false);
  405. if($msg !== false) return json(['code'=>1,'data'=>'','msg'=>$msg]);
  406. //关联楼盘户型之后不让删除
  407. $del_arr = ['app\model\Building'=>'营销楼盘','app\model\BuildingHousetype'=>'楼盘户型','app\model\BuildingProgress'=>'楼盘进度','app\model\ConstructionRecord'=>'在施工地'];
  408. $check_res = false;
  409. foreach ($del_arr as $key => $value) {
  410. $obj = new $key();
  411. $del_where = [['vr_group_ids','=',$param['id']]];
  412. $check = $obj->where($del_where)->value('id');
  413. if($check){
  414. $check_res = $value;
  415. break;
  416. }
  417. }
  418. if($check_res !== false) return json(['code'=>1,'data'=>'','msg'=>'已经关联'.$check_res.',无法删除']);
  419. //所有场景
  420. $where1 = [['vr_group_id','=',$info->id]];
  421. $views = VrView::where($where1)->column('id,cut_img_size,size,vr_path,structure');
  422. //所有热点
  423. $vids = array_column($views,'id');
  424. $where2 = [['view_id','in',$vids]];
  425. VrGroup::where($where)->delete();
  426. VrView::where($where1)->delete();
  427. VrHotspot::where($where2)->delete();
  428. //删除oss文件
  429. foreach ($views as $val) {
  430. $file = $val['structure'];
  431. $this->delOss($val['structure'],$val['vr_path']);
  432. }
  433. dataStatistics($this->rootId,'group_count',1,'dec');//manage应用首页统计数据
  434. dataStatistics($this->rootId,'use_count',$info->size,'dec');//manage应用首页统计数据
  435. return json(['code'=>0,'data'=>'删除完成','msg'=>'删除完成']);
  436. }
  437. /**
  438. * 删除oss
  439. */
  440. public function delOss($str,$name)
  441. {
  442. $arr = ['image_b','image_d','image_f','image_l','image_r','image_u','preview','thumb',$name];
  443. $objects = [];
  444. foreach ($arr as $v) {
  445. $objects[] = $str.$v.'.jpg';
  446. }
  447. $accessKeyId = config('app.vr_ali_oss_access_key_id');
  448. $accessKeySecret = config('app.vr_ali_oss_access_key_secret');
  449. $endpoint = config('app.vr_ali_oss_end_point');
  450. $bucket = config('app.vr_ali_oss_bucket');
  451. $oss = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
  452. try {
  453. $exist = $oss->deleteObjects($bucket, $objects);
  454. //删除空文件夹 oss自动删除空文件夹
  455. // $res = $oss->deleteBucket($bucket, $str);
  456. return true;
  457. } catch (OssException $e) {
  458. return false;
  459. }
  460. }
  461. /*
  462. * oss检测文件
  463. */
  464. private function ossCheck($file)
  465. {
  466. // $file = 'vr/2023/03/18/9F8E30932ECE44EB9C7FBC87A44FBD3D/9F8E30932ECE44EB9C7FBC87A44FBD3D.jpg';
  467. $accessKeyId = config('app.vr_ali_oss_access_key_id');
  468. $accessKeySecret = config('app.vr_ali_oss_access_key_secret');
  469. $endpoint = config('app.vr_ali_oss_end_point');
  470. $bucket = config('app.vr_ali_oss_bucket');
  471. $oss = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
  472. try {
  473. $exist = $oss->doesObjectExist($bucket, $file);
  474. return $exist;
  475. } catch (OssException $e) {
  476. return false;
  477. }
  478. }
  479. /**
  480. * 作品转移
  481. */
  482. public function shiftGroup()
  483. {
  484. $param = Request::only(['id'=>0,'floder_id'=>0]);
  485. $where = [
  486. ['id','=',$param['id']],
  487. ['root_id','=',$this->rootId],
  488. ['emp_id','=',$this->employeeId]
  489. ];
  490. $info = VrGroup::where($where)->findOrEmpty();
  491. if($info->isEmpty()) return json(['code'=>1,'data'=>'','msg'=>'转移失败']);
  492. $info->floder_id = $param['floder_id'];
  493. $info->save();
  494. return json(['code'=>0,'data'=>'转移完成','msg'=>'转移完成']);
  495. }
  496. /**
  497. * 获取小程序分享信息
  498. * pages/other/other?ctp=wzh68h&uid=123&type=vr&vrurl=https%3A//saastest.zhuangqixiaoguan.com/vr/%23/fe6d15f92136038ac49882238b3392d3/0/WmlRbllhTnl0MWtTMTFpSzkvcGRoUT09&emp=1
  499. */
  500. public function getShareApplet($id)
  501. {
  502. $aec = new Aec(config('app.aec_key'), config('app.aec_iv'));
  503. $where = [
  504. ['id','=',$id],
  505. ['root_id','=',$this->rootId]
  506. ];
  507. $info = VrGroup::where($where)->field('id,title,sid,pic_path,emp_id')->findOrEmpty();
  508. $info->content = '';
  509. $info->url = config('app.vr_show_domain').$info->sid.'/'.'0/'.$aec->encrypt($this->rootId.'#'.$info->emp_id);
  510. $info->thumbImg = $info->pic_path;
  511. $info->appid = Wechat::where('id',3)->value('account');
  512. $info->path = '';
  513. $info->ProgramType = 0;//0正式 1体验版 2开发板
  514. $info->isShareProgram = 1;//是否分享小程序 1分享 0跳转
  515. //
  516. $notify = Miniprogram::where('root_id',$this->rootId)->value('notify');
  517. $emp = Employee::where('id',$info->emp_id)->field('id,uid')->find();
  518. $str = 'pages/other/other?ctp='.$notify.'&uid='.$emp->uid.'&type=vr&vrurl='.$info->url.'&emp=1&cty=groupVr&aid='.$id;
  519. $info->path = $str;
  520. return json(['code'=>0,'data'=>$info]);
  521. }
  522. }