下载地址:https://www.pan38.com/dow/share.php?code=JCnzE 提取密码:1133
这段代码实现了一个完整的拼多多订单生成工具,包含订单生成、数据处理和导出功能。主模块可以生成包含500条随机订单数据的Excel文件,辅助模块提供了订单签名、筛选和统计功能。
import random
import pandas as pd
from datetime import datetime, timedelta
from faker import Faker
class PDDOrderGenerator:
def init(self):
self.fake = Faker('zh_CN')
self.products = [
{'id': 1001, 'name': '智能手机', 'price': 1999, 'category': '电子产品'},
{'id': 1002, 'name': '蓝牙耳机', 'price': 299, 'category': '电子产品'},
{'id': 2001, 'name': '纯棉T恤', 'price': 39, 'category': '服装'},
{'id': 2002, 'name': '休闲裤', 'price': 89, 'category': '服装'},
{'id': 3001, 'name': '零食大礼包', 'price': 59, 'category': '食品'}
]
def generate_order(self, order_count=100):
orders = []
for i in range(1, order_count+1):
product = random.choice(self.products)
quantity = random.randint(1, 5)
discount = round(random.uniform(0.8, 0.95), 2)
order = {
'order_id': f'PDD{datetime.now().strftime("%Y%m%d")}{i:05d}',
'customer_name': self.fake.name(),
'phone': self.fake.phone_number(),
'address': self.fake.address(),
'product_id': product['id'],
'product_name': product['name'],
'unit_price': product['price'],
'quantity': quantity,
'discount': discount,
'total_price': round(product['price'] * quantity * discount, 2),
'order_time': (datetime.now() - timedelta(days=random.randint(0, 30))).strftime('%Y-%m-%d %H:%M:%S'),
'payment_method': random.choice(['微信支付', '支付宝', '银行卡']),
'order_status': random.choice(['待发货', '已发货', '已完成', '已退款'])
}
orders.append(order)
return pd.DataFrame(orders)
def export_to_excel(self, df, filename='pdd_orders.xlsx'):
writer = pd.ExcelWriter(filename, engine='xlsxwriter')
df.to_excel(writer, sheet_name='订单数据', index=False)
workbook = writer.book
worksheet = writer.sheets['订单数据']
# 设置格式
header_format = workbook.add_format({
'bold': True,
'text_wrap': True,
'valign': 'top',
'fg_color': '#D7E4BC',
'border': 1
})
# 应用格式
for col_num, value in enumerate(df.columns.values):
worksheet.write(0, col_num, value, header_format)
# 自动调整列宽
for i, col in enumerate(df.columns):
max_len = max(df[col].astype(str).map(len).max(), len(col)) + 2
worksheet.set_column(i, i, max_len)
writer.close()
print(f"订单数据已导出到 {filename}")
if name == 'main':
generator = PDDOrderGenerator()
orders_df = generator.generate_order(500)
generator.export_to_excel(orders_df)
hashlib
import json
from typing import Dict, List
def generate_order_signature(order_data: Dict) -> str:
"""生成订单签名"""
sorted_data = sorted(order_data.items())
data_str = json.dumps(sorted_data, ensure_ascii=False)
return hashlib.md5(data_str.encode('utf-8')).hexdigest()
def filter_orders_by_status(orders: List[Dict], status: str) -> List[Dict]:
"""按状态筛选订单"""
return [order for order in orders if order['order_status'] == status]
def calculate_daily_sales(orders: List[Dict]) -> Dict[str, float]:
"""计算每日销售额"""
daily_sales = {}
for order in orders:
date = order['order_time'].split()[0]
daily_sales[date] = daily_sales.get(date, 0) + order['total_price']
return daily_sales
def get_top_products(orders: List[Dict], top_n: int = 5) -> List[Dict]:
"""获取销量最高的商品"""
product_stats = {}
for order in orders:
product_id = order['product_id']
product_stats[product_id] = product_stats.get(product_id, {
'product_id': product_id,
'product_name': order['product_name'],
'total_quantity': 0,
'total_sales': 0
})
product_stats[product_id]['total_quantity'] += order['quantity']
product_stats[product_id]['total_sales'] += order['total_price']
return sorted(product_stats.values(), key=lambda x: x['total_quantity'], reverse=True)[:top_n]