zoukankan      html  css  js  c++  java
  • 5分钟连续出现某现象+微信模板消息提醒 PHP

    需求场景:用电插座电流连续出现5次电流过高(大于 3A)后停止用电服务,前四次发送电流过高提醒,最后一次发送结束用电服务提醒

    思路:

    Redis  key 设为:插座编号+user户编号  value: 出现大于3A的次数 ;

    心跳每分钟,心跳包数据含有 。判断电流:电流值 <3 清空对应key的次数  电流>=3  次数不为零小于5  次数加一 发送过高提醒,次数为5时发送结束服务提醒,清空对应key的次数;

    先申请模板消息,获取模板ID(一搜一大把,此处不赘述了)

    上代码:(Ci框架)

    心跳包中拿到电流值 $i

    if($i > 3){
           checkMeterCurrentUp($meter_id);
                    
    }else{
           //清空redis电流超限记录
           deleteAbnormalCurrentCache($meter_id);
    }
    
    
    function checkMeterCurrentUp($meter_id)
                 //加载redis 
            $up_count  = $this->redisclient->get('down_'.$user_id.$meter_id);

            
    if($up_count < 5){//设备号 value加一 发送模板消息 $this->redisclient->save($user_id.$meter_id,$up_count+1,600);//给用户消息通知
                //获取access_token
     lm('config_model'); $access_token = $this->config_model->r(pw('datakey',CONFIG_KEY_GZHH_ACCESS_TOKEN,'platform_id',$order['platform_id'])); $access_token = element('datavalue',$access_token); if($access_token) { $url = sprintf("https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=%s", $access_token); lm('users_model'); $user = $this->users_model->r(pw('id',$user_id)); lm('meters_model'); $meter = $this->meters_model->r(pw('id_open',$meter_id));
                     //获取微信模板消息ID lm(
    'platform_config_model'); $platform_config = $this->platform_config_model->r(pw('platform_id',$order['platform_id'])); $template_id = $platform_config['wx_event_template_id'];
    $postdata = json_encode(array( 'touser' => element('openid',$user), 'template_id' => $template_id, 'url' => site_url('detail?id='.$meter_id), 'data' => array( "keyword1" => array ( "value" => $meter_id, "color" => "#173177" ), "keyword2" => array ( //地址 "value" => element('name',$meter), "color" => "#173177" ), "keyword3" => array ( "value" => date('Y-m-d H:i:s'), "color" => "#173177" ), "first" => array ( "value" => '您的设备充电功率超限,连续五次超限后将停止充电服务', "color" => "#173177" ), "remark" => array ( "value" => '请及时查看', "color" => "#173177" ), ) ));
                     //发送 发送模板消息请求
    $resp = http_post($url,$postdata); } }else{ //结束订单 //发送模板消息 $this->redisclient->delete($user_id.$meter_id); //给用户消息通知 lm('config_model'); $access_token = $this->config_model->r(pw('datakey',CONFIG_KEY_GZHH_ACCESS_TOKEN,'platform_id',$order['platform_id'])); $access_token = element('datavalue',$access_token); if($access_token) { $url = sprintf("https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=%s", $access_token); lm('users_model'); $user = $this->users_model->r(pw('id',$user_id)); lm('meters_model'); $meter = $this->meters_model->r(pw('id_open',$meter_id));
                      lm(
    'platform_config_model'); $platform_config = $this->platform_config_model->r(pw('platform_id',$order['platform_id'])); $template_id = $platform_config['wx_event_template_id']; $postdata = json_encode(array( 'touser' => element('openid',$user), 'template_id' => $template_id, 'url' => site_url('detail?id='.$meter_id), 'data' => array( "keyword1" => array ( "value" => $meter_id, "color" => "#173177" ), "keyword2" => array ( //地址 "value" => element('name',$meter), "color" => "#173177" ), "keyword3" => array ( "value" => date('Y-m-d H:i:s'), "color" => "#173177" ), "first" => array ( "value" => '您的设备充电功率连续五次超限,已停止充电服务', "color" => "#173177" ), "remark" => array ( "value" => '请知悉', "color" => "#173177" ), ) )); $resp = http_post($url,$postdata); } //停止订单

                //关闭设备 }
    function deleteAbnormalCurrentCache($meter_id){
            $user_id = 99;
          //加载Redis
        if($this->redisclient->is_supported() === TRUE){ $this->redisclient->delete($user_id.$meter_id); $this->redisclient->delete('down_'.$user_id.$meter_id); } }
  • 相关阅读:
    go 学习笔记---chan
    golang学习笔记---Goroutine
    golang ---Learn Concurrency
    golang ----并发 && 并行
    golang 学习笔记 使用cmd
    并发程序与并行程序
    golang学习笔记 ---interface
    golang --- map如何判断key是否存在
    golang学习 ---defer语句
    golang --for语句
  • 原文地址:https://www.cnblogs.com/yimingwang/p/11944450.html
Copyright © 2011-2022 走看看