FastAdmin后台 退货订单 实时提醒
实现思路
1、当用户点击退货,redis key +1
2、后台做一个轮巡,每间隔 X秒 就发起AJAX请求,查询是否有新退货订单 redis key > 0
3、当返回数据 redis key > 0
- 响起提示音
- 弹出提示框
4、后台人员点击提示框确认按钮
- 发起AJAX请求,奖 redis key 设置为 0
- 关闭提示音
- 跳转到订单tab页(执行这个菜单的点击事件)
代码部分
js代码
1 // /public/assets/js/backend/index.js 2 // 轮询 3 setInterval(() => { 4 $.ajax({ 5 type: 'POST', 6 url: 'index/isHaveNewAfter', 7 success: function (data) { 8 if (data.code == 1) { 9 if (data.data > 0) { 10 // 提示音 11 var audio = document.getElementById('reftips'); 12 audio.play(); 13 // 提示框 14 Layer.alert('您有新的退货订单,请及时处理', { 15 skin: 'layui-layer-molv' //样式类名 自定义样式 16 , closeBtn: 0 // 是否显示关闭按钮 17 , anim: 1 //动画类型 18 , btn: ['马上去处理', '我知道了'] //按钮 19 , icon: 6 // icon 20 , yes: function (index) { 21 handleTui('go'); 22 audio.pause(); 23 audio.currentTime = 0; 24 layer.close(index); 25 }, btn2: function (index) { 26 handleTui('know'); 27 audio.pause(); 28 audio.currentTime = 0; 29 layer.close(index); 30 } 31 }); 32 } 33 } 34 } 35 }); 36 }, 1000 * 30); 37 function handleTui(type) { 38 $.ajax({ 39 type: 'POST', 40 url: 'index/handleTui', 41 data: { type: type }, 42 async: false,//同步 43 success: function (data) { 44 if (data.code == 1) { 45 if (data.data == 'go') { 46 // 点击菜单 "订单管理",打开tab页 47 $('.sidebar-menu li a[addtabs=3768]').click(); 48 } 49 } 50 } 51 }); 52 }
php代码
1 /** 2 * 检测是否有新退货消息 3 */ 4 public function isHaveNewAfter() 5 { 6 $tips = 'aftersale:tips:number'; 7 $redis = (new Redis())->getRedis(); 8 $tipsNumber = $redis->get($tips) ?: 0; 9 $this->success('获取新退货消息数量成功', null, $tipsNumber); 10 } 11 12 /** 13 * 已确认新退货消息 14 */ 15 public function handleTui() 16 { 17 $type = $this->request->post('type'); 18 $tips = 'aftersale:tips:number'; 19 $redis = (new Redis())->getRedis(); 20 $redis->set($tips, 0); 21 $this->success('确认新退货消息成功', null, $type); 22 }