from copy import deepcopy class DemoStore: def __init__(self) -> None: self.users = { ("sales01", "salesman"): { "user_id": 1, "username": "sales01", "real_name": "张三", "mobile": "13800000000", "role_id": 2, "role_name": "业务员", "role_code": "salesman", "token": "demo-sales-token", "menus": [{"menu_name": "我的订单", "menu_path": "/orders"}], "permissions": ["order:create", "order:list", "order:submit"], }, ("admin01", "admin"): { "user_id": 99, "username": "admin01", "real_name": "管理员", "mobile": "13900000001", "role_id": 1, "role_name": "管理员", "role_code": "admin", "token": "demo-admin-token", "menus": [{"menu_name": "后台首页", "menu_path": "/dashboard"}], "permissions": ["system:user:list", "system:role:list", "order:list"], }, } self.orders = [ { "order_id": 9001, "order_no": "SO202605140001", "customer_name": "李四", "customer_mobile": "13900000000", "salesman_name": "张三", "order_status": "draft", "sale_price_total": 100.0, "profit_total": 20.0, "commission_amount": 50.0, "created_at": "2026-05-14 10:00:00", "items": [], "approve_logs": [], "attachments": [], "remark": "演示订单", } ] def login(self, username: str, role_type: str) -> dict | None: user = self.users.get((username, role_type)) return deepcopy(user) if user else None def get_me(self, token: str) -> dict | None: for user in self.users.values(): if user["token"] == token: data = deepcopy(user) return data return None def list_orders(self) -> list[dict]: return deepcopy(self.orders) def get_order(self, order_id: int) -> dict | None: for order in self.orders: if order["order_id"] == order_id: return deepcopy(order) return None def create_order(self, payload: dict) -> dict: next_id = max(order["order_id"] for order in self.orders) + 1 if self.orders else 9001 sale_total = sum(item["quantity"] * item["sale_price"] for item in payload["items"]) cost_total = sum(item["quantity"] * item["cost_price"] for item in payload["items"]) profit_total = sale_total - cost_total - payload["rebate_total"] - payload["freight_total"] - payload["tax_total"] - payload["other_fee_total"] profit_rate = round((profit_total / sale_total) * 100, 2) if sale_total else 0 order = { "order_id": next_id, "order_no": f"SO{next_id}", "customer_name": payload["customer_name"], "customer_mobile": payload["customer_mobile"], "salesman_name": "张三", "order_status": "draft", "sale_price_total": round(sale_total, 2), "cost_price_total": round(cost_total, 2), "profit_total": round(profit_total, 2), "profit_rate": profit_rate, "commission_amount": payload["commission_amount"], "created_at": "2026-05-14 12:00:00", "items": payload["items"], "approve_logs": [], "attachments": [], "remark": payload.get("remark"), } self.orders.append(order) return deepcopy(order) demo_store = DemoStore()