# Order-WechatMini
#后端
##Cart- 购物车
###View.py-控制器层
```python
import json
from django.http import HttpResponse
from django.shortcuts import render
from django.utils.safestring import mark_safe
from . import redis
def index(request):
return render(request, 'Cart/index.html', {})
def room(request, room_name):
return render(request, 'Cart/room.html', {
'room_name_json': mark_safe(json.dumps(room_name))
})
def add_menu(request, desk):
detail = redis.creat_detail(desk, request.POST.get('name'), str(request.POST.get('num')))
redis.set_cache(detail)
return HttpResponse()
def del_menu(request, desk):
detail = redis.creat_detail(desk, request.POST.get('name'), str(request.POST.get('num')))
redis.del_cache(detail)
return HttpResponse()
def clean_menu(request, desk):
redis.clean_cache(desk)
return HttpResponse()
def get_menu(request, desk):
return HttpResponse(redis.get_cache(desk))
```
###consumers.py websocket 加减商品到购物车
```python
from asgiref.sync import async_to_sync
from channels.generic.websocket import WebsocketConsumer
import json
from . import redis
class ChatConsumer(WebsocketConsumer):
def connect(self):
self.room_name = self.scope['url_route']['kwargs']['room_name']
self.room_group_name = 'chat_%s' % self.room_name
# Join room group
async_to_sync(self.channel_layer.group_add)(
self.room_group_name,
self.channel_name
)
self.accept()
def disconnect(self, close_code):
# Leave room group
async_to_sync(self.channel_layer.group_discard)(
self.room_group_name,
self.channel_name
)
# Receive message from WebSocket
def receive(self, text_data):
text_data_json = json.loads(text_data)
message = text_data_json['message']
cache_list = json.loads(message)
desk = int(self.scope['url_route']['kwargs']['room_name'])
# 处理请求
if cache_list['action'] == "+":
redis.set_cache(cache_list['detail'])
if cache_list['action'] == "-":
redis.del_cache(cache_list['detail'])
if cache_list['action'] == "*":
redis.clean_cache(desk)
# Send message to room group
async_to_sync(self.channel_layer.group_send)(
self.room_group_name,
{
'type': 'chat_message',
'message': redis.get_cache(desk)
}
)
# Receive message from room group
def chat_message(self, event):
message = event['message']
# Send message to WebSocket
self.send(text_data=json.dumps({
'message': json.dumps(message)
}))
```
###url 路由
```python
from django.urls import path
from . import views
from django.conf.urls import url
urlpatterns = [
path('', views.index, name='index'),
url(r'^(?P<room_name>[^/]+)/$', views.room, name='room'),
path('<int:desk>/add/', views.add_menu),
path('<int:desk>/del/', views.del_menu),
path('<int:desk>/clean/', views.clean_menu),
path('<int:desk>/', views.get_menu),
]
```
##Data ORM表结构和核心数据(菜单和订单)
###models.py 表结构
```python
from django.db import models
from django.db.models import Sum
from django.db.models.signals import post_save
from django.dispatch import receiver
from django.utils.html import format_html
from django.core import serializers
class MenuType(models.Model):
Name = models.CharField('菜品分类', max_length=50, primary_key=True)
Sort = models.DecimalField('排序', max_digits=20, decimal_places=0, default=0)
def __str__(self):
return self.Name
class Meta:
verbose_name_plural = '菜品分类'
class Menu(models.Model):
Name = models.CharField('菜名', max_length=50, primary_key=True)
Type = models.ForeignKey(MenuType, null=True, on_delete=models.CASCADE, verbose_name='菜品分类', related_name='Menus')
Price = models.DecimalField('价格', max_digits=5, decimal_places=2)
Img = models.ImageField('照片', upload_to='img')
Introduction = models.CharField('简介', max_length=50)
def __str__(self):
return self.Name
class Meta:
verbose_name_plural = '菜单'
class User(models.Model):
OpenId = models.CharField('用户id', max_length=50, primary_key=True)
Name = models.CharField('昵称', max_length=50)
Session = models.CharField('session', max_length=50)
MRP = models.DecimalField('积分', default=0, decimal_places=0,max_digits=10)
def __str__(self):
return self.Name
class Meta:
verbose_name_plural = '用户'
class Desk(models.Model):
DeskMum = models.DecimalField('桌号', max_digits=5, decimal_places=0, primary_key=True)
def __str__(self):
return str(self.DeskMum)
class Meta:
verbose_name_plural = '桌号'
class Order(models.Model):
State_CHOICES = (
('0', '未付款'),
('1', '微信'),
('2', '支付宝'),
('3', '现金'),
)
Cook_CHOICES = (
('1', '已做'),
('0', '未做'),
)
Off = (
('1', '原价'),
('0.98', '98折'),
('0.88', '88折'),
)
OrderId = models.DecimalField('订单号', max_digits=20, decimal_places=0, primary_key=True)
User = models.ForeignKey(User, null=False, to_field='OpenId', on_delete=models.DO_NOTHING, verbose_name='用户')
Desk = models.ForeignKey(Desk, null=False, on_delete=models.DO_NOTHING, verbose_name='桌号')
Time = models.DateTimeField(auto_now_add=True, verbose_name='时间')
Total = models.DecimalField('总金额', max_digits=10, decimal_places=2, default=0)
Off = models.CharField(max_length=6, choices=Off, verbose_name='折扣', default='1')
PayTotal = models.DecimalField('实付金额', max_digits=10, decimal_places=2, default=0)
OrderState = models.CharField(max_length=6, choices=State_CHOICES, verbose_name='付款状态', default='0')
CookState = models.CharField(max_length=6, choices=Cook_CHOICES, verbose_name='后厨状态', default='0')
Comments = models.CharField(max_length=200, verbose_name='备注', default='无')
Menus = models.ManyToManyField(Menu, through='OrderDetail')
def __str__(self):
return str(self.OrderId)
def colored_status(self):
if self.OrderState == '0':
color_code = 'red'
else:
color_code = 'green'
return format_html(
'<span style="color: {};">{}</span>',
color_code,
self.OrderId,
)
colored_status.short_description = '订单号'
class Meta:
verbose_name_plural = '订单'
ordering = ["-Time"]
class OrderDetail(models.Model):
menu = models.ForeignKey(Menu, on_delete=models.CASCADE)
order = models.ForeignKey(Order, on_delete=models.CASCADE)
Number = models.IntegerField('数量', default=1)
Price = models.DecimalField('单价快照', null=True, max_digits=5, decimal_places=2, default=0)
def save(self, *args, **kwargs):
self.Price = Menu.objects.get(Name=self.menu).Price
super().save(*args, **kwargs)
class Meta:
verbose_name_plural = '订单详情'
def __str__(self):
return str(self.menu)
class Expenses(models.Model):
Name = models.CharField('备注', max_length=50, default="采购")
Time = models.DateTimeField(verbose_name='时间')
Price = models.DecimalField('金额', max_digits=10, decimal_places=2)
class Meta:
verbose_name_plural = '支出'
```
###views.py 核心数据
```python
import json
import time
from django.http import HttpResponse
from django.core import serializers
from Cart import redis
# Create your views here.
from Data.models import Menu, MenuType, Order, Desk, User, OrderDetail
import pickle
def get_menu_type(request):
data = MenuType.
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【项目资源】: 包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。 包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。
资源推荐
资源详情
资源评论
收起资源包目录
基于微信小程序的多人协同点餐系统 Django Mysql .zip (268个子文件)
app.5abc0673.css 197KB
about.0564784e.css 621B
.gitattributes 66B
room.html 1KB
index.html 874B
index.html 741B
favicon.ico 1KB
Order.iml 1KB
backoffice.iml 648B
1C83DA3E-1AFE-4F88-818E-D8AD300B408A.jpeg 658KB
QQ图片20180920205843_wEQTsY6.jpg 986KB
云虫女主_月牙儿_鬼刀壁纸_彼岸图网.jpg 829KB
4.jpg 146KB
4.jpg 146KB
微信图片_20180923012934.jpg 137KB
2.jpg 113KB
2.jpg 113KB
1.jpg 97KB
1.jpg 97KB
本店特色炒酸笋粉.jpg 65KB
3.jpg 64KB
3.jpg 64KB
111.jpg 56KB
秘制锡纸烤鱼.jpg 43KB
微信图片_20180920231325.jpg 41KB
微信图片_20180920204854.jpg 40KB
微信图片_20180920222845.jpg 38KB
微信图片_20180920231439.jpg 35KB
微信图片_20180920231236.jpg 35KB
微信图片_20180920225424.jpg 32KB
timg.jpg 30KB
微信图片_20180920212615.jpg 30KB
凉拌墨鱼嘴.jpg 29KB
凉拌萝卜.jpg 29KB
脆拌卤鸭肠.jpg 28KB
微信图片_20180920220614.jpg 27KB
微信图片_20180920224549.jpg 27KB
微信图片_20180920223359.jpg 27KB
微信图片_20180920231941.jpg 27KB
香辣鸡丝.jpg 27KB
微信图片_20180920230008.jpg 26KB
鲜虾炒粉干.jpg 26KB
微信图片_20180920205602.jpg 26KB
QQ图片20180920205843.jpg 25KB
微信图片_20180920222131_Y1Nqd8D.jpg 25KB
微信图片_20180920222131.jpg 25KB
微信图片_20180920205702.jpg 25KB
微信图片_20180920230830.jpg 24KB
微信图片_20180920205645.jpg 24KB
微信图片_20180920205711.jpg 22KB
微信图片_20180920205623.jpg 21KB
微信图片_20180920205635.jpg 20KB
5e8e65de03eb37d7ad8764c4531e2f16293765.jpg 18KB
微信图片_20180921165304.jpg 12KB
菜品图片_mf5zgpE.jpg 10KB
菜品图片_uOduOLL.jpg 10KB
菜品图片_hDX2En6.jpg 10KB
菜品图片_n5dchUm.jpg 10KB
菜品图片_SUrM3Jg.jpg 10KB
菜品图片_NHNa3sA.jpg 10KB
菜品图片_LpBrbHv.jpg 10KB
菜品图片_AVt7S6M.jpg 10KB
菜品图片_Btil7qK.jpg 10KB
菜品图片_eWGraBc.jpg 10KB
菜品图片_RqhCnGw.jpg 10KB
菜品图片_FV5sKKs.jpg 10KB
菜品图片_EKcvcaV.jpg 10KB
菜品图片_kZyML9u.jpg 10KB
菜品图片_RLqZ9xQ.jpg 10KB
菜品图片_WctNKQw.jpg 10KB
菜品图片_lZyYjTs.jpg 10KB
菜品图片_ZMUYXX5.jpg 10KB
菜品图片.jpg 10KB
3.jpg 8KB
1.jpg 8KB
2.jpg 8KB
chunk-vendors.5dfc6cca.js 1.55MB
about.83699d7c.js 12KB
app.9f7249ae.js 6KB
carte.js 4KB
confirm.js 2KB
pay.js 2KB
index.js 2KB
orders.js 2KB
detail.js 1KB
login.js 1KB
me.js 1KB
app.js 515B
util.js 472B
project.config.json 1KB
app.json 924B
index.json 27B
detail.json 27B
orders.json 27B
confirm.json 27B
carte.json 27B
pay.json 27B
me.json 27B
login.json 27B
chunk-vendors.5dfc6cca.js.map 7.26MB
共 268 条
- 1
- 2
- 3
资源评论
妄北y
- 粉丝: 1w+
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功