fromBaseEncrypt static method
数据加密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);
}