From 22ad489e0a2850a055aee5138ac9aac2d02ce431 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E5=8B=A4=E6=B0=91?= Date: Wed, 13 Nov 2024 19:26:44 +0800 Subject: [PATCH] =?UTF-8?q?feat(gx):=20=E6=B7=BB=E5=8A=A0=E8=AF=81?= =?UTF-8?q?=E4=B9=A6=E7=8A=B6=E6=80=81=E6=A3=80=E6=9F=A5=E5=92=8C=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E7=AE=A1=E7=90=86=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 AccountManager 中添加证书状态检查逻辑- 新增 GXCertStateAlertScreen 组件用于显示证书状态提醒- 在 CertManager 中添加 stateController 用于控制证书状态弹窗- 新增 CertServiceHelper 类用于处理证书服务购买逻辑 - 在 API 配置中添加获取订单列表、取消订单和获取发票 URL 的接口 - 新增 OrderListManageScreen 和 OrderInvoice 组件用于订单管理 - 更新路由配置,添加新的订单管理相关路由 --- src/main/ets/utils/Base64Helper.ets | 66 +++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/src/main/ets/utils/Base64Helper.ets b/src/main/ets/utils/Base64Helper.ets index e4f82ee..71da0a6 100644 --- a/src/main/ets/utils/Base64Helper.ets +++ b/src/main/ets/utils/Base64Helper.ets @@ -68,4 +68,70 @@ export class Base64Helper { let result = base64.decodeSync(array, options); return result; } + + + static baseEncode(str: string): string { + return Base64Helper.base64Encode(Base64Helper.utf16to8(str)) + } + + + static base64Encode(str: string) { + // 下面是64个基本的编码 + let base64EncodeChars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' + let out: string + let i: number + let len: number + let c1: number + let c2: number + let c3: number + len = str.length + i = 0 + out = '' + while (i < len) { + c1 = str.charCodeAt(i++) & 0xff + if (i === len) { + out += base64EncodeChars.charAt(c1 >> 2) + out += base64EncodeChars.charAt((c1 & 0x3) << 4) + out += '==' + break + } + c2 = str.charCodeAt(i++) + if (i === len) { + out += base64EncodeChars.charAt(c1 >> 2) + out += base64EncodeChars.charAt(((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4)) + out += base64EncodeChars.charAt((c2 & 0xF) << 2) + out += '=' + break + } + c3 = str.charCodeAt(i++) + out += base64EncodeChars.charAt(c1 >> 2) + out += base64EncodeChars.charAt(((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4)) + out += base64EncodeChars.charAt(((c2 & 0xF) << 2) | ((c3 & 0xC0) >> 6)) + out += base64EncodeChars.charAt(c3 & 0x3F) + } + return out + } + + static utf16to8(str: string) { + let out: string + let i: number + let len: number + let c: number + out = '' + len = str.length + for (i = 0; i < len; i++) { + c = str.charCodeAt(i) + if ((c >= 0x0001) && (c <= 0x007F)) { + out += str.charAt(i) + } else if (c > 0x07FF) { + out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F)) + out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F)) + out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F)) + } else { + out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F)) + out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F)) + } + } + return out + } } \ No newline at end of file