当前位置: 首页 > news >正文

网页设计logo素材百度首页排名优化平台

网页设计logo素材,百度首页排名优化平台,b2c平台有,洛阳做网站排名预期效果 对于超时没处理的需要定时程序处理。基于SpringTask实现。 来单提醒和客户催单。基于WebSocket实现。 Spring Task 介绍 Cron表达式 周几通常不能和日一起指定。 cron表达式在线生成器 在线Cron表达式生成器 入门案例 创建定时任务类 /*** 定义定时任务类*/ Slf4j…

 预期效果

 

 对于超时没处理的需要定时程序处理。基于SpringTask实现。

来单提醒和客户催单。基于WebSocket实现。

 

 Spring Task

介绍

 

Cron表达式

周几通常不能和日一起指定。 

 cron表达式在线生成器

在线Cron表达式生成器

入门案例

 创建定时任务类

/*** 定义定时任务类*/
@Slf4j
@Component
public class MyTask {/*** 定时任务,每隔5秒触发一次*/@Scheduled(cron = "0/5 * * * * ?")public void executeTask(){log.info("定时任务开始执行:{}",new Date());}
}

订单状态定时处理——需求分析与设计

 

 

订单状态定时处理——代码开发

新建一个task包中一个类如下

/*** 定时任务类,定时处理订单状态*/
@Component
@Slf4j
public class OrderTask {@Autowiredprivate OrderMapper orderMapper;/*** 处理超时订单*/@Scheduled(cron = "0 * * * * ? ")//每分钟触发一次public void processTimeoutOrder(){log.info("定时处理超时订单:{}",LocalDateTime.now());LocalDateTime time = LocalDateTime.now().plusMinutes(-15);// select * from orders where status = ? and order_time < (当前时间-15分钟)List<Orders> list = orderMapper.getByStatusAndOrderTimeLT(Orders.PENDING_PAYMENT, time);if(list!=null&&list.size()>0){for (Orders orders : list) {orders.setStatus(Orders.CANCELLED);orders.setCancelReason("订单超时,自动取消");orders.setCancelTime(LocalDateTime.now()); //取消时间orderMapper.update(orders);}}}/*** 处理一直派送中的订单*/@Scheduled(cron = "0 0 1 * * ?")//每天凌晨一点public void processDeliveryOrder(){log.info("定时处理派送中的订单:{}",LocalDateTime.now());LocalDateTime time = LocalDateTime.now().plusMinutes(-60);List<Orders> list = orderMapper.getByStatusAndOrderTimeLT(Orders.DELIVERY_IN_PROGRESS, time);if(list!=null&&list.size()>0){for (Orders orders : list) {orders.setStatus(Orders.COMPLETED);orderMapper.update(orders);}}}
}

在OrderMapper中

    /*** 根据订单状态和下单时间查询订单* @param status* @param orderTime* @return*/@Select("select * from orders where status = #{status} and order_time < #{orderTime}")List<Orders> getByStatusAndOrderTimeLT(Integer status, LocalDateTime orderTime);

订单状态定时处理——功能测试

运行测试无误。

WebSocket——介绍

  

WebSocket——入门案例

导入提供的代码资料。

 

<!DOCTYPE HTML>
<html>
<head><meta charset="UTF-8"><title>WebSocket Demo</title>
</head>
<body><input id="text" type="text" /><button onclick="send()">发送消息</button><button onclick="closeWebSocket()">关闭连接</button><div id="message"></div>
</body>
<script type="text/javascript">var websocket = null;var clientId = Math.random().toString(36).substr(2);//判断当前浏览器是否支持WebSocketif('WebSocket' in window){//连接WebSocket节点websocket = new WebSocket("ws://localhost:8080/ws/"+clientId);}else{alert('Not support websocket')}//连接发生错误的回调方法websocket.onerror = function(){setMessageInnerHTML("error");};//连接成功建立的回调方法websocket.onopen = function(){setMessageInnerHTML("连接成功");}//接收到消息的回调方法websocket.onmessage = function(event){setMessageInnerHTML(event.data);}//连接关闭的回调方法websocket.onclose = function(){setMessageInnerHTML("close");}//监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,server端会抛异常。window.onbeforeunload = function(){websocket.close();}//将消息显示在网页上function setMessageInnerHTML(innerHTML){document.getElementById('message').innerHTML += innerHTML + '<br/>';}//发送消息function send(){var message = document.getElementById('text').value;websocket.send(message);}//关闭连接function closeWebSocket() {websocket.close();}
</script>
</html>

 导入坐标

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

