💖💖作者:计算机编程小咖 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜 网站实战项目 安卓/小程序实战项目 大数据实战项目 深度学习实战项目
@TOC
团子烘焙销售服务系统介绍
团子烘焙销售服务系统是一个基于现代Web技术栈开发的综合性烘焙商业管理平台,采用B/S架构设计,支持Java和Python两种开发语言实现。系统后端采用SpringBoot框架(Java版本)或Django框架(Python版本)构建,前端使用Vue.js结合ElementUI组件库开发,数据库采用MySQL进行数据存储和管理。该系统围绕烘焙行业的完整业务流程设计,涵盖了从商品管理到订单处理的全链条功能模块。系统核心功能包括用户信息管理、烘焙师信息维护、烘焙商品分类管理、烘焙作品展示、订单全流程管理(包含订单创建、支付、发货、签收等状态追踪)、薪酬信息统计以及公告信息发布等。在订单管理方面,系统提供了完善的订单状态分类,支持已完成订单、已支付订单、已发货订单、已退款订单的分别管理,确保订单处理流程的规范化和透明化。系统还集成了个人中心功能,为用户提供个性化的操作界面和信息管理功能。整个系统界面简洁美观,操作流程符合用户习惯,能够有效提升烘焙店铺的运营效率,为烘焙行业的数字化转型提供了完整的解决方案,同时也为计算机专业学生提供了一个功能完备、技术栈主流、易于理解和扩展的优秀毕业设计选题。
团子烘焙销售服务系统演示视频
团子烘焙销售服务系统演示图片
团子烘焙销售服务系统代码展示
from pyspark.sql import SparkSession
from django.http import JsonResponse
from django.views import View
from django.db import transaction
from decimal import Decimal
from datetime import datetime
import json
spark = SparkSession.builder.appName("TuanZiBakerySystem").master("local[*]").getOrCreate()
class OrderManagementService(View):
def create_order(self, request):
try:
order_data = json.loads(request.body)
user_id = order_data.get('user_id')
product_items = order_data.get('product_items')
total_amount = Decimal('0.00')
order_details = []
with transaction.atomic():
for item in product_items:
product_id = item.get('product_id')
quantity = int(item.get('quantity'))
product = BakingProduct.objects.get(id=product_id)
if product.stock_quantity < quantity:
return JsonResponse({'error': f'商品{product.name}库存不足'}, status=400)
item_total = product.price * quantity
total_amount += item_total
order_detail = {
'product_id': product_id,
'product_name': product.name,
'unit_price': product.price,
'quantity': quantity,
'subtotal': item_total
}
order_details.append(order_detail)
product.stock_quantity -= quantity
product.save()
order = BakingOrder.objects.create(
user_id=user_id,
order_number=self.generate_order_number(),
total_amount=total_amount,
order_status='待支付',
create_time=datetime.now()
)
for detail in order_details:
OrderDetail.objects.create(
order=order,
product_id=detail['product_id'],
quantity=detail['quantity'],
unit_price=detail['unit_price'],
subtotal=detail['subtotal']
)
order_spark_data = spark.createDataFrame([(order.id, order.order_number, float(total_amount), order.order_status)])
order_spark_data.write.mode("append").option("path", "/data/orders").saveAsTable("baking_orders")
return JsonResponse({
'success': True,
'order_id': order.id,
'order_number': order.order_number,
'total_amount': str(total_amount)
})
except Exception as e:
return JsonResponse({'error': f'订单创建失败: {str(e)}'}, status=500)
class ProductManagementService(View):
def add_product(self, request):
try:
product_data = json.loads(request.body)
category_id = product_data.get('category_id')
product_name = product_data.get('name')
price = Decimal(product_data.get('price'))
stock_quantity = int(product_data.get('stock_quantity'))
description = product_data.get('description', '')
baker_id = product_data.get('baker_id')
if BakingProduct.objects.filter(name=product_name).exists():
return JsonResponse({'error': '商品名称已存在'}, status=400)
if price <= 0:
return JsonResponse({'error': '商品价格必须大于0'}, status=400)
if stock_quantity < 0:
return JsonResponse({'error': '库存数量不能为负数'}, status=400)
category = ProductCategory.objects.get(id=category_id)
baker = BakingMaster.objects.get(id=baker_id)
product = BakingProduct.objects.create(
name=product_name,
category=category,
price=price,
stock_quantity=stock_quantity,
description=description,
baker=baker,
create_time=datetime.now(),
is_active=True
)
product_spark_data = [(product.id, product.name, float(price), stock_quantity, category.name, baker.name)]
product_df = spark.createDataFrame(product_spark_data, ["id", "name", "price", "stock", "category", "baker"])
product_df.write.mode("append").option("path", "/data/products").saveAsTable("baking_products")
existing_products = spark.sql("SELECT * FROM baking_products WHERE category = '" + category.name + "'")
category_stats = existing_products.groupBy("category").agg(
{"price": "avg", "stock": "sum", "id": "count"}
).collect()
return JsonResponse({
'success': True,
'product_id': product.id,
'message': '商品添加成功',
'category_stats': {
'avg_price': float(category_stats[0][1]) if category_stats else 0,
'total_stock': category_stats[0][2] if category_stats else 0,
'product_count': category_stats[0][3] if category_stats else 0
}
})
except Exception as e:
return JsonResponse({'error': f'商品添加失败: {str(e)}'}, status=500)
class SalaryManagementService(View):
def calculate_baker_salary(self, request):
try:
request_data = json.loads(request.body)
baker_id = request_data.get('baker_id')
start_date = datetime.strptime(request_data.get('start_date'), '%Y-%m-%d')
end_date = datetime.strptime(request_data.get('end_date'), '%Y-%m-%d')
baker = BakingMaster.objects.get(id=baker_id)
base_salary = baker.base_salary or Decimal('3000.00')
commission_rate = baker.commission_rate or Decimal('0.05')
completed_orders = BakingOrder.objects.filter(
baker=baker,
order_status='已完成',
create_time__range=[start_date, end_date]
)
total_sales = sum([order.total_amount for order in completed_orders])
commission_amount = total_sales * commission_rate
bonus_amount = Decimal('0.00')
if len(completed_orders) > 50:
bonus_amount = Decimal('500.00')
elif len(completed_orders) > 30:
bonus_amount = Decimal('300.00')
elif len(completed_orders) > 20:
bonus_amount = Decimal('200.00')
total_salary = base_salary + commission_amount + bonus_amount
deduction_amount = Decimal('0.00')
rejected_orders = BakingOrder.objects.filter(
baker=baker,
order_status='已退款',
create_time__range=[start_date, end_date]
).count()
if rejected_orders > 5:
deduction_amount = Decimal(str(rejected_orders * 50))
final_salary = total_salary - deduction_amount
salary_data = [(baker.id, baker.name, float(base_salary), float(commission_amount),
float(bonus_amount), float(deduction_amount), float(final_salary),
len(completed_orders), float(total_sales))]
salary_df = spark.createDataFrame(salary_data,
["baker_id", "baker_name", "base_salary", "commission",
"bonus", "deduction", "final_salary", "order_count", "total_sales"])
salary_df.write.mode("append").option("path", "/data/salaries").saveAsTable("baker_salaries")
all_salaries = spark.sql(f"SELECT * FROM baker_salaries WHERE baker_id = {baker_id}")
avg_monthly_salary = all_salaries.agg({"final_salary": "avg"}).collect()[0][0]
SalaryRecord.objects.create(
baker=baker,
period_start=start_date,
period_end=end_date,
base_salary=base_salary,
commission_amount=commission_amount,
bonus_amount=bonus_amount,
deduction_amount=deduction_amount,
final_salary=final_salary,
order_count=len(completed_orders),
total_sales=total_sales,
create_time=datetime.now()
)
return JsonResponse({
'success': True,
'salary_details': {
'baker_name': baker.name,
'base_salary': str(base_salary),
'commission_amount': str(commission_amount),
'bonus_amount': str(bonus_amount),
'deduction_amount': str(deduction_amount),
'final_salary': str(final_salary),
'order_count': len(completed_orders),
'total_sales': str(total_sales),
'avg_monthly_salary': float(avg_monthly_salary) if avg_monthly_salary else 0
}
})
except Exception as e:
return JsonResponse({'error': f'薪酬计算失败: {str(e)}'}, status=500)
团子烘焙销售服务系统文档展示
💖💖作者:计算机编程小咖 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜 网站实战项目 安卓/小程序实战项目 大数据实战项目 深度学习实战项目