shangcheng/include/order.hpp

79 lines
1.9 KiB
C++
Raw Normal View History

2026-05-06 02:54:13 +00:00
#ifndef MALL_ORDER_HPP
#define MALL_ORDER_HPP
#include "shopping_cart.hpp"
#include <string>
#include <vector>
#include <ctime>
/**
* @brief
*/
enum class OrderStatus {
Pending, ///< 待支付
Paid, ///< 已支付
Shipped, ///< 已发货
Delivered, ///< 已送达
Cancelled ///< 已取消
};
/**
* @brief
* @param status
* @return
*/
std::string orderStatusToString(OrderStatus status);
/**
* @brief
*/
class Order {
public:
/**
* @brief
*/
Order() = default;
/**
* @brief
* @param orderId
* @param cart
*/
explicit Order(uint64_t orderId, ShoppingCart& cart);
/** @brief 获取订单编号 */
uint64_t getOrderId() const noexcept { return orderId_; }
/** @brief 获取订单状态 */
OrderStatus getStatus() const noexcept { return status_; }
/**
* @brief
* @param status
*/
void setStatus(OrderStatus status) noexcept { status_ = status; }
/** @brief 获取订单创建时间(时间戳) */
std::time_t getCreateTime() const noexcept { return createTime_; }
/** @brief 获取订单条目 */
const std::vector<CartItem>& getItems() const noexcept { return items_; }
/** @brief 计算订单总金额 */
double totalPrice() const;
/**
* @brief
* @return
*/
std::string toString() const;
private:
uint64_t orderId_ = 0; ///< 订单编号
OrderStatus status_ = OrderStatus::Pending; ///< 订单状态
std::time_t createTime_ = 0; ///< 创建时间
std::vector<CartItem> items_; ///< 商品条目
};
#endif // MALL_ORDER_HPP