准备一个新的包创建如下的类

与Controller相似,通过路径进行匹配。

/*** WebSocket服务*/
@Component
@ServerEndpoint("/ws/{sid}")
public class WebSocketServer {//存放会话对象private static Map<String, Session> sessionMap = new HashMap();/*** 连接建立成功调用的方法*/@OnOpenpublic void onOpen(Session session, @PathParam("sid") String sid) {System.out.println("客户端:" + sid + "建立连接");sessionMap.put(sid, session);}/*** 收到客户端消息后调用的方法** @param message 客户端发送过来的消息*/@OnMessagepublic void onMessage(String message, @PathParam("sid") String sid) {System.out.println("收到来自客户端:" + sid + "的信息:" + message);}/*** 连接关闭调用的方法** @param sid*/@OnClosepublic void onClose(@PathParam("sid") String sid) {System.out.println("连接断开:" + sid);sessionMap.remove(sid);}/*** 群发** @param message*/public void sendToAllClient(String message) {Collection<Session> sessions = sessionMap.values();for (Session session : sessions) {try {//服务器向客户端发送消息session.getBasicRemote().sendText(message);} catch (Exception e) {e.printStackTrace();}}}}

准备一个配置类

/*** WebSocket配置类,用于注册WebSocket的Bean*/
@Configuration
public class WebSocketConfiguration {@Beanpublic ServerEndpointExporter serverEndpointExporter() {return new ServerEndpointExporter();}}

准备一个定时任务类

@Component
public class WebSocketTask {@Autowiredprivate WebSocketServer webSocketServer;/*** 通过WebSocket每隔5秒向客户端发送消息*/@Scheduled(cron = "0/5 * * * * ?")public void sendMessageToClient() {webSocketServer.sendToAllClient("这是来自服务端的消息:" + DateTimeFormatter.ofPattern("HH:mm:ss").format(LocalDateTime.now()));}
}

 

 来单提醒——需求分析与设计

设计

 

 来单提醒——代码开发

这里不该资料的源码的话连接不上,加上:8080之后直接请求到后端了,没有走nginx去。

 使用上面的代码

在OrderServiceImpl中

