From ddaa6a14d0f645b5644b6e0bcaa4c4c716c01a2f Mon Sep 17 00:00:00 2001 From: DaxPay Dev Date: Fri, 24 Jul 2026 14:32:45 +0800 Subject: [PATCH] =?UTF-8?q?refactor(risk):=20=E9=BB=91=E5=90=8D=E5=8D=95?= =?UTF-8?q?=E5=AE=BD=E6=8A=BD=E5=B1=89=E5=AF=B9=E9=BD=90=E4=B8=89=E6=80=81?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E4=B8=8E=E5=B9=B3=E5=8F=B0=E5=BE=AE=E4=BF=A1?= =?UTF-8?q?=E5=BA=94=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 表单直接提交 ip/alipay_user/wechat_openid,微信必选平台支付应用;列表与命中筛选文案同步。 Co-authored-by: Cursor --- .../src/api/payment/risk/blacklist.api.ts | 13 +- .../src/locales/langs/en-US/payment/risk.json | 24 +- .../src/locales/langs/id-ID/payment/risk.json | 28 ++- .../src/locales/langs/ja-JP/payment/risk.json | 30 ++- .../src/locales/langs/ko-KR/payment/risk.json | 30 ++- .../src/locales/langs/ms-MY/payment/risk.json | 24 +- .../src/locales/langs/th-TH/payment/risk.json | 26 ++- .../src/locales/langs/vi-VN/payment/risk.json | 24 +- .../src/locales/langs/zh-CN/payment/risk.json | 26 ++- .../src/locales/langs/zh-HK/payment/risk.json | 28 ++- .../src/locales/langs/zh-TW/payment/risk.json | 28 ++- .../risk/blacklist/PayBlacklistEdit.vue | 219 ++++++++++++++---- .../risk/blacklist/PayBlacklistList.vue | 67 ++++-- .../views/payment/risk/hit/PayRiskHitList.vue | 17 +- 14 files changed, 467 insertions(+), 117 deletions(-) diff --git a/apps/daxpay-admin/src/api/payment/risk/blacklist.api.ts b/apps/daxpay-admin/src/api/payment/risk/blacklist.api.ts index 8582e93ef..1a467c023 100644 --- a/apps/daxpay-admin/src/api/payment/risk/blacklist.api.ts +++ b/apps/daxpay-admin/src/api/payment/risk/blacklist.api.ts @@ -36,23 +36,23 @@ export const PayBlacklistApi = { /** 查询参数 */ export interface PayBlacklistQuery { - /** 类型 ip / open_id */ + /** 类型 ip / alipay_user / wechat_openid */ type?: string; /** 名单值 */ value?: string; /** 状态 enable / disable */ status?: string; - /** 通道族 */ - channel?: string; + /** 微信平台支付应用 AppId */ + wxAppId?: string; } /** 表单参数 */ export interface PayBlacklistParam { id?: string; + /** ip / alipay_user / wechat_openid */ type?: string; value?: string; - channel?: string; - channelAppId?: string; + wxAppId?: string; status?: string; reason?: string; expireTime?: string; @@ -63,8 +63,7 @@ export interface PayBlacklistParam { export interface PayBlacklistVo extends BaseEntity { type?: string; value?: string; - channel?: string; - channelAppId?: string; + wxAppId?: string; status?: string; reason?: string; expireTime?: string; diff --git a/apps/daxpay-admin/src/locales/langs/en-US/payment/risk.json b/apps/daxpay-admin/src/locales/langs/en-US/payment/risk.json index 7a283dc23..404217af7 100644 --- a/apps/daxpay-admin/src/locales/langs/en-US/payment/risk.json +++ b/apps/daxpay-admin/src/locales/langs/en-US/payment/risk.json @@ -9,16 +9,21 @@ "type": "Type", "value": "Value", "channel": "Channel", - "channelAppId": "Channel AppId", + "channelAppId": "Channel app ID", "status": "Status", "reason": "Reason", "expireTime": "Expire time", "remark": "Remark", - "createTime": "Created at" + "createTime": "Created at", + "payApp": "Payment app", + "scope": "Scope", + "wxAppId": "WeChat app ID" }, "type": { "ip": "IP", - "open_id": "OpenId" + "open_id": "OpenId", + "alipay_user": "Alipay user", + "wechat_openid": "WeChat OpenId" }, "status": { "enable": "Enabled", @@ -27,7 +32,18 @@ "tip": { "typeValueImmutable": "Type and value cannot be changed after creation", "expireEmpty": "Leave empty for permanent", - "openIdBoundaryHint": "Barcode/APP/external browser scenarios fall back to post-pay hit recording only." + "openIdBoundaryHint": "Payment code / APP / external browser scenarios are logged after payment only.", + "alipayGlobalHint": "Alipay userId applies platform-wide and is not split by app or product.", + "wechatAppHint": "Only blocks openIds obtained under the selected platform payment app; pick the mini program app for cashier." + }, + "scope": { + "global": "Global" + }, + "placeholder": { + "ip": "Enter IP address", + "alipayUserId": "Enter Alipay userId", + "wechatOpenId": "Enter WeChat openId", + "payApp": "Select a platform payment app" } }, "hit": { diff --git a/apps/daxpay-admin/src/locales/langs/id-ID/payment/risk.json b/apps/daxpay-admin/src/locales/langs/id-ID/payment/risk.json index ded321c0d..a652f1717 100644 --- a/apps/daxpay-admin/src/locales/langs/id-ID/payment/risk.json +++ b/apps/daxpay-admin/src/locales/langs/id-ID/payment/risk.json @@ -8,17 +8,22 @@ "field": { "type": "Jenis", "value": "Nilai", - "channel": "Saluran", - "channelAppId": "AppId saluran", + "channel": "Kanal", + "channelAppId": "AppId kanal", "status": "Status", "reason": "Alasan", "expireTime": "Waktu kedaluwarsa", "remark": "Catatan", - "createTime": "Dibuat pada" + "createTime": "Dibuat pada", + "payApp": "Aplikasi pembayaran", + "scope": "Cakupan", + "wxAppId": "AppId WeChat" }, "type": { "ip": "IP", - "open_id": "OpenId" + "open_id": "OpenId", + "alipay_user": "Pengguna Alipay", + "wechat_openid": "OpenId WeChat" }, "status": { "enable": "Aktif", @@ -26,8 +31,19 @@ }, "tip": { "typeValueImmutable": "Jenis dan nilai tidak dapat diubah setelah dibuat", - "expireEmpty": "Kosongkan untuk permanen", - "openIdBoundaryHint": "Barcode/APP/external browser scenarios fall back to post-pay hit recording only." + "expireEmpty": "Kosong berarti permanen", + "openIdBoundaryHint": "Kode bayar / APP / browser eksternal hanya dicatat setelah pembayaran.", + "alipayGlobalHint": "userId Alipay berlaku global di platform, tanpa membedakan aplikasi/produk.", + "wechatAppHint": "Hanya memblokir openId dari aplikasi pembayaran platform yang dipilih." + }, + "scope": { + "global": "Global" + }, + "placeholder": { + "ip": "Masukkan alamat IP", + "alipayUserId": "Masukkan userId Alipay", + "wechatOpenId": "Masukkan openId WeChat", + "payApp": "Pilih aplikasi pembayaran platform" } }, "hit": { diff --git a/apps/daxpay-admin/src/locales/langs/ja-JP/payment/risk.json b/apps/daxpay-admin/src/locales/langs/ja-JP/payment/risk.json index 63980573c..8edd372e3 100644 --- a/apps/daxpay-admin/src/locales/langs/ja-JP/payment/risk.json +++ b/apps/daxpay-admin/src/locales/langs/ja-JP/payment/risk.json @@ -8,26 +8,42 @@ "field": { "type": "Type", "value": "Value", - "channel": "Channel", - "channelAppId": "Channel AppId", + "channel": "チャネル", + "channelAppId": "チャネルアプリ ID", "status": "Status", "reason": "Reason", "expireTime": "Expire time", "remark": "Remark", - "createTime": "Created at" + "createTime": "Created at", + "payApp": "決済アプリ", + "scope": "適用範囲", + "wxAppId": "WeChat アプリ ID" }, "type": { "ip": "IP", - "open_id": "OpenId" + "open_id": "OpenId", + "alipay_user": "Alipay ユーザー", + "wechat_openid": "WeChat OpenId" }, "status": { "enable": "Enabled", "disable": "Disabled" }, "tip": { - "typeValueImmutable": "Type and value cannot be changed after creation", - "expireEmpty": "Leave empty for permanent", - "openIdBoundaryHint": "バーコード/APP/外部ブラウザのシーンは事後記録のみ。" + "typeValueImmutable": "種別と値は作成後に変更できません", + "expireEmpty": "空欄は無期限", + "openIdBoundaryHint": "付款码 / APP / 外部ブラウザは事後記録のみです。", + "alipayGlobalHint": "Alipay userId はプラットフォーム全体に有効で、アプリ / 商品では区別しません。", + "wechatAppHint": "選択したプラットフォーム決済アプリで取得した openId のみ遮断します。" + }, + "scope": { + "global": "グローバル" + }, + "placeholder": { + "ip": "IP アドレスを入力", + "alipayUserId": "Alipay userId を入力", + "wechatOpenId": "WeChat openId を入力", + "payApp": "プラットフォーム決済アプリを選択" } }, "hit": { diff --git a/apps/daxpay-admin/src/locales/langs/ko-KR/payment/risk.json b/apps/daxpay-admin/src/locales/langs/ko-KR/payment/risk.json index dea7d81af..1055dd1d3 100644 --- a/apps/daxpay-admin/src/locales/langs/ko-KR/payment/risk.json +++ b/apps/daxpay-admin/src/locales/langs/ko-KR/payment/risk.json @@ -8,26 +8,42 @@ "field": { "type": "Type", "value": "Value", - "channel": "Channel", - "channelAppId": "Channel AppId", + "channel": "채널", + "channelAppId": "채널 앱 ID", "status": "Status", "reason": "Reason", "expireTime": "Expire time", "remark": "Remark", - "createTime": "Created at" + "createTime": "Created at", + "payApp": "결제 앱", + "scope": "적용 범위", + "wxAppId": "위챗 앱 ID" }, "type": { "ip": "IP", - "open_id": "OpenId" + "open_id": "OpenId", + "alipay_user": "알리페이 사용자", + "wechat_openid": "위챗 OpenId" }, "status": { "enable": "Enabled", "disable": "Disabled" }, "tip": { - "typeValueImmutable": "Type and value cannot be changed after creation", - "expireEmpty": "Leave empty for permanent", - "openIdBoundaryHint": "바코드/APP/외부 브라우저 시나리오는 사후 기록만 합니다." + "typeValueImmutable": "유형과 값은 생성 후 변경할 수 없습니다", + "expireEmpty": "비워 두면 영구", + "openIdBoundaryHint": "결제 코드 / APP / 외부 브라우저는 사후 기록만 합니다.", + "alipayGlobalHint": "알리페이 userId는 플랫폼 전역에 적용되며 앱/상품으로 구분하지 않습니다.", + "wechatAppHint": "선택한 플랫폼 결제 앱에서 얻은 openId만 차단합니다." + }, + "scope": { + "global": "전역" + }, + "placeholder": { + "ip": "IP 주소를 입력하세요", + "alipayUserId": "알리페이 userId를 입력하세요", + "wechatOpenId": "위챗 openId를 입력하세요", + "payApp": "플랫폼 결제 앱을 선택하세요" } }, "hit": { diff --git a/apps/daxpay-admin/src/locales/langs/ms-MY/payment/risk.json b/apps/daxpay-admin/src/locales/langs/ms-MY/payment/risk.json index 24c0260e3..0d9708f66 100644 --- a/apps/daxpay-admin/src/locales/langs/ms-MY/payment/risk.json +++ b/apps/daxpay-admin/src/locales/langs/ms-MY/payment/risk.json @@ -14,11 +14,16 @@ "reason": "Sebab", "expireTime": "Tamat tempoh", "remark": "Catatan", - "createTime": "Dicipta pada" + "createTime": "Dicipta pada", + "payApp": "Aplikasi pembayaran", + "scope": "Skop", + "wxAppId": "AppId WeChat" }, "type": { "ip": "IP", - "open_id": "OpenId" + "open_id": "OpenId", + "alipay_user": "Pengguna Alipay", + "wechat_openid": "OpenId WeChat" }, "status": { "enable": "Aktif", @@ -26,8 +31,19 @@ }, "tip": { "typeValueImmutable": "Jenis dan nilai tidak boleh diubah selepas dicipta", - "expireEmpty": "Biarkan kosong untuk kekal", - "openIdBoundaryHint": "Barcode/APP/external browser scenarios fall back to post-pay hit recording only." + "expireEmpty": "Kosong bermaksud kekal", + "openIdBoundaryHint": "Kod bayaran / APP / pelayar luaran hanya direkod selepas bayaran.", + "alipayGlobalHint": "userId Alipay berkuat kuasa seluruh platform, tidak dipecah mengikut aplikasi/produk.", + "wechatAppHint": "Hanya menyekat openId daripada aplikasi pembayaran platform yang dipilih." + }, + "scope": { + "global": "Global" + }, + "placeholder": { + "ip": "Masukkan alamat IP", + "alipayUserId": "Masukkan userId Alipay", + "wechatOpenId": "Masukkan openId WeChat", + "payApp": "Pilih aplikasi pembayaran platform" } }, "hit": { diff --git a/apps/daxpay-admin/src/locales/langs/th-TH/payment/risk.json b/apps/daxpay-admin/src/locales/langs/th-TH/payment/risk.json index d13b0a6f9..47b60fe34 100644 --- a/apps/daxpay-admin/src/locales/langs/th-TH/payment/risk.json +++ b/apps/daxpay-admin/src/locales/langs/th-TH/payment/risk.json @@ -14,20 +14,36 @@ "reason": "เหตุผล", "expireTime": "หมดอายุ", "remark": "หมายเหตุ", - "createTime": "สร้างเมื่อ" + "createTime": "สร้างเมื่อ", + "payApp": "แอปชำระเงิน", + "scope": "ขอบเขต", + "wxAppId": "AppId WeChat" }, "type": { "ip": "IP", - "open_id": "OpenId" + "open_id": "OpenId", + "alipay_user": "ผู้ใช้ Alipay", + "wechat_openid": "OpenId WeChat" }, "status": { "enable": "เปิดใช้", "disable": "ปิดใช้" }, "tip": { - "typeValueImmutable": "ประเภทและค่าไม่สามารถแก้ไขหลังสร้าง", - "expireEmpty": "เว้นว่างหากถาวร", - "openIdBoundaryHint": "Barcode/APP/external browser scenarios fall back to post-pay hit recording only." + "typeValueImmutable": "ประเภทและค่าแก้ไขไม่ได้หลังสร้าง", + "expireEmpty": "ว่าง = ถาวร", + "openIdBoundaryHint": "รหัสชำระเงิน / APP / เบราว์เซอร์ภายนอกจะบันทึกหลังชำระเงินเท่านั้น", + "alipayGlobalHint": "userId Alipay มีผลทั้งแพลตฟอร์ม ไม่แยกตามแอป/ผลิตภัณฑ์", + "wechatAppHint": "บล็อกเฉพาะ openId จากแอปชำระเงินแพลตฟอร์มที่เลือก" + }, + "scope": { + "global": "ทั่วทั้งระบบ" + }, + "placeholder": { + "ip": "กรอกที่อยู่ IP", + "alipayUserId": "กรอก userId Alipay", + "wechatOpenId": "กรอก openId WeChat", + "payApp": "เลือกแอปชำระเงินของแพลตฟอร์ม" } }, "hit": { diff --git a/apps/daxpay-admin/src/locales/langs/vi-VN/payment/risk.json b/apps/daxpay-admin/src/locales/langs/vi-VN/payment/risk.json index 0c785d952..e423b75cd 100644 --- a/apps/daxpay-admin/src/locales/langs/vi-VN/payment/risk.json +++ b/apps/daxpay-admin/src/locales/langs/vi-VN/payment/risk.json @@ -14,11 +14,16 @@ "reason": "Lý do", "expireTime": "Hết hạn", "remark": "Ghi chú", - "createTime": "Thời gian tạo" + "createTime": "Thời gian tạo", + "payApp": "Ứng dụng thanh toán", + "scope": "Phạm vi", + "wxAppId": "AppId WeChat" }, "type": { "ip": "IP", - "open_id": "OpenId" + "open_id": "OpenId", + "alipay_user": "Người dùng Alipay", + "wechat_openid": "OpenId WeChat" }, "status": { "enable": "Bật", @@ -26,8 +31,19 @@ }, "tip": { "typeValueImmutable": "Loại và giá trị không thể sửa sau khi tạo", - "expireEmpty": "Để trống nếu vĩnh viễn", - "openIdBoundaryHint": "Barcode/APP/external browser scenarios fall back to post-pay hit recording only." + "expireEmpty": "Để trống là vĩnh viễn", + "openIdBoundaryHint": "Mã thanh toán / APP / trình duyệt ngoài chỉ ghi nhận sau thanh toán.", + "alipayGlobalHint": "userId Alipay áp dụng toàn nền tảng, không tách theo ứng dụng/sản phẩm.", + "wechatAppHint": "Chỉ chặn openId lấy từ ứng dụng thanh toán nền tảng đã chọn." + }, + "scope": { + "global": "Toàn cục" + }, + "placeholder": { + "ip": "Nhập địa chỉ IP", + "alipayUserId": "Nhập userId Alipay", + "wechatOpenId": "Nhập openId WeChat", + "payApp": "Chọn ứng dụng thanh toán nền tảng" } }, "hit": { diff --git a/apps/daxpay-admin/src/locales/langs/zh-CN/payment/risk.json b/apps/daxpay-admin/src/locales/langs/zh-CN/payment/risk.json index b3689accc..6c58fc9d4 100644 --- a/apps/daxpay-admin/src/locales/langs/zh-CN/payment/risk.json +++ b/apps/daxpay-admin/src/locales/langs/zh-CN/payment/risk.json @@ -8,26 +8,42 @@ "field": { "type": "类型", "value": "名单值", - "channel": "通道族", - "channelAppId": "通道应用AppId", + "channel": "通道", + "channelAppId": "通道应用 AppId", + "payApp": "支付应用", + "scope": "作用范围", "status": "状态", "reason": "拉黑原因", "expireTime": "过期时间", "remark": "备注", - "createTime": "创建时间" + "createTime": "创建时间", + "wxAppId": "微信应用 AppId" }, "type": { "ip": "IP", - "open_id": "OpenId" + "open_id": "OpenId", + "alipay_user": "支付宝用户", + "wechat_openid": "微信 OpenId" + }, + "scope": { + "global": "全局" }, "status": { "enable": "启用", "disable": "禁用" }, + "placeholder": { + "ip": "请输入 IP 地址", + "alipayUserId": "请输入支付宝 userId", + "wechatOpenId": "请输入微信 openId", + "payApp": "请选择平台支付应用" + }, "tip": { "typeValueImmutable": "类型与名单值创建后不可修改", "expireEmpty": "留空表示永久有效", - "openIdBoundaryHint": "付款码/APP/外部浏览器场景仅做事后补录。" + "openIdBoundaryHint": "付款码 / APP / 外部浏览器场景仅做事后补录。", + "alipayGlobalHint": "支付宝 userId 平台全局生效,不区分应用 / 支付产品。", + "wechatAppHint": "仅拦截在所选平台支付应用下取得的 openId;收银台小程序请选对应小程序应用。" } }, "hit": { diff --git a/apps/daxpay-admin/src/locales/langs/zh-HK/payment/risk.json b/apps/daxpay-admin/src/locales/langs/zh-HK/payment/risk.json index 3f58cffc9..d1a44c251 100644 --- a/apps/daxpay-admin/src/locales/langs/zh-HK/payment/risk.json +++ b/apps/daxpay-admin/src/locales/langs/zh-HK/payment/risk.json @@ -8,26 +8,42 @@ "field": { "type": "类型", "value": "名单值", - "channel": "通道族", - "channelAppId": "通道应用AppId", + "channel": "通道", + "channelAppId": "通道應用 AppId", "status": "状态", "reason": "拉黑原因", "expireTime": "过期时间", "remark": "备注", - "createTime": "创建时间" + "createTime": "创建时间", + "payApp": "支付應用", + "scope": "作用範圍", + "wxAppId": "微信應用 AppId" }, "type": { "ip": "IP", - "open_id": "OpenId" + "open_id": "OpenId", + "alipay_user": "支付寶用戶", + "wechat_openid": "微信 OpenId" }, "status": { "enable": "启用", "disable": "禁用" }, "tip": { - "typeValueImmutable": "类型与名单值创建后不可修改", + "typeValueImmutable": "類型與名單值建立後不可修改", "expireEmpty": "留空表示永久有效", - "openIdBoundaryHint": "付款碼/APP/外部瀏覽器場景僅做事後補錄。" + "openIdBoundaryHint": "付款碼 / APP / 外部瀏覽器場景僅做事後補錄。", + "alipayGlobalHint": "支付寶 userId 平台全域生效,不區分應用 / 支付產品。", + "wechatAppHint": "僅攔截在所選平台支付應用下取得的 openId;收銀台小程序請選對應小程序應用。" + }, + "scope": { + "global": "全域" + }, + "placeholder": { + "ip": "請輸入 IP 地址", + "alipayUserId": "請輸入支付寶 userId", + "wechatOpenId": "請輸入微信 openId", + "payApp": "請選擇平台支付應用" } }, "hit": { diff --git a/apps/daxpay-admin/src/locales/langs/zh-TW/payment/risk.json b/apps/daxpay-admin/src/locales/langs/zh-TW/payment/risk.json index 3f58cffc9..d1a44c251 100644 --- a/apps/daxpay-admin/src/locales/langs/zh-TW/payment/risk.json +++ b/apps/daxpay-admin/src/locales/langs/zh-TW/payment/risk.json @@ -8,26 +8,42 @@ "field": { "type": "类型", "value": "名单值", - "channel": "通道族", - "channelAppId": "通道应用AppId", + "channel": "通道", + "channelAppId": "通道應用 AppId", "status": "状态", "reason": "拉黑原因", "expireTime": "过期时间", "remark": "备注", - "createTime": "创建时间" + "createTime": "创建时间", + "payApp": "支付應用", + "scope": "作用範圍", + "wxAppId": "微信應用 AppId" }, "type": { "ip": "IP", - "open_id": "OpenId" + "open_id": "OpenId", + "alipay_user": "支付寶用戶", + "wechat_openid": "微信 OpenId" }, "status": { "enable": "启用", "disable": "禁用" }, "tip": { - "typeValueImmutable": "类型与名单值创建后不可修改", + "typeValueImmutable": "類型與名單值建立後不可修改", "expireEmpty": "留空表示永久有效", - "openIdBoundaryHint": "付款碼/APP/外部瀏覽器場景僅做事後補錄。" + "openIdBoundaryHint": "付款碼 / APP / 外部瀏覽器場景僅做事後補錄。", + "alipayGlobalHint": "支付寶 userId 平台全域生效,不區分應用 / 支付產品。", + "wechatAppHint": "僅攔截在所選平台支付應用下取得的 openId;收銀台小程序請選對應小程序應用。" + }, + "scope": { + "global": "全域" + }, + "placeholder": { + "ip": "請輸入 IP 地址", + "alipayUserId": "請輸入支付寶 userId", + "wechatOpenId": "請輸入微信 openId", + "payApp": "請選擇平台支付應用" } }, "hit": { diff --git a/apps/daxpay-admin/src/views/payment/risk/blacklist/PayBlacklistEdit.vue b/apps/daxpay-admin/src/views/payment/risk/blacklist/PayBlacklistEdit.vue index dfab4963e..285dcce8f 100644 --- a/apps/daxpay-admin/src/views/payment/risk/blacklist/PayBlacklistEdit.vue +++ b/apps/daxpay-admin/src/views/payment/risk/blacklist/PayBlacklistEdit.vue @@ -1,5 +1,5 @@ - + diff --git a/apps/daxpay-admin/src/views/payment/risk/blacklist/PayBlacklistList.vue b/apps/daxpay-admin/src/views/payment/risk/blacklist/PayBlacklistList.vue index e86075d4f..9a8d547cb 100644 --- a/apps/daxpay-admin/src/views/payment/risk/blacklist/PayBlacklistList.vue +++ b/apps/daxpay-admin/src/views/payment/risk/blacklist/PayBlacklistList.vue @@ -12,6 +12,10 @@ type PayBlacklistQuery, type PayBlacklistVo, } from '#/api/payment/risk/blacklist.api'; + import { + type WxPlatformApp, + WxPlatformAppApi, + } from '#/api/payment/wx/platform-app.api'; import { BQuery, type QueryField } from '#/components/query'; import { PermCodes } from '#/constants/perm-codes'; import { useMessage } from '#/hooks/useMessage'; @@ -31,6 +35,8 @@ const pageConfig = ref({ currentPage: 1, pageSize: 10, total: 0 }); const tableData = ref([]); const editRef = ref(); + // 平台应用名缓存(列表作用范围展示) + const platformAppNameMap = ref>({}); const queryFields = computed(() => [ { @@ -41,7 +47,8 @@ placeholder: $t('common.pleaseSelect'), selectList: [ { label: $t('payment.risk.blacklist.type.ip'), value: 'ip' }, - { label: $t('payment.risk.blacklist.type.open_id'), value: 'open_id' }, + { label: $t('payment.risk.blacklist.type.alipay_user'), value: 'alipay_user' }, + { label: $t('payment.risk.blacklist.type.wechat_openid'), value: 'wechat_openid' }, ], }, { @@ -62,15 +69,24 @@ { label: $t('payment.risk.blacklist.status.disable'), value: 'disable' }, ], }, - { - type: 'string', - field: 'channel', - // 通道族 - name: $t('payment.risk.blacklist.field.channel'), - placeholder: $t('common.pleaseInput'), - }, ]); + /** 加载平台应用名称映射 */ + async function loadPlatformAppNames() { + try { + const { data } = await WxPlatformAppApi.listAll(); + const map: Record = {}; + (data || []).forEach((app: WxPlatformApp) => { + if (app.wxAppId) { + map[app.wxAppId] = app.appName || app.wxAppId; + } + }); + platformAppNameMap.value = map; + } catch { + platformAppNameMap.value = {}; + } + } + /** 分页查询 */ function queryPage() { loading.value = true; @@ -128,24 +144,45 @@ }); } + /** 类型列 */ function typeLabel(type?: string) { - if (type === 'open_id') return $t('payment.risk.blacklist.type.open_id'); - if (type === 'ip') return $t('payment.risk.blacklist.type.ip'); + if (type === 'ip') { + return $t('payment.risk.blacklist.type.ip'); + } + if (type === 'alipay_user') { + return $t('payment.risk.blacklist.type.alipay_user'); + } + if (type === 'wechat_openid') { + return $t('payment.risk.blacklist.type.wechat_openid'); + } return type || ''; } + /** 作用范围:全局 / 应用名或 AppId */ + function scopeLabel(row: PayBlacklistVo) { + if (row.type === 'ip' || row.type === 'alipay_user') { + return $t('payment.risk.blacklist.scope.global'); + } + if (row.type === 'wechat_openid' && row.wxAppId) { + const name = platformAppNameMap.value[row.wxAppId]; + return name ? `${name}(${row.wxAppId})` : row.wxAppId; + } + return '-'; + } + function statusColor(status?: string) { return status === 'enable' ? 'success' : 'default'; } onMounted(() => { xTable.value?.connectToolbar(xToolbar.value as VxeToolbarInstance); + void loadPlatformAppNames(); queryPage(); });