(1). 订单处理模块介绍:

  • 本模块为前台大堂点餐应用中的订单处理,主要功能有:浏览新订单、浏览历史订单、处理订单、查看订单详情等操作。

  • 具体效果如下:,当前订单,订单历史,某一个订单详情

    实现前台店铺菜品展示步骤:

  • 编辑视图文件,完成订单处理

  • 配置订单URLs路由文件

  • 创建订单模板文件,实现订单信息输出

    • 订单列表展示模板(新订单和历史订单)

    • 订单详情展示模板

=========================================================================

(2). 编辑视图文件,完成订单处理

  • 打开视图文件: web/views/orders.py,编辑订单处理函数:
from django.shortcuts import render
from django.http import HttpResponse
from django.shortcuts import redirect
from django.urls import reverse
from django.core.paginator import Paginator
from datetime import datetimefrom myadmin.models import User,Shop,Category,Product,Orders,OrderDetail,Paymentdef index(request,pIndex=1):'''浏览订单信息,就是对数据表orders的操作'''omod = Orders.objectsshop_id = request.session['shopinfo']['id']  # 获取店铺id号,因为获取订单信息的前提是,已经选择了一个店铺mywhere = []list = omod.filter(shop_id=shop_id) #获取订单信息# 获取、判断并封装状态status搜索条件status = request.GET.get('status', '')if status != '':list = list.filter(status=status)mywhere.append("status=" + status)# 执行分页处理pIndex = int(pIndex)page = Paginator(list, 10)  # 以10条每页创建分页对象maxpages = page.num_pages  # 最大页数# 判断页数是否越界if pIndex > maxpages:pIndex = maxpagesif pIndex < 1:pIndex = 1list2 = page.page(pIndex)  # 获取当前页数据plist = page.page_range  # 获取页码数列表#获取操作员昵称for vo in list2:if vo.user_id == 0:vo.nickname = "无"else:user = User.objects.only('nickname').get(id=vo.user_id)vo.nickname = user.nickname# 封装信息加载模板输出context = {"orderslist": list2, 'plist': plist, 'pIndex': pIndex, 'maxpages': maxpages, 'mywhere': mywhere,'url': request.build_absolute_uri()}return render(request, "web/list.html", context)def insert(request):'''大堂执行订单添加操作'''try:# 执行订单信息添加操作od = Orders()od.shop_id = request.session['shopinfo']['id'] #店铺id号od.member_id = 0 #会员id,0代表是店铺的操作者下的单子,并不是会员用户下的单od.user_id = request.session['webuser']['id'] #操作员idod.money = request.session['total_money']od.status = 1  #订单状态:1进行中/2无效/3已完成od.payment_status = 2 #支付状态:1未支付/2已支付/3已退款od.create_at = datetime.now().strftime("%Y-%m-%d %H:%M:%S")od.update_at = datetime.now().strftime("%Y-%m-%d %H:%M:%S")od.save()# 执行支付信息添加op = Payment()op.order_id = od.id #订单id号op.member_id = 0 #会员id号op.money = request.session['total_money'] #支付款op.type = 2 #付款方式:1会员付款/2收银收款op.bank = request.GET.get("bank",3) #收款银行渠道:1微信/2余额/3现金/4支付宝op.status = 2 #支付状态:1未支付/2已支付/3已退款op.create_at = datetime.now().strftime("%Y-%m-%d %H:%M:%S")op.update_at = datetime.now().strftime("%Y-%m-%d %H:%M:%S")op.save()# 执行订单详情添加cartlist = request.session.get('cartlist',{})  #获取购物车的菜品信息#遍历购物车中的菜品并添加到订单详情中for shop in cartlist.values():ov = OrderDetail()ov.order_id = od.id   #订单idov.product_id = shop['id']  #菜品idov.product_name = shop['name']    #菜品名称ov.price = shop['price']  #单价ov.quantity = shop['num']  #数量ov.status = 1  #状态:1正常、9删除ov.save()del request.session['cartlist']del request.session['total_money']return HttpResponse("Y")except Exception as err:print(err)context = {"info":"订单添加失败,请稍后再试!"}return HttpResponse("N")# passdef detail(request):'''加载订单信息'''oid = request.GET.get("oid",0)  #获取传来的订单id号# 加载订单详情dlist = OrderDetail.objects.filter(order_id=oid)# 遍历每个商品详情,从Goods中获取对应的图片#for og in dlist:#    og.picname = Goods.objects.only('picname').get(id=og.goodsid).picname# 放置模板变量,加载模板并输出context = {'detaillist':dlist}return render(request,"web/detail.html",context)def status(request):''' 修改订单状态 '''try:oid = request.GET.get("oid",'0') #获取传来的订单id号ob = Orders.objects.get(id=oid)ob.status = request.GET['status']ob.save()return HttpResponse("Y")except Exception as err:print(err)return HttpResponse("N")

 (3). 配置订单urls路由文件

  • 打开路由文件: web/urls.py 并进行编辑
