【Python】购物管理系统 Django+Vue框架 计算机毕业设计项目 PyCharm+Navicat+MySQL安装 附源码+文档+讲解

43 阅读4分钟

前言

一.开发工具简介

  • 开发语言:Python
  • 后端框架:Django
  • 前端:Vue
  • 数据库:MySQL
  • 系统架构:B/S
  • 开发工具:PyCharm

二.系统内容简介

购物管理系统是一个基于Django框架和Vue前端技术构建的现代化电商管理平台,采用B/S架构模式,使用MySQL数据库进行数据存储。该系统集成了完整的电商业务流程管理功能,包括用户账户管理、商品分类与信息管理、订单处理、充值记录跟踪等核心业务模块。系统还具备举报记录管理功能,确保平台交易环境的安全性和规范性。同时,系统内置了在线留言和交流论坛模块,为用户提供互动交流平台,通过论坛分类管理功能实现内容的有序组织。管理员可以通过系统管理模块对整个平台进行统一配置和监控,确保系统稳定运行。该系统通过Python语言开发,利用Django框架的强大功能实现了高效的后端业务逻辑处理,前端采用Vue框架提供流畅的用户交互体验,整体架构设计合理,功能模块划分清晰,能够满足中小型电商平台的日常运营管理需求。

三.系统功能演示

购物管理系统-链接

四.系统界面展示

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

五.系统源码展示


from pyspark.sql import SparkSession
from django.db import transaction
from django.core.paginator import Paginator
from django.utils import timezone
from decimal import Decimal
import hashlib
import logging

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

def user_registration_and_management(request_data):
    username = request_data.get('username')
    password = request_data.get('password')
    email = request_data.get('email')
    phone = request_data.get('phone')
    if User.objects.filter(username=username).exists():
        return {'status': 'error', 'message': '用户名已存在'}
    if User.objects.filter(email=email).exists():
        return {'status': 'error', 'message': '邮箱已被注册'}
    password_hash = hashlib.sha256(password.encode()).hexdigest()
    with transaction.atomic():
        user = User.objects.create(
            username=username,
            password=password_hash,
            email=email,
            phone=phone,
            registration_time=timezone.now(),
            status='active'
        )
        UserProfile.objects.create(user=user, avatar='default.jpg', points=0)
        user_data = spark.createDataFrame([(user.id, username, email, phone)], 
                                        ['user_id', 'username', 'email', 'phone'])
        user_data.write.mode('append').saveAsTable('user_analytics')
    logging.info(f'新用户注册: {username}')
    return {'status': 'success', 'user_id': user.id, 'message': '注册成功'}

def product_category_management(request_data):
    action = request_data.get('action')
    category_name = request_data.get('category_name')
    parent_id = request_data.get('parent_id', None)
    category_id = request_data.get('category_id')
    if action == 'create':
        if Category.objects.filter(name=category_name, parent_id=parent_id).exists():
            return {'status': 'error', 'message': '分类已存在'}
        with transaction.atomic():
            category = Category.objects.create(
                name=category_name,
                parent_id=parent_id,
                sort_order=request_data.get('sort_order', 0),
                is_active=True,
                created_time=timezone.now()
            )
            if parent_id:
                Category.objects.filter(id=parent_id).update(has_children=True)
            category_df = spark.createDataFrame([(category.id, category_name, parent_id or 0)],
                                              ['category_id', 'name', 'parent_id'])
            category_df.write.mode('append').saveAsTable('category_analytics')
        return {'status': 'success', 'category_id': category.id}
    elif action == 'update':
        category = Category.objects.get(id=category_id)
        category.name = category_name
        category.sort_order = request_data.get('sort_order', category.sort_order)
        category.save()
        return {'status': 'success', 'message': '分类更新成功'}
    elif action == 'delete':
        if Product.objects.filter(category_id=category_id).exists():
            return {'status': 'error', 'message': '分类下有商品,无法删除'}
        Category.objects.filter(id=category_id).delete()
        return {'status': 'success', 'message': '分类删除成功'}

def order_processing_management(request_data):
    user_id = request_data.get('user_id')
    products = request_data.get('products', [])
    shipping_address = request_data.get('shipping_address')
    payment_method = request_data.get('payment_method')
    total_amount = Decimal('0.00')
    order_items = []
    for product_data in products:
        product_id = product_data['product_id']
        quantity = int(product_data['quantity'])
        product = Product.objects.get(id=product_id)
        if product.stock < quantity:
            return {'status': 'error', 'message': f'商品 {product.name} 库存不足'}
        item_total = product.price * quantity
        total_amount += item_total
        order_items.append({
            'product': product,
            'quantity': quantity,
            'price': product.price,
            'total': item_total
        })
    with transaction.atomic():
        order = Order.objects.create(
            user_id=user_id,
            order_number=f'ORD{timezone.now().strftime("%Y%m%d%H%M%S")}{user_id}',
            total_amount=total_amount,
            shipping_address=shipping_address,
            payment_method=payment_method,
            status='pending',
            created_time=timezone.now()
        )
        for item in order_items:
            OrderItem.objects.create(
                order=order,
                product=item['product'],
                quantity=item['quantity'],
                price=item['price'],
                total_amount=item['total']
            )
            Product.objects.filter(id=item['product'].id).update(
                stock=models.F('stock') - item['quantity'],
                sales_count=models.F('sales_count') + item['quantity']
            )
        order_df = spark.createDataFrame([(order.id, user_id, float(total_amount), len(products))],
                                       ['order_id', 'user_id', 'amount', 'item_count'])
        order_df.write.mode('append').saveAsTable('order_analytics')
    user = User.objects.get(id=user_id)
    UserProfile.objects.filter(user=user).update(points=models.F('points') + int(total_amount * Decimal('0.1')))
    logging.info(f'订单创建成功: {order.order_number}, 用户: {user_id}')
    return {'status': 'success', 'order_id': order.id, 'order_number': order.order_number}

六.系统文档展示

在这里插入图片描述

结束

💕💕文末获取源码联系 计算机程序员小杨