| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- import 'package:dio/dio.dart';
- import '../models/asset/recharge_order.dart';
- /// 链上充值订单 API(与 Web `stores/deposit.ts` 路径一致)
- class RechargeService {
- const RechargeService(this._dio);
- final Dio _dio;
- Future<List<RechargeParentCoin>> getRechargeParents() async {
- final response = await _dio.get<Map<String, dynamic>>(
- 'uc/coin-network/recharge-parents',
- );
- final data = response.data?['data'];
- if (data is List) {
- return data
- .whereType<Map<String, dynamic>>()
- .map(RechargeParentCoin.fromJson)
- .toList()
- ..sort((a, b) => a.sort.compareTo(b.sort));
- }
- return [];
- }
- Future<List<RechargeNetworkItem>> getRechargeNetworks({
- required String coinName,
- }) async {
- final response = await _dio.get<Map<String, dynamic>>(
- 'uc/coin-network/recharge-networks',
- queryParameters: {'coinName': coinName},
- );
- final data = response.data?['data'];
- if (data is! List) {
- return [];
- }
- return data
- .whereType<Map<String, dynamic>>()
- .map(RechargeNetworkItem.fromJson)
- .where((n) => n.id > 0)
- .toList()
- ..sort((a, b) => a.sort.compareTo(b.sort));
- }
- Future<List<RechargeConfigOption>> getRechargeConfigs({
- required String coinName,
- required int networkId,
- }) async {
- final response = await _dio.get<Map<String, dynamic>>(
- 'uc/coin-network/recharge-configs',
- queryParameters: {
- 'coinName': coinName,
- 'networkId': networkId,
- },
- );
- final data = response.data?['data'];
- if (data is! List) {
- return [];
- }
- return data
- .whereType<Map<String, dynamic>>()
- .map(RechargeConfigOption.fromJson)
- .where((c) => c.networkConfigId > 0)
- .toList()
- ..sort((a, b) => a.sort.compareTo(b.sort));
- }
- Future<RechargeOrderDetail> createRechargeOrder({
- required String coinName,
- required int networkConfigId,
- required String amount,
- }) async {
- final response = await _dio.post<Map<String, dynamic>>(
- 'uc/recharge/create',
- data: {
- 'coinName': coinName,
- 'networkConfigId': networkConfigId.toString(),
- 'amount': amount.trim(),
- },
- options: Options(contentType: Headers.formUrlEncodedContentType),
- );
- final data = response.data?['data'];
- if (data is Map<String, dynamic>) {
- return RechargeOrderDetail.fromJson(data);
- }
- throw StateError('create recharge: invalid response');
- }
- Future<RechargeOrderDetail> submitTxHash({
- required String orderNo,
- required String txHash,
- }) async {
- final response = await _dio.post<Map<String, dynamic>>(
- 'uc/recharge/submit-hash',
- data: {
- 'orderNo': orderNo,
- 'txHash': txHash.trim(),
- },
- options: Options(contentType: Headers.formUrlEncodedContentType),
- );
- final data = response.data?['data'];
- if (data is Map<String, dynamic>) {
- return RechargeOrderDetail.fromJson(data);
- }
- throw StateError('submit-hash: invalid response');
- }
- }
|