from django.urls import path,includefrom web.views import index
from web.views import cart
from web.views import ordersurlpatterns = [path('', index.index, name="index"), #前台大堂点餐首页# 前台登陆退出路由path('login', index.login, name="web_login"),path('dologin', index.dologin, name="web_dologin"),path('logout', index.logout, name="web_logout"),path('verify', index.verify, name="web_verify"), #验证码path('web/',include([path('', index.webIndex, name="web_index"), #前台大堂点餐首页# 购物车信息管理路由配置path('cart/add/<str:pid>', cart.add, name="web_cart_add"),path('cart/del/<str:pid>', cart.delete, name="web_cart_del"),path('cart/clear', cart.clear, name="web_cart_clear"),path('cart/change', cart.change, name="web_cart_change"),# 订单处理path('orders/<int:pIndex>', orders.index, name="web_orders_index"), #浏览订单path('orders/insert', orders.insert,name='web_orders_insert'), #执行订单添加操作path('orders/detail', orders.detail,name='web_orders_detail'), #订单的详情信息path('orders/status', orders.status,name='web_orders_status'), #修改订单状态]))
]

(4). 创建订单模板文件,实现订单信息输出

  • 4.1. 新建订单信息显示模板:/templates/web/list.html
  • 4.2 首先还要在/templates/web/index.html里把当前订单,历史订单的跳转链接写上,顺便再加一个无效订单,也就是删除订单的链接
