實現思路
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 }