摩尔街网上订餐系统【uni-app、微信小程序、安卓、毕业设计、课程设计、源码、选题】【源码+论文+答辩】

44 阅读5分钟

💖💖作者:计算机编程小咖 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜 网站实战项目 安卓/小程序实战项目 大数据实战项目 深度学习实战项目

@TOC

摩尔街网上订餐系统介绍

《摩尔街网上订餐系统》是一个基于现代化技术栈开发的综合性餐饮服务平台,采用Java+SpringBoot或Python+Django双后端架构设计,前端融合uni-app跨平台开发框架与微信小程序原生开发,同时支持安卓移动端应用,形成完整的C/S+B/S混合架构体系。系统以MySQL数据库为核心存储引擎,通过IDEA或PyCharm专业开发工具配合微信小程序开发工具进行协同开发。功能架构涵盖系统首页展示、商家信息管理、配送员调度、用户信息维护、菜品分类体系、菜品信息录入、订单全流程管理、配送信息追踪、配送反馈收集、用户充值记录、系统后台管理、在线客服支持、公告信息分类发布、轮播图动态管理、关于我们页面展示、个人中心个性化设置等20余个核心功能模块。该系统通过SpringBoot的轻量化特性或Django的快速开发优势,实现了从用户注册登录、浏览菜品、下单支付、订单跟踪到配送完成的完整业务闭环,为用户提供便捷的网上订餐体验,为商家提供高效的订单管理解决方案,为配送员提供智能化的配送调度服务,构建了一个功能完善、技术先进、用户体验优良的现代化网上订餐服务生态系统。

摩尔街网上订餐系统演示视频

演示视频

摩尔街网上订餐系统演示图片

菜品信息.png

登陆界面.png

订单信息.png

配送反馈.png

配送信息.png

用户信息.png

摩尔街网上订餐系统代码展示

from pyspark.sql import SparkSession
from pyspark.sql.functions import col, count, sum, avg, desc, when
from django.http import JsonResponse
from django.views.decorators.http import require_http_methods
from django.views.decorators.csrf import csrf_exempt
from django.db import transaction
from django.utils import timezone
from .models import Order, OrderItem, Menu, User, Delivery
import json
import decimal

spark = SparkSession.builder.appName("MooreStreetOrderingSystem").config("spark.sql.adaptive.enabled", "true").getOrCreate()

@csrf_exempt
@require_http_methods(["POST"])
def create_order(request):
   try:
       data = json.loads(request.body)
       user_id = data.get('user_id')
       merchant_id = data.get('merchant_id')
       items = data.get('items', [])
       delivery_address = data.get('delivery_address')
       phone_number = data.get('phone_number')
       if not all([user_id, merchant_id, items, delivery_address, phone_number]):
           return JsonResponse({'status': 'error', 'message': '订单信息不完整'})
       total_amount = decimal.Decimal('0.00')
       order_items_data = []
       with transaction.atomic():
           for item in items:
               menu_item = Menu.objects.get(id=item['menu_id'], merchant_id=merchant_id)
               if menu_item.stock < item['quantity']:
                   return JsonResponse({'status': 'error', 'message': f'{menu_item.name}库存不足'})
               item_total = menu_item.price * item['quantity']
               total_amount += item_total
               order_items_data.append({
                   'menu_item': menu_item,
                   'quantity': item['quantity'],
                   'price': menu_item.price,
                   'subtotal': item_total
               })
               menu_item.stock -= item['quantity']
               menu_item.save()
           delivery_fee = decimal.Decimal('5.00')
           total_amount += delivery_fee
           order = Order.objects.create(
               user_id=user_id,
               merchant_id=merchant_id,
               total_amount=total_amount,
               delivery_address=delivery_address,
               phone_number=phone_number,
               status='pending',
               order_time=timezone.now()
           )
           for item_data in order_items_data:
               OrderItem.objects.create(
                   order=order,
                   menu_item=item_data['menu_item'],
                   quantity=item_data['quantity'],
                   price=item_data['price'],
                   subtotal=item_data['subtotal']
               )
           order_df = spark.createDataFrame([(order.id, user_id, merchant_id, float(total_amount), str(timezone.now()))], 
                                          ["order_id", "user_id", "merchant_id", "amount", "order_time"])
           order_df.write.mode("append").option("header", "true").csv("/tmp/order_analysis")
           return JsonResponse({
               'status': 'success',
               'order_id': order.id,
               'total_amount': str(total_amount),
               'message': '订单创建成功'
           })
   except Exception as e:
       return JsonResponse({'status': 'error', 'message': str(e)})