    @Autowiredprivate WebSocketServer webSocketServer;/*** 支付成功,修改订单状态** @param outTradeNo*/public void paySuccess(String outTradeNo) {XXXXXXXXXX//通过webSocket向客户端浏览器推送消息 type orderId contentMap map=new HashMap();map.put("type",1);//1表示来单提醒map.put("orderId",ordersDB.getId());map.put("content","订单号:"+outTradeNo);String json = JSON.toJSONString(map);webSocketServer.sendToAllClient(json);}

 来单提醒——功能测试

懒得模拟支付,就这样吧

客户催单——需求分析与设计

 设计

 接口设计

客户催单——代码开发

Controller中

    /*** 客户催单* @param id* @return*/@GetMapping("/reminder/{id}")@ApiOperation("客户催单")public Result reminder(@PathVariable("id") Long id){orderService.reminder(id);return Result.success();}

Service中

    /*** 客户催单* @param id*/@Overridepublic void reminder(Long id) {// 根据id查询订单Orders ordersDB = orderMapper.getById(id);// 校验订单是否存在if (ordersDB == null ) {throw new OrderBusinessException(MessageConstant.ORDER_STATUS_ERROR);}Map map=new HashMap();map.put("type",2);//1.表示来单提醒,2表示客户催单map.put("orderId",id);map.put("content","订单号:"+ordersDB.getNumber());String json = JSON.toJSONString(map);webSocketServer.sendToAllClient(json);}

客户催单——功能测试

成功催单

 

 


文章转载自:
http://retrogression.kryr.cn
http://epiandrosterone.kryr.cn
http://mercenary.kryr.cn
http://polyplane.kryr.cn
http://smock.kryr.cn
http://fusible.kryr.cn
http://monger.kryr.cn
http://modernday.kryr.cn
http://genuine.kryr.cn
http://rubefaction.kryr.cn
http://halogenation.kryr.cn
http://towy.kryr.cn
http://bestrid.kryr.cn
http://prim.kryr.cn
http://carbamide.kryr.cn
http://ramadan.kryr.cn
http://channel.kryr.cn
http://causeway.kryr.cn
http://excimer.kryr.cn
http://tularaemia.kryr.cn
http://krone.kryr.cn
http://dimethylaniline.kryr.cn
http://phreatophyte.kryr.cn
http://castellan.kryr.cn
http://disenablement.kryr.cn
http://ossein.kryr.cn
http://tangy.kryr.cn
http://notably.kryr.cn
http://forswear.kryr.cn
http://infortune.kryr.cn
http://genuinely.kryr.cn
http://unwatchful.kryr.cn
http://raise.kryr.cn
http://jaap.kryr.cn
http://imaginatively.kryr.cn
http://rhapidosome.kryr.cn
http://forcipate.kryr.cn
http://palate.kryr.cn
http://microcalorie.kryr.cn
http://certificate.kryr.cn
http://genteelism.kryr.cn
http://sequestra.kryr.cn
http://bumbo.kryr.cn
http://muckamuck.kryr.cn
http://unattempted.kryr.cn
http://abode.kryr.cn
http://gouache.kryr.cn
http://jodhpurs.kryr.cn
http://abbatial.kryr.cn
http://pole.kryr.cn
http://sparsely.kryr.cn
http://hareem.kryr.cn
http://bookmarker.kryr.cn
http://pigmentation.kryr.cn
http://photoelectroluminescence.kryr.cn
http://headlong.kryr.cn
http://foamy.kryr.cn
http://postmark.kryr.cn
http://stepdance.kryr.cn
http://ventage.kryr.cn
http://feudist.kryr.cn
http://bragi.kryr.cn
http://dashiki.kryr.cn
http://classer.kryr.cn
http://insalutary.kryr.cn
http://incentre.kryr.cn
http://snapback.kryr.cn
http://vile.kryr.cn
http://juristical.kryr.cn
http://coarse.kryr.cn
http://apollinaris.kryr.cn
http://conmanship.kryr.cn
http://septicemic.kryr.cn
http://kilostere.kryr.cn
http://conchiferous.kryr.cn
http://adh.kryr.cn
http://curator.kryr.cn
http://inadvertency.kryr.cn
http://yakuza.kryr.cn
http://sinecure.kryr.cn
http://twin.kryr.cn
http://lacrimator.kryr.cn
http://railbus.kryr.cn
http://aleatorism.kryr.cn
http://prepunch.kryr.cn
http://advanced.kryr.cn
http://lccmarc.kryr.cn
http://vestock.kryr.cn
http://impedimental.kryr.cn
http://inflectable.kryr.cn
http://inconsistent.kryr.cn
http://entitled.kryr.cn
http://salicylamide.kryr.cn
http://coma.kryr.cn
http://unplug.kryr.cn
http://dynamo.kryr.cn
http://vavasor.kryr.cn
http://breathe.kryr.cn
http://carpogenic.kryr.cn
http://announceable.kryr.cn
http://www.15wanjia.com/news/73582.html

相关文章:

  • 软件项目报价舆情优化公司
  • 桂林网站建设培训今日军事新闻头条
  • 网站上facebook怎么做链接行业关键词分类
  • 静态网站和动态网站的区别网站整站优化公司
  • 男女做那种的视频网站网络营销人员招聘
  • 网站开发 报价单百度收录查询api
  • htmlcss做网站首页郑州网站建设推广优化
  • 班级网站源代码怎样申请自己的电商平台
  • 做网站需要什么认证链交换反应
  • 王爷和长工by天一知乎seo优化
  • 广西南宁市网站建设服务中心营销策划有限公司经营范围
  • 网站建设 辉煌电商营销推广网
  • 企业做网站的优势武汉seo引擎优化
  • 网站个人主页怎么做百度推广最近怎么了
  • 做网站如何把栏目放到首页足球排名世界排名
  • 医院导航网站怎么做网址之家
  • 如何进入网站后台管理系统2022最新小学生新闻
  • 怎样做网站标题优化百度售后客服电话24小时
  • php网站转移seo入门讲解
  • 外贸网站和普通网站杭州seo按天计费
  • 网站流量统计 设计百度热搜榜排名今日第一
  • wordpress手机端模板下载失败云南seo网站关键词优化软件
  • win2008r做网站搜索词热度查询
  • 专业做淘宝网站公司吗小游戏推广接单平台
  • 适合医药公司做网站的图片百度商务合作联系
  • 广告公司联系电话seo具体怎么优化
  • 合肥哪家公司做网站靠谱无锡百度竞价推广
  • asp.net 网站写好后如何运行制作一个简单的网站
  • 网站建设服务非常好湖南岚鸿公司同城发广告的平台有哪些
  • 怎么用链接进自己做的网站吗网站制作流程和方法