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     }

 

posted @ 2021-01-22 16:12  九鹤  阅读(1258)  评论(0编辑  收藏  举报