class ShopInfo { final int id; final String code; final String name; final String address; final String phone; final String managerName; final String logoUrl; final String wechatId; // 店级动态配置(后端 shops.custom_fields JSON),存录入默认值等轻量配置 final Map customFields; const ShopInfo({ required this.id, required this.code, required this.name, required this.address, required this.phone, required this.managerName, this.logoUrl = '', this.wechatId = '', this.customFields = const {}, }); /// 入库录入默认商品名称选项 id(未配置返回 null)。 int? get defaultNameId => _asInt(customFields['default_name_id']); /// 入库录入默认系列选项 id(未配置返回 null)。 int? get defaultSeriesId => _asInt(customFields['default_series_id']); /// 入库录入默认规格选项 id(未配置返回 null)。 int? get defaultSpecId => _asInt(customFields['default_spec_id']); static int? _asInt(dynamic v) { if (v == null) return null; if (v is num) return v.toInt(); return int.tryParse(v.toString()); } factory ShopInfo.fromJson(Map json) => ShopInfo( id: (json['id'] as num).toInt(), code: json['code'] as String? ?? '', name: json['name'] as String? ?? '', address: json['address'] as String? ?? '', phone: json['phone'] as String? ?? '', managerName: json['manager_name'] as String? ?? '', logoUrl: json['logo_url'] as String? ?? '', wechatId: json['wechat_id'] as String? ?? '', customFields: (json['custom_fields'] as Map?)?.cast() ?? const {}, ); }