import 'dart:convert'; import 'package:get/get.dart'; import 'package:kaer_with_panels/app/common/app_run_data.dart'; import 'package:kaer_with_panels/app/mixins/kr_app_bar_opacity_mixin.dart'; import 'package:kaer_with_panels/app/model/entity_from_json_util.dart'; import '../utils/kr_aes_util.dart'; /// 接口返回基础类 class BaseResponse { late int retCode; //状态码 late String retMsg; //返回的信息 late Map body; // 返回的数据 late T model; List list = []; // 初始化为空列表 bool isSuccess = true; // 是否返回正确数据 BaseResponse.fromJson(Map json) { retCode = json['code']; final aes = AESUtils(); final dataMap = json['data'] ?? Map(); final cipherText = dataMap['data'] ?? ""; final nonce = dataMap['time'] ?? ""; if (cipherText.isNotEmpty && nonce.isNotEmpty) { final encrypted = aes.decryptData(cipherText, "ne6t2qcz-szoa-rw78-egqz-lrsxxbl0dke3", nonce); body = jsonDecode(encrypted); } else { body = dataMap; } if (retCode == 40004 || retCode == 40005 || retCode == 40002 || retCode == 40003) { KRAppRunData().kr_loginOut(); } if (retCode != 200) { isSuccess = false; } retMsg = json['msg']; // 获取错误信息 final msg = "error.${retCode.toString()}".tr; if (msg.isNotEmpty && msg != "error.${retCode.toString()}") { retMsg = msg; } if (body.isNotEmpty) { if (body is List) { list = (json['data'] as List) .map((e) => EntityFromJsonUtil.parseJsonToEntity(e)) .toList(); } else { if (T == dynamic) { model = body as T; } else { model = EntityFromJsonUtil.parseJsonToEntity(body); } } } else { // 当body为空时,设置默认model值 } } // 获取泛型T的默认值 T _getDefaultValue() { if (T == String) return '' as T; if (T == int) return 0 as T; if (T == double) return 0.0 as T; if (T == bool) return false as T; if (T == Map) return {} as T; if (T == List) return [] as T; return null as T; } }