fromBaseEncrypt static method

Future<DataResult> fromBaseEncrypt(
  1. Map map,
  2. dynamic url, {
  3. bool token = true,
})

数据加密v2

Implementation

static Future<DataResult> fromBaseEncrypt(Map map, url,
    {bool token = true}) async {
  map.addAll(await requestParams());
  String body = jsonEncode(map);
  AppConfig.printLog(body);
  var encodeBody = await encryptToBase64(body, NetConfig.encryptDes);
  var time = DateTime.now().millisecondsSinceEpoch + AppConfig.timeAsync;
  var nonce = randomSize(6);
  var append = time.toString() + body + NetConfig.encryptYanZhi + nonce;
  var convert = const Utf8Encoder().convert(append);
  var sign = md5.convert(convert).toString().toUpperCase();
  Map<String, dynamic> header = {
    'x-sign': sign,
    'x-time': time.toString(),
    'x-request-id': nonce
  };
  if (Address.baseToken.isEmpty != false) {
    Address.baseToken = SpUtil.getString(AppConfig.appToken)!;
  }
  if (token) {
    header['Authorization'] = 'Bearer ${Address.baseToken}';
  }
  var res = await httpManager.netFetch(
      url, encodeBody, header, Options(method: 'post'));
  if (res.result) {
    if (res.data is Map) {
      var baseEntity = BaseEntity.fromJson(res.data);
      try {
        if (baseEntity.time?.isEmpty == false) {
          var t = int.parse(baseEntity.time!);
          if (t != 0) {
            AppConfig.timeAsync = DateTime.now().millisecondsSinceEpoch - t;
          }
        }
      } catch (err) {
        AppConfig.printLog(err);
      }
      if (baseEntity.code == '0') {
        return DataResult(baseEntity.data, true, time: baseEntity.time);
      } else {
        if (baseEntity.code == '999' ||
            baseEntity.code == '-1' ||
            baseEntity.code == '1005' ||
            baseEntity.code == '1007' ||
            baseEntity.code == '1010' ||
            baseEntity.code == '5003' ||
            baseEntity.code == '5017') {
          if (baseEntity.msg!.isEmpty == false) {
            CommonUtils.showToast(baseEntity.msg);
          }
          NavigatorUtils.goGuide2();
        }
        return DataResult(baseEntity, false);
      }
    } else {
      try {
        var decryptBody =
            await decryptFromBase64(res.data, NetConfig.decryptDes);
        AppConfig.printLog(decryptBody);
        var data = jsonDecode(decryptBody);
        var baseEntity = BaseEntity.fromJson(data);
        try {
          if (baseEntity.time?.isEmpty == false) {
            var t = int.parse(baseEntity.time!);
            if (t != 0) {
              AppConfig.timeAsync = DateTime.now().millisecondsSinceEpoch - t;
            }
          }
        } catch (err) {
          AppConfig.printLog(err);
        }
        var signKey = res.headers['x-sign'][0];
        if (await doCheck(signKey, decryptBody)) {
          if (baseEntity.code == '0') {
            return DataResult(baseEntity.data, true, time: baseEntity.time);
          } else {
            if (baseEntity.code == '999' ||
                baseEntity.code == '-1' ||
                baseEntity.code == '1005' ||
                baseEntity.code == '1007' ||
                baseEntity.code == '1010' ||
                baseEntity.code == '1024' ||
                baseEntity.code == '5003' ||
                baseEntity.code == '5017') {
              if (baseEntity.msg!.isEmpty == false) {
                CommonUtils.showToast(baseEntity.msg);
              }
              NavigatorUtils.goGuide2();
            }
            return DataResult(baseEntity, false);
          }
        } else {
          return DataResult(baseEntity, false, dataError: true);
        }
      } catch (e) {
        AppConfig.printLog(e);
        return DataResult(res, false, dataError: true);
      }
    }
  }
  return DataResult(res, false, dataError: true);
}