import 'package:get/get.dart'; import '../../../data/models/goods.dart'; String _uiLanguage() => Get.locale?.languageCode ?? 'zh'; String localizedGoodsName(DBGoods item) { final info = item.localeForLanguage(_uiLanguage()); final ln = (info['name'] as String?)?.trim() ?? ''; if (ln.isNotEmpty) return ln; final id = item.id.trim(); switch (id) { case 'ai_001': return 'ai_001_name'.tr; case 'ai_002': return 'ai_002_name'.tr; case 'ai_003': return 'ai_003_name'.tr; case 'meet_001': return 'meet_001_name'.tr; case 'meet_002': return 'meet_002_name'.tr; case 'meet_003': return 'meet_003_name'.tr; case 'trade_001': return 'trans_001_name'.tr; case 'trade_002': return 'trans_002_name'.tr; case 'trade_003': return 'trans_003_name'.tr; default: final name = item.name.trim(); return name.isNotEmpty ? name : 'unknown'.tr; } } String localizedGoodsDesc(DBGoods item) { final id = item.id.trim(); switch (id) { case 'ai_001': return 'ai_001_desc'.tr; case 'ai_002': return 'ai_002_desc'.tr; case 'ai_003': return 'ai_003_desc'.tr; case 'meet_001': return 'meet_001_desc'.tr; case 'meet_002': return 'meet_002_desc'.tr; case 'meet_003': return 'meet_003_desc'.tr; case 'trade_001': return 'trans_001_desc'.tr; case 'trade_002': return 'trans_002_desc'.tr; case 'trade_003': return 'trans_003_desc'.tr; default: return ''; } } String _trimAmount(double v) { final fixed = v.toStringAsFixed(2); return fixed.replaceFirst(RegExp(r'\.?0+$'), ''); } String goodsDisplayPrice(DBGoods item) { final lang = _uiLanguage(); final info = item.localeForLanguage(lang); final cur = (info['currency'] as String?)?.trim(); final p = info['price']; final symbol = (cur != null && cur.isNotEmpty) ? cur : (lang == 'zh' ? '¥' : r'$'); double v; if (p is num) { v = p.toDouble(); } else { v = item.priceYuan; } return '$symbol${_trimAmount(v)}'; } /// 这一档自己的服务说明:天数和算力都取商品本身,不跟账号当前状态混在一起。 /// 一年及以上按终生,显示无限。算力为 0 也照实写,避免三档看起来发了同一份。 List vipOfferFacts(DBGoods item) { final zh = _uiLanguage() == 'zh'; final lines = []; final days = item.viptime; if (days >= 365) { lines.add(zh ? '到期时间:无限' : 'Expires: unlimited'); } else if (days > 0) { lines.add(zh ? '到期时间:$days 天' : 'Expires: $days days'); } lines.add(zh ? '算力:${item.compute}' : 'Compute: ${item.compute}'); return lines; } /// 会员页三档标题。中文是人民币,其它语言用美元价。 String vipOfferTitle(String tier, String price) { final zh = _uiLanguage() == 'zh'; switch (tier) { case 'month': return zh ? '月度$price VIP充值' : 'Monthly $price VIP'; case 'quarter': return zh ? '季度$price VIP充值' : 'Quarterly $price VIP'; case 'lifetime': return zh ? '终生$price VIP充值' : 'Lifetime $price VIP'; default: return price; } }