精华内容
下载资源
问答
  • 订单提醒音,MP3,wav

    2020-11-10 09:31:10
    MP3,WAV两种格式的订单提示音。
  • 订单提醒音.zip

    2019-06-19 10:55:49
    新的订单提示音,找了很久,这个是目前最满意的版本,分享给大家
  • 订单提醒+微信收款成功提示音+叮咚,你有心的订单需要处理,MP3格式
  • JS代码实现新订单提醒功能,复制粘贴更改后端链接程序即可实现
  • 订单提醒语音 女生版 超级好听 真的好听 订单提醒语音 女生版 超级好听 真的好听 订单提醒语音 女生版 超级好听 真的好听 订单提醒语音 女生版 超级好听 真的好听
  • ecshop短信插件及订单提醒! 有详细的安装教程及方法 ecshop短信插件及订单提醒! 有详细的安装教程及方法
  • PHP实现新订单提醒功能。

    万次阅读 2019-07-01 15:21:00
    我们在做商城系统的过程当中,会要求做一个订单提醒的功能,即来新的订单会提醒。我实现的方法是有订单后就会提醒“您有新的订单,请注意查收!” 2.解决方案 2.1ajax轮询 轮询的方法比较简单,就是每过多少秒...

    1.现实情况

    我们在做商城系统的过程当中,会要求做一个订单提醒的功能,即来新的订单会提醒。我实现的方法是有订单后就会提醒“您有新的订单,请注意查收!”

    2.解决方案

    2.1ajax轮询

         轮询的方法比较简单,就是每过多少秒发起一次请求。如果项目中的订单不多,每隔多少秒发一次请求会对服务器有挺大的压力。我将轮询关键的代码贴出来,仅供参考。

    <script>
        setInterval("order()",59000000);//每59秒刷新查询一次
        var last_count = {$count};
        function order() {
    
            var data = {
                'last_count':last_count
            };
    
            $.ajax({
                type: "POST",
                data: data,
                url: "{:url('Order/sendOrderNotice')}",//后台方法
                timeout: 60000,
                cache: false,
                async: false,
                dataType: "json",
                success: function(data) {
                    if(data.status == 1){
                        var audio = document.getElementById( "play" ); //浏览器支持 audio
                        audio.play(); //播放提示音
                        last_count = data.last_count;
                        setTimeout(function(){
                            window.location.reload();
                            }, 3000);
                    }
                }
            });
    
        }
    
    </script>

            上面就是这个解决方案的核心。后端的代码请根据自己的业务逻辑编写。

    2.2 结合workerman实现

          这个方法是我比较推荐的。利用了workerman编写一段推送框架。具体参考:

          https://www.workerman.net/web-sender

    3.准备工作

          下载workerman。

           

           上图是下载好的包。点击start_for_win.bat。

            

            出现这个表示服务启动了。

    4.解决过程

            订单监控页面端的代码:

    <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>
    <script src="https://g.csdnimg.cn/??lib/jquery/1.12.4/jquery.min.js"></script>
    <script>
        // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip
        var socket = io('http://www.tp5_test.com:2120'); //http://www.tp5_test.com换成自己的域名或者ip
        // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数,这个ID可以随便写
        uid = 1557062581000;
        // socket连接后以uid登录
        socket.on('connect', function(){
            socket.emit('login', uid);
        });
        <!--// 后端推送来消息时-->
        socket.on('new_msg', function(msg){
    
            //两种处理方式
    
            // 1 追加到页面元素中,可以做成页面的弹窗
            $("#msg").append(msg); 
    
    
            //2 播放提示应 :
            if(msg == 1){
                var audio = document.getElementById( "play" ); //浏览器支持 audio
                audio.play(); //播放提示音
            }
    
    
        });
        // 后端推送来在线数据时
        socket.on('update_online_count', function(online_stat){
            console.log(online_stat);
        });
    </script>

            后端代码:

        //这个方法我随便写了写,具体的处理就是在支付完成回调以后,用用send_workerman方法就可以了。我是用sends来模型支付完成以后的回调
        public function sends($id)
        {
            // var_dump($id);die;
            if($id == 1){
              $this->send_workman($id);
            }else{
              echo '没有发送消息';
            }
        }
    
    
        /**
         * @route('send_workman')
         */
        public function send_workman($id)
        {
            $to_uid = '1557062581000'; //和页面的uid一致,不填写也可以
            // 推送的url地址,使用自己的服务器地址
            $push_api_url = "http://www.tp5_test.com:2121/";
            $post_data = array(
                "type" => "publish",
                "content" => $id,
                "to" => $to_uid,
            );
            $ch = curl_init ();
            curl_setopt ( $ch, CURLOPT_URL, $push_api_url );
            curl_setopt ( $ch, CURLOPT_POST, 1 );
            curl_setopt ( $ch, CURLOPT_HEADER, 0 );
            curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
            curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );
            curl_setopt ( $ch, CURLOPT_HTTPHEADER, array("Expect:"));
            $return = curl_exec ( $ch );
            curl_close ( $ch );
            var_export($return);
        }

     

    5.总结

    两种方式都可以使用,推荐使用第二种,代码已经经过测试无问题。如果帮助到你的话,那就很棒了。如果有什么疑问的话,可以给我发邮件:m13188999295@163.com。我尽量答复。

    展开全文
  • 女声语音提醒:你有一条新订单,请及时处理,zip里有四种格式:mp3、ogg、wav、wma,温柔好听,令人陶醉...
  • 做的一个校园版的美团外卖项目,这里分享一下订单提醒功能,使用uniapp+WebSocket实现。 开始 一、导入pom <!--socket--> <dependency> <groupId>org.springframework.boot</groupId> &...

    背景

    做的一个校园版的美团外卖项目,这里分享一下订单提醒功能,使用uniapp+WebSocket实现。

    开始

    一、导入pom

    <!--socket-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-websocket</artifactId>
            </dependency>
    

    二、后端实现

    package com.ningxun.restcard.controller;
    
    import com.alibaba.fastjson.JSONObject;
    import com.ningxun.restcard.auth.UserAuthenticationProvider;
    import com.ningxun.restcard.entity.StudentUserEntity;
    import io.jsonwebtoken.Claims;
    import io.jsonwebtoken.Jwts;
    import org.apache.commons.lang.StringUtils;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.stereotype.Component;
    
    import javax.websocket.*;
    import javax.websocket.server.PathParam;
    import javax.websocket.server.ServerEndpoint;
    import java.io.IOException;
    import java.util.concurrent.ConcurrentHashMap;
    
    //这个是客户端访问的接口
    @ServerEndpoint("/imserver/app/{token}")
    @Component
    public class WebSocketServerApp {
    
        //日志
        static Logger log = LoggerFactory.getLogger(WebSocketServerApp.class);
        /**
         * 静态变量,用来记录当前在线连接数。应该把它设计成线程安全的。
         */
        private static int onlineCount = 0;
    
        /**
         * concurrent包的线程安全Set,用来存放每个客户端对应的MyWebSocket对象。
         */
        //新建一个ConcurrentHashMap webSocketMap 用于接收当前userId的WebSocket,方便IM之间对userId进行推送消息。
        private static ConcurrentHashMap<String, WebSocketServerApp> webSocketMap = new ConcurrentHashMap<>();
        /**
         * 与某个客户端的连接会话,需要通过它来给客户端发送数据
         */
        private Session session;
        //    /**接收userId*/
        private String userId = "";
    
        public static Session temp;
    
        public static boolean flag = false;
    
        /**
         * 连接建立成功调用的方法
         */
        @OnOpen
        public void onOpen(Session session, @PathParam("token") String token) {
            //解析JWT
            Claims claims = Jwts.parser()
                    .setSigningKey(UserAuthenticationProvider.STORE_PWD)
                    .parseClaimsJws(token).getBody();
            StudentUserEntity user = JSONObject.parseObject(JSONObject.toJSON(claims.get("user")).toString(), StudentUserEntity.class);
            if (claims != null) {
                claims.setId(user.getId() + "");
                //获取到session和userId
                this.session = session;
                this.userId = claims.getId();
                this.temp = session;
                flag = true;
                //如果userId存在,则移除,再添加一个相同的userId和新的Session(防止session过期)
                if (webSocketMap.containsKey(userId)) {
                    webSocketMap.remove(userId);
                    webSocketMap.put(userId, this);
                } else {
                    webSocketMap.put(userId, this);
                    //在线数加1
                    addOnlineCount();
                }
                log.info("用户连接:" + userId + ",当前在线人数为:" + getOnlineCount());
                try {
                    sendMessage(this.userId + "连接成功");
                } catch (IOException e) {
                    log.error("用户:" + userId + ",网络异常!!!!!!");
                }
            } else {
                log.error("用户:" + userId + ",没有权限!!!!!!");
            }
        }
    
        /**
         * 连接关闭调用的方法
         */
        @OnClose
        public void onClose() {
            //如果存在userId则移除,然后人数-1
            if (webSocketMap.containsKey(userId)) {
                webSocketMap.remove(userId);
                //从set中删除
                subOnlineCount();
                flag = false;
            }
            log.info("用户退出:" + userId + ",当前在线人数为:" + getOnlineCount());
        }
    
        /**
         * @param session
         * @param error
         */
        @OnError
        public void onError(Session session, Throwable error) {
            log.error("用户错误:" + this.userId + ",原因:" + error.getMessage());
            error.printStackTrace();
        }
    
    
        // 收到客户端消息后调用的方法
        @OnMessage
        public void onMessage(String message, Session session) {
            log.info(message);
        }
        /**
         * 实现服务器主动推送
         */
        public void sendMessage(String message) throws IOException {
            this.session.getBasicRemote().sendText(message);
        }
    
        /**
         * 发送自定义消息
         */
        public static void sendInfo(String message, @PathParam("userId") String userId) throws IOException {
            log.info("发送消息到:" + userId + ",报文:" + message);
    
            if (StringUtils.isNotBlank(userId) && webSocketMap.containsKey(userId)) {
                webSocketMap.get(userId).sendMessage(message);
            } else {
                log.error("用户" + userId + ",不在线!");
            }
        }
    
        public static synchronized int getOnlineCount() {
            return onlineCount;
        }
    
        public static synchronized void addOnlineCount() {
            WebSocketServerApp.onlineCount++;
        }
    
        public static synchronized void subOnlineCount() {
            WebSocketServerApp.onlineCount--;
        }
    
        public void setSession(Session session) {
            this.session = session;
        }
    }
    
    

    三、前端实现

    export default {
        components: {
          uniLoadMore
        },
        data() {
          return {
            timer: '', //心跳定时器
            heartbeatFailNum: 0, //心跳失败次数    
            socketTask: null,
            // 确保websocket是打开状态
            is_open_socket: false
          };
        },
        onLoad() {
          this.connectSocketInit();
        },
        // 关闭websocket【必须在实例销毁之前关闭,否则会是underfined错误】
        beforeDestroy() {
          this.closeSocket();
          clearInterval(this.timer);
        },
        methods: {
          // 进入这个页面的时候创建websocket连接【整个页面随时使用】
          connectSocketInit() {
            // 创建一个this.socketTask对象【发送、接收、关闭socket都由这个对象操作】
            this.socketTask = uni.connectSocket({
              // 【非常重要】必须确保你的服务器是成功的
              url: this.$student_api_url + "/imserver/app/" + uni.getStorageSync("token"),
              success(data) {
                console.log("websocket连接成功");
              },
            });
    
            // 消息的发送和接收必须在正常连接打开中,才能发送或接收【否则会失败】
            //连接成功时回调
            this.socketTask.onOpen((res) => {
              console.log("WebSocket连接正常打开中...!");
              this.is_open_socket = true;
    
              //收到信息的回调
              this.socketTask.onMessage((res) => {
                console.log("收到服务器内容:" + res.data);
                var state = res.data;
                //连接成功消息不处理,业务消息加提示铃声
                if (state.indexOf("连") != -1) {} else {
                  const innerAudioContext = uni.createInnerAudioContext();
                  innerAudioContext.autoplay = true;
                  innerAudioContext.src =
                    'http://ppt.1ppt.com/uploads/soft/2008/2-200R5152453.mp3';
                  innerAudioContext.onPlay(() => {
                    console.log('开始播放');
                  });
                  innerAudioContext.onError((res) => {
                    console.log(res.errMsg);
                    console.log(res.errCode);
                  });
                }
                //未接单状态且页面选中待接单页
                。。。。。//这里业务代码,没看的必要
              });
            })
    
            // 这里仅是事件监听【如果socket关闭了会执行】
            this.socketTask.onClose(() => {
              console.log("已经被关闭了")
            })
            //开启心跳机制
            this.heartCheck();
          },
          // 关闭websocket【离开这个页面的时候执行关闭】
          closeSocket() {
            this.socketTask.close({
              success(res) {
                this.is_open_socket = false;
                console.log("关闭成功", res)
              },
              fail(err) {
                console.log("关闭失败", err)
              }
            })
          },
          //心跳检测30秒一次
          heartCheck() {
            clearInterval(this.timer);
            var that=this;
            this.timer = setInterval(function() {
              //发送信息
              uni.sendSocketMessage({
                data: 'ping',
                success: res => {
                  console.log("心跳发送成功");
                  that.heartbeatFailNum = 0;
                },
                fail: err => {
                  // 未连接关闭在打开
                  console.log("心跳发送失败");
                  that.heartbeatFailNum + 1;
                  if (that.heartbeatFailNum <= 10) {
                    that.closeSocket();
                    that.connectSocketInit();
                  } else {
                    console.log("连续十次心跳检测失败,不再发起重连请求")
                  }
                }
              });
            }, 1000 * 30);
          },
      };
    

    四、最后

    参考了一个博主的博文,回过头就找不到了,要不可以分享个链接。最后上测试服的时候遇到了WebSocket连接不上的问题。这属于微信小程序的问题,需要对IP做备案。

    展开全文
  • 外卖新订单提醒音(您有新订单,请及时处理)。女声,一个带提示音一个不带,一个语速快一个语速慢。
  • 巧妙的新订单提醒功能

    千次阅读 2019-05-21 11:02:31
    人不能时刻盯着屏幕,需要提醒。 或者语音提醒,或者短信提醒。短信提醒成本高,二是手机马上被塞满。 通过JS定时刷新,调取接口,巧妙的解决了这个问题。 定时去数据库查询,最近一天,是否有已支付,未处理的订单...

    人不能时刻盯着屏幕,需要提醒。 
    或者语音提醒,或者短信提醒。短信提醒成本高,二是手机马上被塞满。 
    通过JS定时刷新,调取接口,巧妙的解决了这个问题。 
    定时去数据库查询,最近一天,是否有已支付,未处理的订单,如果有的话,播放音频文件。 
    音频文件可以去网上找。叮咚,你有新订单,请及时处理。 
    巧妙的运用JS,生成灵活的音频模块,并播放,有点意思。
     

    var func = function (){
        $.ajax({
            type:'POST',
            url:'/admin.php/Order/get_new_order',
            dataType:'json',
            success:function(data){
                console.log(JSON.stringify(data));
                if(data.errno == 0)
                {
                    playSound();
                }
            }
        });
    }
    
    var playSound = function () {
        var borswer = window.navigator.userAgent.toLowerCase();
        if ( borswer.indexOf( "ie" ) >= 0 )
        {
            //IE内核浏览器
            var strEmbed = '<embed name="embedPlay" src="/admin/image/voice.mp3" autostart="true" hidden="true" loop="false"></embed>';
            if ( $( "body" ).find( "embed" ).length <= 0 )
                $( "body" ).append( strEmbed );
            var embed = document.embedPlay;
    
            //浏览器不支持 audion,则使用 embed 播放
            embed.volume = 100;
            //embed.play();这个不需要
        } else
        {
            //非IE内核浏览器
            var strAudio = "<audio id='audioPlay' src='/admin/image/voice.mp3' hidden='true'>";
    
            if($("#audioPlay").length<=0){
                $( "body" ).append( strAudio );
            }
    
            var audio = document.getElementById( "audioPlay" );
    
            //浏览器支持 audio
            audio.play();
        }
    }
    
    //主动调用
    setInterval("func()", 30000);

    音频下载地址(由于是合成的效果会差一些):https://pan.baidu.com/s/1V-F37fZkVZTGZFvdmPNvwg 提取码: p45m

    展开全文
  • 好物推荐订单提醒 建造条件 如果自己建造需要某些以下三个条件 微信公众号 自己的域名 云服务器 具体操作 申请微信测试消息号 登陆微信公众号管理平台 具体操作如下1. 1.菜单【开发】---【开发者工具】-【公共平台...
  • 后台新订单提醒

    千次阅读 2019-01-25 15:50:00
    // 新订单提醒 function hello() { $.ajax({ url:'checkOrderNum', type:'get', success:function (result) { ...
            // 新订单提醒
    
            function hello() {
                $.ajax({
                    url:'checkOrderNum',
                    type:'get',
                    success:function (result) {
                        console.log(result);
                        if (result == 1){
                            // 右下角弹框
                           layer.open({
                              type:0,
                              title: '提示',
                              content: '您有新的订单,请及时查看',
                              anim: 2,
                              shade:0,
                              offset:"rb"
                            }); 
                        }
                    }
                });
    
                $.ajax({
                    url:'checkSpeedOrderNum',
                    type:'get',
                    success:function (result) {
                        console.log(result);
                        if (result == 1){
                            // 右下角弹框
                           layer.open({
                              type:0,
                              title: '提示',
                              content: '您有新的快速测试订单,请及时查看',
                              anim: 2,
                              shade:0,
                              offset:"rb"
                            }); 
                        }
                    }
                });
    
            }
            setInterval("hello()",10000);
    

    http://www.runoob.com/jsref/met-win-setinterval.html

    使用setInterval()方法

    转载于:https://www.cnblogs.com/jimz/p/10320043.html

    展开全文
  • ajax轮询新订单提醒

    千次阅读 2018-10-18 10:55:50
    //pay_status订单支付成功的标识 mess消息提醒的标识 $count=count($ids); if($count){ $order->where('pay_status=1 and mess=1')->setfield('mess',0); $this->ajaxReturn('1');die; }else{ $this->...
  • “未送订单提醒”,“未取订单提醒”,“应收订单提醒”,“花器回收提醒”和“花材负库存提醒”使您的花店不漏单,管理更规范。 “生日(支持农历生日)提醒”,“纪念日提醒”及“来年同日订花提醒”使您花店...
  • ecshop订单提醒

    2016-04-15 17:12:29
    ecshop订单提醒,一款很好用的ecshop订单提醒软件
  • 电子政务-电商订单提醒智能音箱.zip
  • js定时触发-----新订单提醒展示效果并提示音效

    万次阅读 热门讨论 2018-07-12 18:38:05
    --新订单提醒--> < script type = "text/javascript" > function timeout () { var res; $.ajax({ url: 'index.php?act=dingshi' , type: 'get' , datatype: 'text' , async: false , success:...
  • 订单提醒工具

    2013-02-18 03:49:21
    配合ecshop使用 当网站有客户下订单时 前台可提醒后台订单
  • 首先要开通模板消息接口权限,然后添加消息模板,保存模板id以业务到期提醒为例:第一步:获取access_token;参数appid,appsecret获取方法: $url = ...
  • Ecshop订单提醒工具及时提醒订单信息,让您时刻掌握商城订单动态! 工具安装方法: 在工具内已经说明了安装方法,工具安装前需要先安装Flash AIR环境,下载地址:http://get.adobe.com/cn/air/ ,下载并安装, 安装...
  • ecshop短信验证+发货+订单提醒插件。 里面集成了很多功能: 订单提交提醒 订单支付提醒 订单发货提醒 订单支付提醒网站客服 短信验证等。按照教程更改即可
  • 订单来了提示铃声(简洁清脆版).mp3
  • thinkphp 实现新订单语音提醒功能

    千次阅读 2019-12-06 14:40:00
    4、在前台的订单提交页面触发以下通知方案,后台就能播放语音 //这个方法我随便写了写,具体的处理就是在支付完成回调以后,用用send_workerman方法就可以了。我是用sends来模型支付完成以后的回调 public ...
  • app或者网站新订单提示音,叮咚,您有新订单,请及时处理!
  • 第一步,按钮控制实时提醒 <form class="layui-form roll-nav" style="margin-left: 81%;margin-top: -5px;" action=""> <input type="checkbox" checked="" name="switch" lay-skin="switch" lay-...
  • 人声订单语音提示

    2017-08-18 11:47:33
    人声订单语音提示。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,615
精华内容 7,846
关键字:

订单提醒