<li class="active"><a href="#">堂吃点餐</a></li>
<li><a href="{% url 'web_orders_index' 1 %}?status=1">当前订单</a></li>
<li><a href="{% url 'web_orders_index' 1 %}?status=3">历史订单</a></li>
<li><a href="{% url 'web_orders_index' 1 %}?status=2">无效订单</a></li>
  • 完整的/templates/web/index.html代码
  • {% load static %}
    <!DOCTYPE html>
    <html lang="en">
    <head><meta charset="UTF-8"><title>Title</title><link rel="stylesheet" href="{% static 'web/css/bootstrap.min.css' %}"><link rel="stylesheet" href="{% static 'web/css/common.css' %}"><style type="text/css">body{min-height:2000px;padding-top:70px;}.navbar-default{background-color:#ff8800;border-color:#e7e7e7;}.navbar-default .navbar-brand{color:#fff;}.navbar-default .navbar-nav > li > a,.navbar-default .navbar-nav > li > a:visited {color: #fff;width:100px;font-size:14px;text-align:center;}.navbar-default .navbar-nav > .active > a,.navbar-default .navbar-nav > .active > a:visited,.navbar-default .navbar-nav li a:hover,.navbar-default .navbar-nav > .active > a:hover,.navbar-default .navbar-nav li a:active {color:#fff;background-color: #FF4500;width:100px;font-size:14px;text-align:center;}table tr td{font-size:11px;}table tr td.price{color:red;}table tr td.num span{color:red;padding:0px 5px}table tr td.num i{border-width:0px;background-color:#ddd;}div.shoplist div.bn{font-size:12px;line-height:25px;}div.shoplist div.bn span.price{color:red;}</style>
    </head>
    <body><!-- 页头导航开始 --><nav class="navbar navbar-default navbar-fixed-top"><div class="container"><div class="navbar-header"><button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a class="navbar-brand" href="#"><span class="glyphicon glyphicon-cutlery" aria-hidden="true"></span><span style="font-weight:bold;">{{request.session.shopinfo.name}}</span><span style="font-size:14px;">({{request.session.shopinfo.shop}})</span></a></div><div id="navbar" class="navbar-collapse collapse"><ul class="nav navbar-nav"><li class="active"><a href="#">堂吃点餐</a></li><li><a href="{% url 'web_orders_index' 1 %}?status=1">当前订单</a></li><li><a href="{% url 'web_orders_index' 1 %}?status=3">历史订单</a></li><li><a href="{% url 'web_orders_index' 1 %}?status=2">无效订单</a></li></ul><ul class="nav navbar-nav navbar-right"><li><a href="../navbar/"><span class="glyphicon glyphicon-user" aria-hidden="true"> {{request.session.webuser.nickname}}</a></li><li><a href="{% url 'web_logout' %}">退出</a></li></ul></div><!--/.nav-collapse --></div></nav><!-- 页头导航结束 --><!-- 页面主体开始 --><div class="container"><div class="col-md-4"><div class="panel panel-warning"><div class="panel-heading"><span class="glyphicon glyphicon-shopping-cart" aria-hidden="true"></span> 购 物 车</div><table class="table table-striped"><tr><th width="30">序</th><th>菜品</th><th width="72">数量</th><th width="45">单价</th><th>删除</th></tr>{% for product in request.session.cartlist.values %}<tr><td>{{forloop.counter}}</td><td>{{product.name}}</td><td class="num"><i onclick="window.location='{% url 'web_cart_change'%}?pid={{product.id}}&num={{product.num|add:-1}}'" class="btn btn-default btn-xs"> - </i><span>{{product.num}}</span><i onclick="window.location='{% url 'web_cart_change'%}?pid={{product.id}}&num={{product.num|add:1}}'" class="btn btn-default btn-xs"> + </i></td><td class="price">{{product.price}}</td><td><a href="{% url 'web_cart_del' product.id %}" class="btn btn-danger btn-xs" role="button">删除</a></td></tr>{% endfor %}</table><li class="list-group-item"><b>购买方式: &nbsp; </b><input type="radio" name="ptype" checked value="1"> 堂吃 &nbsp;<input type="radio" name="ptype" value="2"> 打包 &nbsp;</li><li class="list-group-item"><b>支付方式: &nbsp; </b><input type="radio" name="bank" checked value="1"> 现金 &nbsp;<input type="radio" name="bank" value="2"> 支付宝 &nbsp;<input type="radio" name="bank" value="3"> 微信</li><div class="panel-footer" style="height:50px"><div style="width:120px;float:left;margin:5px 0px;">合计:¥<span style="color:red;font-weight:bold;">{{request.session.total_money}}</span> 元</div><button type="submit" onclick="dosubmit()" class="btn btn-warning" style="width:120px;float:right">结 &nbsp; 算</button><button type="button" onclick="window.location='{% url 'web_cart_clear' %}'" class="btn btn-danger" style="width:60px;float:right">清空</button></div></div></div><div class="col-md-8"><!--标签页内容-->{% for key,category in categorylist %}<h5 style="padding-bottom:9px;border-bottom:1px solid #eee;color:#BB3D00"><span class="glyphicon glyphicon-list" aria-hidden="true"> {{ category.name }}:</h5><div class="row shoplist">{% for product in category.pids %}<div class="col-sm-6 col-md-3"><div class="thumbnail"><img src="{% static 'uploads/product'%}/{{product.cover_pic}}" width="150" alt="..."><div class="caption"><h6>{{ product.name }}</h6><div class="bn">¥<span class="price">{{ product.price }}</span>元</a><a href="{% url 'web_cart_add' product.id %}" class="btn btn-warning btn-xs pull-right" role="button"><span class="glyphicon glyphicon-shopping-cart" aria-hidden="true"></span> 购买</a></div></div></div></div>{% endfor %}</div>{% endfor %}</div></div><!-- 页面主体结束 --><script src="{% static 'web/js/jquery.min.js' %}"></script><script src="{% static 'web/js/bootstrap.min.js' %}"></script><script>//无刷新的提交,下订单function dosubmit(){//判断购物车中是否没有菜品if($("table.table-striped tr").length==1){alert("购物车没有菜品信息!");return;}//询问是否提交订单if(!window.confirm("确定要进行结算?")){return;}//获取提交的数据,val 就是获取选中的值,checked就是选中的那个按钮,默认选中的是第一个var ptype = $("input[name='ptype']:checked").val();var bank = $("input[name='bank']:checked").val();// alert(ptype+':'+bank) //这是测试选中的哪一个//执行ajax提交$.ajax({type:'get',url:"{% url 'web_orders_insert' %}",dataType:'text',data:{ptype:ptype,bank:bank},async: false,success:function(res){if(res == "Y"){alert("订单添加成功!");window.location.href="{% url 'web_index'%}";}else{alert("订单处理失败!");}},});}</script></body>

    然后在新建订单信息显示模板:/templates/web/list.html

{% load static %}
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>点餐系统</title><link rel="stylesheet" href="{% static 'web/css/bootstrap.css'%}"><link rel="stylesheet" href="{% static 'web/css/common.css'%}"><style type="text/css">body{min-height:2000px;padding-top:70px;}.navbar-default{background-color:#ff8800;border-color:#e7e7e7;}.navbar-default .navbar-brand{color:#fff;}.navbar-default .navbar-nav > li > a,.navbar-default .navbar-nav > li > a:visited {color: #fff;width:100px;font-size:14px;text-align:center;}.navbar-default .navbar-nav > .active > a,.navbar-default .navbar-nav > .active > a:visited,.navbar-default .navbar-nav li a:hover,.navbar-default .navbar-nav > .active > a:hover,.navbar-default .navbar-nav li a:active {color:#fff;background-color: #FF4500;width:100px;font-size:14px;text-align:center;}table tr td{font-size:11px;}table tr td.price{color:red;}table tr td.num span{color:red;padding:0px 5px}table tr td.num i{border-width:0px;background-color:#ddd;}div.shoplist div.bn{font-size:12px;line-height:25px;}div.shoplist div.bn span.price{color:red;}.container .panel .panel-heading{padding:0px 15px;line-height:40px;}.container .panel .panel-heading a.btn{margin-top:5px;width:100px;float:right}.pagination > .active > a, .pagination > .active > span, .pagination > .active > a:hover, .pagination > .active > span:hover, .pagination > .active > a:focus, .pagination > .active > span:focus {z-index: 3;color: #fff;cursor: default;background-color: #ff8800;border-color: #ff8800;}</style>
</head>
<body><!-- Fixed navbar --><nav class="navbar navbar-default navbar-fixed-top"><div class="container"><div class="navbar-header"><button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a class="navbar-brand" href="#"><span class="glyphicon glyphicon-cutlery" aria-hidden="true"></span> <span style="font-weight:bold;">{{request.session.shopinfo.name}}</span><span style="font-size:14px;">({{request.session.shopinfo.shop}})</span></a></div><div id="navbar" class="navbar-collapse collapse"><ul class="nav navbar-nav"><li><a href="{% url 'web_index'%}">堂吃点餐</a></li><li {% if request.GET.status == '1' %}class="active"{% endif %}><a href="{% url 'web_orders_index' 1 %}?status=1">当前订单</a></li><li {% if request.GET.status == '3' %}class="active"{% endif %}><a href="{% url 'web_orders_index' 1 %}?status=3">历史订单</a></li><li {% if request.GET.status == '2' %}class="active"{% endif %}><a href="{% url 'web_orders_index' 1 %}?status=2">无效订单</a></li></ul><ul class="nav navbar-nav navbar-right"><li><a href="../navbar/"><span class="glyphicon glyphicon-user" aria-hidden="true"> {{request.session.webuser.nickname}}</a></li><li><a href="{% url 'web_logout' %}">退出</a></li></ul></div><!--/.nav-collapse --></div></nav><div class="container"><div class="col-md-12"><div class="panel panel-danger"><div class="panel-heading"><span class="glyphicon glyphicon-list-alt" aria-hidden="true"></span> 订 单 列 表<a type="button" href="{{url}}"  class="btn btn-warning btn-sm">刷 &nbsp; 新</a></div><table class="table table-striped"><tr><th width="60">订单号</th><th>会员</th><th>操作员</th><th>金额</th><th>付款方式</th><th>订单状态</th><th>支付状态</th><th>下单时间</th><th>操作</th></tr>{% for vo in orderslist %}<tr class="oid{{vo.id}}"><td>{{ vo.id }}</td><td>id203</td><td>{{vo.nickname}}</td><td class="price">{{vo.money}}</td><td>微信</td><td>{% if vo.status == 1 %}<span style="color:green">制作中</span>{% elif vo.status == 2 %}<span style="color:red">无效</span>{% elif vo.status == 3 %}<span style="color:red">已完成</span>{% else %}<span style="color:red">未知状态</span>{% endif %}</td><td>{% if vo.payment_status == 1 %}<span style="color:red">未支付</span>{% elif vo.payment_status == 2 %}<span style="color:green">已支付</span>{% elif vo.payment_status == 3 %}<span style="color:red">已退款</span>{% else %}<span style="color:red">未知状态</span>{% endif %}</td><td>{{ vo.create_at|date:'Y-m-d H:i:s' }}</td><td><button type="button" onclick="doShow({{vo.id}})" class="btn btn-warning btn-xs" role="button"><span class="glyphicon glyphicon-search" aria-hidden="true"></span> 详情</button>{% if vo.status == 1%}<button type="button" onclick="doChangeStatus({{vo.id}},3)" class="btn btn-info btn-xs" role="button"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span> 完成</button><button type="button" onclick="doChangeStatus({{vo.id}},2)" class="btn btn-danger btn-xs" role="button"><span class="glyphicon glyphicon-trash" aria-hidden="true"></span> 删除</button>{% endif %}</td></tr>{% endfor %}</table><div class="panel-footer" style="height:50px"><div style="width:120px;float:left;margin:5px 0px;">合计:<span style="color:red;font-weight:bold;">{{maxpages}}</span> 页</div><nav aria-label="Page navigation" class="text-right"><ul class="pagination" style="margin:0px;"><li><a href="{% url 'web_orders_index' pIndex|add:-1 %}"><span aria-hidden="true">&laquo;</span></a></li>{% for p in plist %}<li {% if pIndex == p %}class="active"{% endif %}><a href="{% url 'web_orders_index' p %}">{{ p }}</a></li>{% endfor %}<li><a href="{% url 'web_orders_index' pIndex|add:1 %}"><span aria-hidden="true">&raquo;</span></a></li></ul></nav></div></div></div></div><!-- Modal --><div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"><div class="modal-dialog" role="document"><div class="modal-content"><div class="modal-header"><button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button><h4 class="modal-title" id="myModalLabel">订单详情</h4></div><div class="modal-body"><table class="table table-hover"><tr><th>序号</th><th>菜品名称</th><th>单价</th><th>数量</th><th>小计</th><th>状态</th><th>操作</th></tr><tr><td>1</td><td>梅菜扣肉+番茄鸡蛋</td><td>25</td><td>2</td><td>50</td><td>正常</td><td><button>删除</button></td></tr><tr><td>2</td><td>肉沫酸豆角</td><td>15</td><td>1</td><td>15</td><td>正常</td><td><button>删除</button></td></tr><tr><td>3</td><td>红烧肉</td><td>18</td><td>1</td><td>18</td><td>正常</td><td><button>删除</button></td></tr></table></div><div class="modal-footer"><button type="button" class="btn btn-default" data-dismiss="modal">关闭</button><!--button type="button" class="btn btn-primary">保存</button--></div></div></div></div><script src="{% static 'web/js/jquery.min.js'%}"></script><script src="{% static 'web/js/bootstrap.min.js'%}"></script><script type="text/javascript">function doShow(id){$.ajax({type:'get',url:"{% url 'web_orders_detail' %}",dataType:'text',data:{oid:id},async: false,success:function(res){$("#myModal div.modal-body").empty().append(res);  //empty()是把选中的静态框清空,然后放入服务器传来的数据$('#myModal').modal({keyboard:false})},});}function doChangeStatus(id,s){var info = ["","","确定要删除订单吗?","确定要完成此订单吗?"];if(window.confirm(info[s])){$.get("{% url 'web_orders_status' %}",{oid:id,status:s},function(data){if(data == "Y"){$("tr.oid"+id).remove();}else{alert("订单处理失败!");}},'text');}}</script>
</body>
</html>

这里增加了2个js操作,具体看代码,同时也是把无效订单的链接,加了上去。

同时还用的了bootstrap的模态框(静态框)的方法,展示订单详情,具体效果如下红色框:

具体可以看上面的js方法doShow。同时还加载了一个模板文件detail.html

  • 新建订单详情信息显示模板:/templates/web/detail.html。
<table class="table table-hover"><tr><th>序号</th><th>菜品名称</th><th>单价</th><th>数量</th><th>小计</th></tr>{% for vo in detaillist %}<tr><td>{{ forloop.counter }}</td><td>{{ vo.product_name }}</td><td>{{ vo.price }}</td><td>{{ vo.quantity }}</td><td>{% widthratio  vo.price 1 vo.quantity %}</td></tr>{% endfor %}
</table>

17. 项目实战之前台订单处理相关推荐

  1. 【SSH网上商城项目实战19】订单信息的级联入库以及页面的缓存问题

    购物车这一块还剩最后两个问题,就是订单信息的级联入库和页面缓存,这里的信息是指购物车和购物项,即我们将购物车的信息存入数据库的同时,也存入每个购物项的信息,而且外键都关联好,这涉及到了Hibernat ...

  2. Flask项目实战——6—(前台用户模型、前台登录注册、图形验证码、手机短信验证码、添加表单验证短信验证码请求)

    1.前台用户模型 前台用户模型定义 创建前台模型文件 apps/front/models.py # -*- encoding: utf-8 -*- """ @File : ...

  3. Node.js Express博客项目实战 之 前台页面数据的显示

    前台页面数据通过连接数据库信息将数数据显示在页面上: 最终实现的效果: 前台的路由: 1 // 导入express 2 3 let express = require("express&qu ...

  4. Flask项目实战——10—(前台板块页面搭建、文本编辑页面搭建、发布帖子信息前验证权限、帖子模型搭建、发布帖子功能、帖子信息渲染到前后台页面)

    1.前台板块页面搭建 视图文件查询数据传输到前台界面:前台蓝图文件:apps/front/views.py 注意数据的收集方法和数据传输的类型. # -*- encoding: utf-8 -*- & ...

  5. 最新后盾网Laravel框架重入门到实战 Laravel博客项目实战 陈华主讲 包含课件源码

    老师介绍 陈华,PHP明星讲师,大学生演讲网创始人,2010年开始开发整站项目,精通Laravel,Yii框架. 简 介 本套课程是一套以项目实战为主的Laravel5.2实战开发教程,是真正意义上的 ...

  6. Vue.js-Day08【项目实战(附带 完整项目源码)-day03:订单确认页面、美团支付页面、flex弹性盒子布局】

    Vue.js实训[基础理论(5天)+项目实战(5天)]博客汇总表[详细笔记] 实战项目源码[链接:https://pan.baidu.com/s/1r0Mje3Xnh8x4F1HyG4aQTA   提 ...

  7. 【VUE项目实战】59、订单的物流信息查询功能

    接上篇<58.订单修改收货地址的功能> 上一篇我们完成了订单列表的修改收货地址功能,本篇我们来实现订单的物流信息查询功能. 一.要实现的效果 我们要实现点击操作列的"物流进度&q ...

  8. JAVA项目实战开发电商项目案例(十)订单与支付模块

    文章目录 1项目架构 2项目采用技术 3订单与支付模块功能演示 4如何开发支付宝的支付模块以及订单模块 4.1首先需要编写前端页面以及JS文件 4.2其次需要编写JAVA后台接口 4.3支付模块分析 ...

  9. 【项目实战】Redis使用场景之待支付订单自动取消、订单自动收货

    一.使用背景 很多业务场景,例如订单过期自动删除,订单几天后自动好评,这些常用操作可以通过定时任务,数据库轮询做,但是订单量大的情况可能会对数据库产生大的压力. 二.Redis的key过期推送功能原理 ...

最新文章

  1. Redis 高负载排查记录
  2. 创建SSH keys
  3. 计算机网络部分(共44题),2018年10月自考04741计算机网络原理试卷及答案
  4. javascript-Global与Math对象
  5. php byte转 宽字符,C++宽字符与普通字符的转换实例详解
  6. android crash没有日志_App测试之monkey(四)-调试参数及日志
  7. Ajax实现搜索提示框~超级详细
  8. 安装ros-melodic遇到的各种问题及解决方法
  9. 一周总结汇总_2016-09-25
  10. 快速查找对方IP地址经典技巧汇总
  11. 远程连接端口修改,使用注册表修改
  12. ogg怎么转mp3格式,ogg转mp3方法
  13. 我不生产代码,只是代码的搬运工!超级多的 —— 第三方
  14. 【常用0x000000类型颜色代码表】
  15. PAT甲级 1032 Sharing
  16. selenium-java 实现QQ音乐自动登录获取cookie数据,爬取qq音乐会员资源和网易云音乐会员资源。实现任意网站的会员资源爬取
  17. 开源网络蜘蛛(Spider)一览
  18. 爬虫模式-JAVA获取省市区编码
  19. 正版授权|FastStone Image Viewer 图像编辑转换浏览器软件,个人免费的图像浏览器、转换器和编辑器。
  20. 三维电子无人机倾斜摄影数字沙盘开发第38课 实现简单的粒子效果

热门文章

  1. 文件实现输入三行hello,实现在每个hello后面换行
  2. Rainbow: 结合深度强化学习的改进
  3. Coding哥,魅族让你用洪荒之力来夺宝了!
  4. matlab 解缠原理,相位解缠算法matlab
  5. 220817笔试(速腾聚创)
  6. hi3516dv300 u-boot, 内核, 文件系统编译移植
  7. 基本流程图与跨职能流程图
  8. 如何绘制合格的泳道图(跨职能流程图)?
  9. Cisco(63)——多出口PBR+NAT解决方案
  10. 奔图P3022D黑白激光打印机 评测