fromBaseEncryptV3 static method
数据加密v3
Implementation
static Future<DataResult> fromBaseEncryptV3(Map map, url,
{bool post = true, Map<String, dynamic>? queryParameters}) async {
String body =
queryParameters != null ? jsonEncode(queryParameters) : jsonEncode(map);
AppConfig.printLog(body);
var nonce = randomSize(6);
if (sessionId.isEmpty != false) {
sessionId = randomSize(8);
}
if (Address.baseToken.isEmpty != false) {
Address.baseToken = SpUtil.getString(AppConfig.appToken)!;
}
Map<String, dynamic> header = {
'x-request-id': nonce,
'x-sessionid': sessionId,
'Authorization': Address.baseToken
};
dynamic encodeBody;
if (post) {
encodeBody = await encryptToBase64(body, NetConfig.encryptDes);
var time = DateTime.now().millisecondsSinceEpoch + AppConfig.timeAsync;
var append = time.toString() + body + NetConfig.encryptYanZhi + nonce;
var convert = const Utf8Encoder().convert(append);
var sign = md5.convert(convert).toString().toUpperCase();
header['x-sign'] = sign;
header['x-time'] = time.toString();
}
var res = await httpManager.netFetch(url, post ? encodeBody : null, header,
Options(method: post ? 'post' : 'get'),
queryParameters: !post ? queryParameters : null);
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 == '1024' ||
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);
}