class OrderStatus {
  // 私有构造函数，防止实例化
  const OrderStatus._();

  // 订单状态常量值
  static const int noPay = 1; // 已下单,待支付(both)
  static const int paid = 2; // 已支付(app),待确认(web)
  static const int toBeShipped = 3; // 已确认(web),待发货(app)
  static const int toBeReceived = 4; // 已发货(web),待签收(app)
  static const int received = 5; // 已签收(app),待完成(web)
  static const int closed = 6; // 已关闭(both)
  static const int completed = 7; // 已完成(web),已签收(app)

  // 订单状态编号与描述的映射
  static const Map<int, String> statuses = {
    1: '待支付', // 已下单,待支付(both)
    2: '已支付', // 已支付(app),待确认(web)
    3: '待发货', // 已确认(web),待发货(app)
    4: '待签收', // 已发货(web),待签收(app)
    5: '已签收', // 已签收(app),待完成(web)
    6: '已关闭', // 已关闭(both)
    7: '已签收', // 已完成(web),已签收(app)
  };

  // 根据编号获取状态名称的描述
  static String getDescriptionByCode(int code) {
    return statuses[code] ?? '未知状态';
  }

  // 根据状态名称获取编号
  static int getCodeByDescription(String description) {
    return statuses.entries
        .firstWhere((element) => element.value == description,
            orElse: () => MapEntry(0, '未知状态'))
        .key;
  }
}