@csrf_exempt
@require_http_methods(["POST"])
def assign_delivery(request):
   try:
       data = json.loads(request.body)
       order_id = data.get('order_id')
       if not order_id:
           return JsonResponse({'status': 'error', 'message': '订单ID不能为空'})
       order = Order.objects.get(id=order_id, status='confirmed')
       available_deliverers = Delivery.objects.filter(status='available', is_active=True)
       if not available_deliverers.exists():
           return JsonResponse({'status': 'error', 'message': '暂无可用配送员'})
       delivery_df = spark.createDataFrame(
           [(d.id, d.current_latitude, d.current_longitude, d.completed_orders) 
            for d in available_deliverers],
           ["delivery_id", "latitude", "longitude", "completed_orders"]
       )
       order_lat = float(data.get('order_latitude', 0))
       order_lng = float(data.get('order_longitude', 0))
       delivery_with_distance = delivery_df.withColumn(
           "distance", 
           ((col("latitude") - order_lat) ** 2 + (col("longitude") - order_lng) ** 2) ** 0.5
       ).withColumn(
           "priority_score",
           when(col("completed_orders") > 100, col("distance") * 0.8)
           .when(col("completed_orders") > 50, col("distance") * 0.9)
           .otherwise(col("distance"))
       )
       best_delivery = delivery_with_distance.orderBy("priority_score").first()
       selected_delivery = Delivery.objects.get(id=best_delivery.delivery_id)
       with transaction.atomic():
           order.delivery_person = selected_delivery
           order.status = 'assigned'
           order.assigned_time = timezone.now()
           order.save()
           selected_delivery.status = 'busy'
           selected_delivery.current_order_id = order_id
           selected_delivery.save()
       delivery_assignment_df = spark.createDataFrame(
           [(order_id, best_delivery.delivery_id, float(best_delivery.distance), str(timezone.now()))],
           ["order_id", "delivery_id", "distance", "assigned_time"]
       )
       delivery_assignment_df.write.mode("append").option("header", "true").csv("/tmp/delivery_analysis")
       return JsonResponse({
           'status': 'success',
           'delivery_person': selected_delivery.name,
           'delivery_phone': selected_delivery.phone,
           'estimated_time': 30,
           'message': '配送员分配成功'
       })
   except Exception as e:
       return JsonResponse({'status': 'error', 'message': str(e)})

@csrf_exempt
@require_http_methods(["GET"])
def get_sales_analytics(request):
   try:
       merchant_id = request.GET.get('merchant_id')
       days = int(request.GET.get('days', 30))
       if not merchant_id:
           return JsonResponse({'status': 'error', 'message': '商家ID不能为空'})
       start_date = timezone.now() - timezone.timedelta(days=days)
       orders = Order.objects.filter(
           merchant_id=merchant_id,
           order_time__gte=start_date,
           status__in=['completed', 'delivered']
       )
       orders_data = [(o.id, o.user_id, float(o.total_amount), o.order_time.strftime('%Y-%m-%d'), 
                      o.order_time.hour) for o in orders]
       if not orders_data:
           return JsonResponse({'status': 'success', 'data': {'total_sales': 0, 'order_count': 0}})
       orders_df = spark.createDataFrame(orders_data, 
                                       ["order_id", "user_id", "amount", "order_date", "hour"])
       daily_sales = orders_df.groupBy("order_date").agg(
           sum("amount").alias("daily_amount"),
           count("order_id").alias("daily_orders")
       ).orderBy("order_date")
       hourly_distribution = orders_df.groupBy("hour").agg(
           count("order_id").alias("order_count")
       ).orderBy("hour")
       user_analysis = orders_df.groupBy("user_id").agg(
           sum("amount").alias("total_spent"),
           count("order_id").alias("order_frequency")
       ).orderBy(desc("total_spent"))
       total_sales = orders_df.agg(sum("amount")).collect()[0][0]
       total_orders = orders_df.count()
       avg_order_value = orders_df.agg(avg("amount")).collect()[0][0]
       daily_sales_list = [{'date': row.order_date, 'sales': float(row.daily_amount), 
                          'orders': row.daily_orders} for row in daily_sales.collect()]
       hourly_data = [{'hour': row.hour, 'orders': row.order_count} 
                     for row in hourly_distribution.collect()]
       top_customers = [{'user_id': row.user_id, 'total_spent': float(row.total_spent),
                        'frequency': row.order_frequency} for row in user_analysis.limit(10).collect()]
       analytics_result_df = spark.createDataFrame(
           [(merchant_id, float(total_sales), total_orders, float(avg_order_value), str(timezone.now()))],
           ["merchant_id", "total_sales", "total_orders", "avg_order_value", "analysis_time"]
       )
       analytics_result_df.write.mode("append").option("header", "true").csv("/tmp/merchant_analytics")
       return JsonResponse({
           'status': 'success',
           'data': {
               'total_sales': float(total_sales or 0),
               'total_orders': total_orders,
               'avg_order_value': float(avg_order_value or 0),
               'daily_sales': daily_sales_list,
               'hourly_distribution': hourly_data,
               'top_customers': top_customers
           }
       })
   except Exception as e:
       return JsonResponse({'status': 'error', 'message': str(e)})

摩尔街网上订餐系统文档展示

文档.png

💖💖作者:计算机编程小咖 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜 网站实战项目 安卓/小程序实战项目 大数据实战项目 深度学习实战项目